mirror of https://github.com/acidanthera/audk.git
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:
parent
041d89bc0f
commit
33a211d009
|
@ -270,6 +270,66 @@ class Check(object):
|
|||
self.FunctionLayoutCheckPrototype()
|
||||
self.FunctionLayoutCheckBody()
|
||||
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):
|
||||
IgnoredPattern = c.GetIgnoredDirListPattern()
|
||||
|
|
|
@ -34,6 +34,7 @@ _ConfigFileToInternalTranslation = {
|
|||
"CFunctionLayoutCheckFunctionBody":"CFunctionLayoutCheckFunctionBody",
|
||||
"CFunctionLayoutCheckFunctionName":"CFunctionLayoutCheckFunctionName",
|
||||
"CFunctionLayoutCheckFunctionPrototype":"CFunctionLayoutCheckFunctionPrototype",
|
||||
"CFunctionLayoutCheckNoDeprecated":"CFunctionLayoutCheckNoDeprecated",
|
||||
"CFunctionLayoutCheckNoInitOfVariable":"CFunctionLayoutCheckNoInitOfVariable",
|
||||
"CFunctionLayoutCheckNoStatic":"CFunctionLayoutCheckNoStatic",
|
||||
"CFunctionLayoutCheckOptionalFunctionalModifier":"CFunctionLayoutCheckOptionalFunctionalModifier",
|
||||
|
@ -242,6 +243,8 @@ class Configuration(object):
|
|||
self.CFunctionLayoutCheckNoInitOfVariable = 1
|
||||
# Check whether no use of STATIC for functions
|
||||
self.CFunctionLayoutCheckNoStatic = 1
|
||||
# Check whether no use of Deprecated functions
|
||||
self.CFunctionLayoutCheckNoDeprecated = 1
|
||||
|
||||
## Include Files Checking
|
||||
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_FUNCTION_PROTO_TYPE_2 = 5009
|
||||
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_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_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_DEPRECATE : "The deprecated function should NOT be used",
|
||||
|
||||
ERROR_INCLUDE_FILE_CHECK_ALL : "",
|
||||
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
|
||||
# Check whether no use of STATIC for functions
|
||||
CFunctionLayoutCheckNoStatic = 1
|
||||
# Check whether no use of Deprecated functions
|
||||
CFunctionLayoutCheckNoDeprecated = 1
|
||||
|
||||
#
|
||||
# Include Files Checking
|
||||
|
|
Loading…
Reference in New Issue