BaseTools/ECC: Add a checkpoint to check no usage for deprecated functions.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hess Chen <hesheng.chen@intel.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
This commit is contained in:
@ -270,6 +270,66 @@ class Check(object):
|
|||||||
self.FunctionLayoutCheckPrototype()
|
self.FunctionLayoutCheckPrototype()
|
||||||
self.FunctionLayoutCheckBody()
|
self.FunctionLayoutCheckBody()
|
||||||
self.FunctionLayoutCheckLocalVariable()
|
self.FunctionLayoutCheckLocalVariable()
|
||||||
|
self.FunctionLayoutCheckDeprecated()
|
||||||
|
|
||||||
|
# To check if the deprecated functions are used
|
||||||
|
def FunctionLayoutCheckDeprecated(self):
|
||||||
|
if EccGlobalData.gConfig.CFunctionLayoutCheckNoDeprecated == '1' or EccGlobalData.gConfig.CFunctionLayoutCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1':
|
||||||
|
EdkLogger.quiet("Checking function no deprecated one being used ...")
|
||||||
|
|
||||||
|
DeprecatedFunctionSet = ('UnicodeValueToString',
|
||||||
|
'AsciiValueToString',
|
||||||
|
'StrCpy',
|
||||||
|
'StrnCpy',
|
||||||
|
'StrCat',
|
||||||
|
'StrnCat',
|
||||||
|
'UnicodeStrToAsciiStr',
|
||||||
|
'AsciiStrCpy',
|
||||||
|
'AsciiStrnCpy',
|
||||||
|
'AsciiStrCat',
|
||||||
|
'AsciiStrnCat',
|
||||||
|
'AsciiStrToUnicodeStr',
|
||||||
|
'PcdSet8',
|
||||||
|
'PcdSet16',
|
||||||
|
'PcdSet32',
|
||||||
|
'PcdSet64',
|
||||||
|
'PcdSetPtr',
|
||||||
|
'PcdSetBool',
|
||||||
|
'PcdSetEx8',
|
||||||
|
'PcdSetEx16',
|
||||||
|
'PcdSetEx32',
|
||||||
|
'PcdSetEx64',
|
||||||
|
'PcdSetExPtr',
|
||||||
|
'PcdSetExBool',
|
||||||
|
'LibPcdSet8',
|
||||||
|
'LibPcdSet16',
|
||||||
|
'LibPcdSet32',
|
||||||
|
'LibPcdSet64',
|
||||||
|
'LibPcdSetPtr',
|
||||||
|
'LibPcdSetBool',
|
||||||
|
'LibPcdSetEx8',
|
||||||
|
'LibPcdSetEx16',
|
||||||
|
'LibPcdSetEx32',
|
||||||
|
'LibPcdSetEx64',
|
||||||
|
'LibPcdSetExPtr',
|
||||||
|
'LibPcdSetExBool',
|
||||||
|
'GetVariable',
|
||||||
|
'GetEfiGlobalVariable',
|
||||||
|
)
|
||||||
|
|
||||||
|
for IdentifierTable in EccGlobalData.gIdentifierTableList:
|
||||||
|
SqlCommand = """select ID, Name, BelongsToFile from %s
|
||||||
|
where Model = %s """ % (IdentifierTable, MODEL_IDENTIFIER_FUNCTION_CALLING)
|
||||||
|
RecordSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand)
|
||||||
|
for Record in RecordSet:
|
||||||
|
for Key in DeprecatedFunctionSet:
|
||||||
|
if Key == Record[1]:
|
||||||
|
if not EccGlobalData.gException.IsException(ERROR_C_FUNCTION_LAYOUT_CHECK_NO_DEPRECATE, Key):
|
||||||
|
OtherMsg = 'The function [%s] is deprecated which should NOT be used' % Key
|
||||||
|
EccGlobalData.gDb.TblReport.Insert(ERROR_C_FUNCTION_LAYOUT_CHECK_NO_DEPRECATE,
|
||||||
|
OtherMsg=OtherMsg,
|
||||||
|
BelongsToTable=IdentifierTable,
|
||||||
|
BelongsToItem=Record[0])
|
||||||
|
|
||||||
def WalkTree(self):
|
def WalkTree(self):
|
||||||
IgnoredPattern = c.GetIgnoredDirListPattern()
|
IgnoredPattern = c.GetIgnoredDirListPattern()
|
||||||
|
@ -34,6 +34,7 @@ _ConfigFileToInternalTranslation = {
|
|||||||
"CFunctionLayoutCheckFunctionBody":"CFunctionLayoutCheckFunctionBody",
|
"CFunctionLayoutCheckFunctionBody":"CFunctionLayoutCheckFunctionBody",
|
||||||
"CFunctionLayoutCheckFunctionName":"CFunctionLayoutCheckFunctionName",
|
"CFunctionLayoutCheckFunctionName":"CFunctionLayoutCheckFunctionName",
|
||||||
"CFunctionLayoutCheckFunctionPrototype":"CFunctionLayoutCheckFunctionPrototype",
|
"CFunctionLayoutCheckFunctionPrototype":"CFunctionLayoutCheckFunctionPrototype",
|
||||||
|
"CFunctionLayoutCheckNoDeprecated":"CFunctionLayoutCheckNoDeprecated",
|
||||||
"CFunctionLayoutCheckNoInitOfVariable":"CFunctionLayoutCheckNoInitOfVariable",
|
"CFunctionLayoutCheckNoInitOfVariable":"CFunctionLayoutCheckNoInitOfVariable",
|
||||||
"CFunctionLayoutCheckNoStatic":"CFunctionLayoutCheckNoStatic",
|
"CFunctionLayoutCheckNoStatic":"CFunctionLayoutCheckNoStatic",
|
||||||
"CFunctionLayoutCheckOptionalFunctionalModifier":"CFunctionLayoutCheckOptionalFunctionalModifier",
|
"CFunctionLayoutCheckOptionalFunctionalModifier":"CFunctionLayoutCheckOptionalFunctionalModifier",
|
||||||
@ -242,6 +243,8 @@ class Configuration(object):
|
|||||||
self.CFunctionLayoutCheckNoInitOfVariable = 1
|
self.CFunctionLayoutCheckNoInitOfVariable = 1
|
||||||
# Check whether no use of STATIC for functions
|
# Check whether no use of STATIC for functions
|
||||||
self.CFunctionLayoutCheckNoStatic = 1
|
self.CFunctionLayoutCheckNoStatic = 1
|
||||||
|
# Check whether no use of Deprecated functions
|
||||||
|
self.CFunctionLayoutCheckNoDeprecated = 1
|
||||||
|
|
||||||
## Include Files Checking
|
## Include Files Checking
|
||||||
self.IncludeFileCheckAll = 0
|
self.IncludeFileCheckAll = 0
|
||||||
|
@ -47,6 +47,7 @@ ERROR_C_FUNCTION_LAYOUT_CHECK_NO_INIT_OF_VARIABLE = 5007
|
|||||||
ERROR_C_FUNCTION_LAYOUT_CHECK_NO_STATIC = 5008
|
ERROR_C_FUNCTION_LAYOUT_CHECK_NO_STATIC = 5008
|
||||||
ERROR_C_FUNCTION_LAYOUT_CHECK_FUNCTION_PROTO_TYPE_2 = 5009
|
ERROR_C_FUNCTION_LAYOUT_CHECK_FUNCTION_PROTO_TYPE_2 = 5009
|
||||||
ERROR_C_FUNCTION_LAYOUT_CHECK_FUNCTION_PROTO_TYPE_3 = 5010
|
ERROR_C_FUNCTION_LAYOUT_CHECK_FUNCTION_PROTO_TYPE_3 = 5010
|
||||||
|
ERROR_C_FUNCTION_LAYOUT_CHECK_NO_DEPRECATE = 5011
|
||||||
|
|
||||||
ERROR_INCLUDE_FILE_CHECK_ALL = 6000
|
ERROR_INCLUDE_FILE_CHECK_ALL = 6000
|
||||||
ERROR_INCLUDE_FILE_CHECK_IFNDEF_STATEMENT_1 = 6001
|
ERROR_INCLUDE_FILE_CHECK_IFNDEF_STATEMENT_1 = 6001
|
||||||
@ -146,6 +147,7 @@ gEccErrorMessage = {
|
|||||||
ERROR_C_FUNCTION_LAYOUT_CHECK_DATA_DECLARATION : "The data declarations should be the first code in a module",
|
ERROR_C_FUNCTION_LAYOUT_CHECK_DATA_DECLARATION : "The data declarations should be the first code in a module",
|
||||||
ERROR_C_FUNCTION_LAYOUT_CHECK_NO_INIT_OF_VARIABLE : "There should be no initialization of a variable as part of its declaration",
|
ERROR_C_FUNCTION_LAYOUT_CHECK_NO_INIT_OF_VARIABLE : "There should be no initialization of a variable as part of its declaration",
|
||||||
ERROR_C_FUNCTION_LAYOUT_CHECK_NO_STATIC : "There should be no use of STATIC for functions",
|
ERROR_C_FUNCTION_LAYOUT_CHECK_NO_STATIC : "There should be no use of STATIC for functions",
|
||||||
|
ERROR_C_FUNCTION_LAYOUT_CHECK_NO_DEPRECATE : "The deprecated function should NOT be used",
|
||||||
|
|
||||||
ERROR_INCLUDE_FILE_CHECK_ALL : "",
|
ERROR_INCLUDE_FILE_CHECK_ALL : "",
|
||||||
ERROR_INCLUDE_FILE_CHECK_IFNDEF_STATEMENT_1 : "All include file contents should be guarded by a #ifndef statement.",
|
ERROR_INCLUDE_FILE_CHECK_IFNDEF_STATEMENT_1 : "All include file contents should be guarded by a #ifndef statement.",
|
||||||
|
@ -134,6 +134,8 @@ CFunctionLayoutCheckDataDeclaration = 1
|
|||||||
CFunctionLayoutCheckNoInitOfVariable = 1
|
CFunctionLayoutCheckNoInitOfVariable = 1
|
||||||
# Check whether no use of STATIC for functions
|
# Check whether no use of STATIC for functions
|
||||||
CFunctionLayoutCheckNoStatic = 1
|
CFunctionLayoutCheckNoStatic = 1
|
||||||
|
# Check whether no use of Deprecated functions
|
||||||
|
CFunctionLayoutCheckNoDeprecated = 1
|
||||||
|
|
||||||
#
|
#
|
||||||
# Include Files Checking
|
# Include Files Checking
|
||||||
|
Reference in New Issue
Block a user