From 0cb3f77153b7fde612ed49dddd986cf8421be7ba Mon Sep 17 00:00:00 2001 From: "Fan, ZhijuX" Date: Mon, 6 May 2019 10:35:07 +0800 Subject: 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 Cc: Liming Gao Signed-off-by: Zhiju.Fan Reviewed-by: Bob Feng --- BaseTools/Source/Python/Ecc/CodeFragmentCollector.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'BaseTools/Source/Python/Ecc/CodeFragmentCollector.py') diff --git a/BaseTools/Source/Python/Ecc/CodeFragmentCollector.py b/BaseTools/Source/Python/Ecc/CodeFragmentCollector.py index c428752c05..d8d6aff08a 100644 --- a/BaseTools/Source/Python/Ecc/CodeFragmentCollector.py +++ b/BaseTools/Source/Python/Ecc/CodeFragmentCollector.py @@ -73,7 +73,7 @@ class CodeFragmentCollector: self.FileName = FileName self.CurrentLineNumber = 1 self.CurrentOffsetWithinLine = 0 - + self.TokenReleaceList = [] self.__Token = "" self.__SkippedChars = "" @@ -503,6 +503,9 @@ class CodeFragmentCollector: FileStringContents = '' for fileLine in self.Profile.FileLinesList: FileStringContents += fileLine + for Token in self.TokenReleaceList: + if Token in FileStringContents: + FileStringContents = FileStringContents.replace(Token, 'TOKENSTRING') cStream = antlr.InputStream(FileStringContents) lexer = CLexer(cStream) tStream = antlr.CommonTokenStream(lexer) -- cgit v1.2.3