BaseTools/ECC: Fix some issues of ECC tool

Add support for the usage which is defined in the above line for a Protocol/Ppi/Guid
Add support for “!ERROR”
Ignore issue of parsing a macro

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hess Chen <hesheng.chen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>


git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16487 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Hess Chen 2014-12-09 06:41:58 +00:00 committed by hchen30
parent 3720ee6d32
commit 8d62ae35ca
4 changed files with 21 additions and 9 deletions

View File

@ -442,6 +442,7 @@ TAB_ELSE = '!else'
TAB_IF_DEF = '!ifdef' TAB_IF_DEF = '!ifdef'
TAB_IF_N_DEF = '!ifndef' TAB_IF_N_DEF = '!ifndef'
TAB_IF_EXIST = '!if exist' TAB_IF_EXIST = '!if exist'
TAB_ERROR = '!ERROR'
# #
# Unknown section # Unknown section

View File

@ -86,6 +86,7 @@ MODEL_META_DATA_CONDITIONAL_STATEMENT_IF = 5004
MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE = 5005 MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE = 5005
MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF = 5006 MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF = 5006
MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF = 5007 MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF = 5007
MODEL_META_DATA_CONDITIONAL_STATEMENT_ERROR = 5400
MODEL_META_DATA_BUILD_OPTION = 5008 MODEL_META_DATA_BUILD_OPTION = 5008
MODEL_META_DATA_COMPONENT = 5009 MODEL_META_DATA_COMPONENT = 5009
MODEL_META_DATA_USER_EXTENSION = 5010 MODEL_META_DATA_USER_EXTENSION = 5010
@ -164,6 +165,7 @@ MODEL_LIST = [('MODEL_UNKNOWN', MODEL_UNKNOWN),
("MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE", MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE), ("MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE", MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE),
("MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF", MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF), ("MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF", MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF),
("MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF", MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF), ("MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF", MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF),
("MODEL_META_DATA_CONDITIONAL_STATEMENT_ERROR", MODEL_META_DATA_CONDITIONAL_STATEMENT_ERROR),
("MODEL_META_DATA_COMPONENT_SOURCE_OVERRIDE_PATH", MODEL_META_DATA_COMPONENT_SOURCE_OVERRIDE_PATH), ("MODEL_META_DATA_COMPONENT_SOURCE_OVERRIDE_PATH", MODEL_META_DATA_COMPONENT_SOURCE_OVERRIDE_PATH),
("MODEL_META_DATA_BUILD_OPTION", MODEL_META_DATA_BUILD_OPTION), ("MODEL_META_DATA_BUILD_OPTION", MODEL_META_DATA_BUILD_OPTION),
("MODEL_META_DATA_COMPONENT", MODEL_META_DATA_COMPONENT), ("MODEL_META_DATA_COMPONENT", MODEL_META_DATA_COMPONENT),

View File

@ -63,7 +63,7 @@ class Check(object):
def GeneralCheckNonAcsii(self): def GeneralCheckNonAcsii(self):
if EccGlobalData.gConfig.GeneralCheckNonAcsii == '1' or EccGlobalData.gConfig.GeneralCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': if EccGlobalData.gConfig.GeneralCheckNonAcsii == '1' or EccGlobalData.gConfig.GeneralCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1':
EdkLogger.quiet("Checking Non-ACSII char in file ...") EdkLogger.quiet("Checking Non-ACSII char in file ...")
SqlCommand = """select ID, FullPath, ExtName from File""" SqlCommand = """select ID, FullPath, ExtName from File where ExtName in ('.dec', '.inf', '.dsc', 'c', 'h')"""
RecordSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand) RecordSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand)
for Record in RecordSet: for Record in RecordSet:
if Record[2].upper() not in EccGlobalData.gConfig.BinaryExtList: if Record[2].upper() not in EccGlobalData.gConfig.BinaryExtList:

View File

@ -461,13 +461,14 @@ class InfParser(MetaFileParser):
MODEL_PCD_DYNAMIC_EX, MODEL_PCD_DYNAMIC_EX,
MODEL_PCD_DYNAMIC]: MODEL_PCD_DYNAMIC]:
Line = Content[Index].strip() Line = Content[Index].strip()
if Line.startswith(TAB_COMMENT_SPLIT): if Line.startswith(TAB_SPECIAL_COMMENT):
Usage += ' ' + Line[Line.find(TAB_SPECIAL_COMMENT):]
continue
elif Line.startswith(TAB_COMMENT_SPLIT):
continue continue
elif Line.find(TAB_COMMENT_SPLIT) > 0: elif Line.find(TAB_COMMENT_SPLIT) > 0:
Usage = Line[Line.find(TAB_COMMENT_SPLIT):] Usage += ' ' + Line[Line.find(TAB_COMMENT_SPLIT):]
Line = Line[:Line.find(TAB_COMMENT_SPLIT)] Line = Line[:Line.find(TAB_COMMENT_SPLIT)]
else:
Usage = ''
else: else:
# skip empty, commented, block commented lines # skip empty, commented, block commented lines
Line = CleanString(Content[Index], AllowCppStyleComment=True) Line = CleanString(Content[Index], AllowCppStyleComment=True)
@ -545,6 +546,7 @@ class InfParser(MetaFileParser):
# LineBegin=-1, ColumnBegin=-1, LineEnd=-1, ColumnEnd=-1, Enabled=-1 # LineBegin=-1, ColumnBegin=-1, LineEnd=-1, ColumnEnd=-1, Enabled=-1
# #
self._ValueList[0] = self._ValueList[0].replace('/', '\\') self._ValueList[0] = self._ValueList[0].replace('/', '\\')
Usage = Usage.strip()
for Arch, Platform in self._Scope: for Arch, Platform in self._Scope:
self._Store(self._SectionType, self._Store(self._SectionType,
self._ValueList[0], self._ValueList[0],
@ -561,6 +563,7 @@ class InfParser(MetaFileParser):
0, 0,
Usage Usage
) )
Usage = ''
if IsFindBlockComment: if IsFindBlockComment:
EdkLogger.error("Parser", FORMAT_INVALID, "Open block comments (starting with /*) are expected to end with */", EdkLogger.error("Parser", FORMAT_INVALID, "Open block comments (starting with /*) are expected to end with */",
File=self.MetaFile) File=self.MetaFile)
@ -731,6 +734,7 @@ class DscParser(MetaFileParser):
TAB_ELSE_IF.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSEIF, TAB_ELSE_IF.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSEIF,
TAB_ELSE.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE, TAB_ELSE.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE,
TAB_END_IF.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_ENDIF, TAB_END_IF.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_ENDIF,
TAB_ERROR.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_ERROR,
} }
# Valid names in define section # Valid names in define section
@ -1117,6 +1121,7 @@ class DscParser(MetaFileParser):
MODEL_META_DATA_BUILD_OPTION : self.__ProcessBuildOption, MODEL_META_DATA_BUILD_OPTION : self.__ProcessBuildOption,
MODEL_UNKNOWN : self._Skip, MODEL_UNKNOWN : self._Skip,
MODEL_META_DATA_USER_EXTENSION : self._Skip, MODEL_META_DATA_USER_EXTENSION : self._Skip,
MODEL_META_DATA_CONDITIONAL_STATEMENT_ERROR : self._Skip,
} }
self._RawTable = self._Table self._RawTable = self._Table
@ -1152,9 +1157,10 @@ class DscParser(MetaFileParser):
# Only catch expression evaluation error here. We need to report # Only catch expression evaluation error here. We need to report
# the precise number of line on which the error occurred # the precise number of line on which the error occurred
# #
EdkLogger.error('Parser', FORMAT_INVALID, "Invalid expression: %s" % str(Excpt), pass
File=self._FileWithError, ExtraData=' '.join(self._ValueList), # EdkLogger.error('Parser', FORMAT_INVALID, "Invalid expression: %s" % str(Excpt),
Line=self._LineIndex+1) # File=self._FileWithError, ExtraData=' '.join(self._ValueList),
# Line=self._LineIndex+1)
except MacroException, Excpt: except MacroException, Excpt:
EdkLogger.error('Parser', FORMAT_INVALID, str(Excpt), EdkLogger.error('Parser', FORMAT_INVALID, str(Excpt),
File=self._FileWithError, ExtraData=' '.join(self._ValueList), File=self._FileWithError, ExtraData=' '.join(self._ValueList),
@ -1809,7 +1815,10 @@ class Fdf(FdfObject):
# Load Fdf file if filename is not None # Load Fdf file if filename is not None
# #
if Filename != None: if Filename != None:
self.LoadFdfFile(Filename) try:
self.LoadFdfFile(Filename)
except Exception:
pass
# #
# Insert a FDF file record into database # Insert a FDF file record into database