BaseTools:ECC report errors on account of analyze special characters

BZ:https://bugzilla.tianocore.org/show_bug.cgi?id=1751

In case that a C function body contains the string of L'', L'\"',
L"\"", L''', L""", L"\"\"", L"\"^", L" \"", L"\" \"", ('L",\\\""')
ECC tool running under python3 interpreter will report error.
The antlr4 module misidentified this character

This patch is going to fix that issue.

Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Signed-off-by: Zhiju.Fan <zhijux.fan@intel.com>
Reviewed-by: Bob Feng <bob.c.feng@intel.com>
This commit is contained in:
Fan, ZhijuX
2019-05-06 10:35:07 +08:00
committed by Feng, Bob C
parent 8b4b2fb9a1
commit 0cb3f77153
4 changed files with 14 additions and 1 deletions

View File

@ -495,6 +495,8 @@ def CollectSourceCodeDataIntoDB(RootDir):
tuple = os.walk(RootDir)
IgnoredPattern = GetIgnoredDirListPattern()
ParseErrorFileList = []
TokenReleaceList = EccGlobalData.gConfig.TokenReleaceList
TokenReleaceList.extend(['L",\\\""'])
for dirpath, dirnames, filenames in tuple:
if IgnoredPattern.match(dirpath.upper()):
@ -519,6 +521,7 @@ def CollectSourceCodeDataIntoDB(RootDir):
EdkLogger.info("Parsing " + FullName)
model = f.endswith('c') and DataClass.MODEL_FILE_C or DataClass.MODEL_FILE_H
collector = CodeFragmentCollector.CodeFragmentCollector(FullName)
collector.TokenReleaceList = TokenReleaceList
try:
collector.ParseFile()
except UnicodeError: