]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Ecc/c.py
BaseTools: Fix old python2 idioms
[mirror_edk2.git] / BaseTools / Source / Python / Ecc / c.py
index d7b95984385a2e2155968dd7ca123c0a63e3ec14..e2a5cc8487fabeaaa65aa15e52f82cf4e962a39a 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 # This file is used to be the c coding style checking of ECC tool\r
 #\r
-# Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
 # This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
 # which accompanies this distribution.  The full text of the license may be found at\r
@@ -11,6 +11,7 @@
 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 #\r
 \r
+from __future__ import print_function\r
 import sys\r
 import Common.LongFilePathOs as os\r
 import re\r
@@ -271,7 +272,7 @@ def GetIdentifierList():
 def StripNonAlnumChars(Str):\r
     StrippedStr = ''\r
     for Char in Str:\r
-        if Char.isalnum():\r
+        if Char.isalnum() or Char == '_':\r
             StrippedStr += Char\r
     return StrippedStr\r
 \r
@@ -550,7 +551,7 @@ def CollectSourceCodeDataIntoDB(RootDir):
     Db.UpdateIdentifierBelongsToFunction()\r
 \r
 def GetTableID(FullFileName, ErrorMsgList=None):\r
-    if ErrorMsgList == None:\r
+    if ErrorMsgList is None:\r
         ErrorMsgList = []\r
 \r
     Db = GetDB()\r
@@ -575,7 +576,7 @@ def GetIncludeFileList(FullFileName):
     if os.path.splitext(FullFileName)[1].upper() not in ('.H'):\r
         return []\r
     IFList = IncludeFileListDict.get(FullFileName)\r
-    if IFList != None:\r
+    if IFList is not None:\r
         return IFList\r
 \r
     FileID = GetTableID(FullFileName)\r
@@ -601,12 +602,12 @@ def GetFullPathOfIncludeFile(Str, IncludePathList):
     return None\r
 \r
 def GetAllIncludeFiles(FullFileName):\r
-    if AllIncludeFileListDict.get(FullFileName) != None:\r
+    if AllIncludeFileListDict.get(FullFileName) is not None:\r
         return AllIncludeFileListDict.get(FullFileName)\r
 \r
     FileDirName = os.path.dirname(FullFileName)\r
     IncludePathList = IncludePathListDict.get(FileDirName)\r
-    if IncludePathList == None:\r
+    if IncludePathList is None:\r
         IncludePathList = MetaDataParser.GetIncludeListOfFile(EccGlobalData.gWorkspace, FullFileName, GetDB())\r
         if FileDirName not in IncludePathList:\r
             IncludePathList.insert(0, FileDirName)\r
@@ -618,7 +619,7 @@ def GetAllIncludeFiles(FullFileName):
         FileName = FileName.strip('\"')\r
         FileName = FileName.lstrip('<').rstrip('>').strip()\r
         FullPath = GetFullPathOfIncludeFile(FileName, IncludePathList)\r
-        if FullPath != None:\r
+        if FullPath is not None:\r
             IncludeFileQueue.append(FullPath)\r
 \r
     i = 0\r
@@ -629,7 +630,7 @@ def GetAllIncludeFiles(FullFileName):
             FileName = FileName.strip('\"')\r
             FileName = FileName.lstrip('<').rstrip('>').strip()\r
             FullPath = GetFullPathOfIncludeFile(FileName, IncludePathList)\r
-            if FullPath != None and FullPath not in IncludeFileQueue:\r
+            if FullPath is not None and FullPath not in IncludeFileQueue:\r
                 IncludeFileQueue.insert(i + 1, FullPath)\r
         i += 1\r
 \r
@@ -830,7 +831,7 @@ def GetDataTypeFromModifier(ModifierStr):
     MList = ModifierStr.split()\r
     ReturnType = ''\r
     for M in MList:\r
-        if M in EccGlobalData.gConfig.ModifierList:\r
+        if M in EccGlobalData.gConfig.ModifierSet:\r
             continue\r
         # remove array sufix\r
         if M.startswith('[') or M.endswith(']'):\r
@@ -853,7 +854,7 @@ def DiffModifier(Str1, Str2):
 def GetTypedefDict(FullFileName):\r
 \r
     Dict = ComplexTypeDict.get(FullFileName)\r
-    if Dict != None:\r
+    if Dict is not None:\r
         return Dict\r
 \r
     FileID = GetTableID(FullFileName)\r
@@ -898,7 +899,7 @@ def GetTypedefDict(FullFileName):
 def GetSUDict(FullFileName):\r
 \r
     Dict = SUDict.get(FullFileName)\r
-    if Dict != None:\r
+    if Dict is not None:\r
         return Dict\r
 \r
     FileID = GetTableID(FullFileName)\r
@@ -983,9 +984,9 @@ def StripComments(Str):
 \r
 def GetFinalTypeValue(Type, FieldName, TypedefDict, SUDict):\r
     Value = TypedefDict.get(Type)\r
-    if Value == None:\r
+    if Value is None:\r
         Value = SUDict.get(Type)\r
-    if Value == None:\r
+    if Value is None:\r
         return None\r
 \r
     LBPos = Value.find('{')\r
@@ -994,11 +995,11 @@ def GetFinalTypeValue(Type, FieldName, TypedefDict, SUDict):
         for FT in FTList:\r
             if FT not in ('struct', 'union'):\r
                 Value = TypedefDict.get(FT)\r
-                if Value == None:\r
+                if Value is None:\r
                     Value = SUDict.get(FT)\r
                 break\r
 \r
-        if Value == None:\r
+        if Value is None:\r
             return None\r
 \r
         LBPos = Value.find('{')\r
@@ -1025,11 +1026,11 @@ def GetFinalTypeValue(Type, FieldName, TypedefDict, SUDict):
     return None\r
 \r
 def GetRealType(Type, TypedefDict, TargetType=None):\r
-    if TargetType != None and Type == TargetType:\r
+    if TargetType is not None and Type == TargetType:\r
             return Type\r
     while TypedefDict.get(Type):\r
         Type = TypedefDict.get(Type)\r
-        if TargetType != None and Type == TargetType:\r
+        if TargetType is not None and Type == TargetType:\r
             return Type\r
     return Type\r
 \r
@@ -1043,10 +1044,10 @@ def GetTypeInfo(RefList, Modifier, FullFileName, TargetType=None):
     while Index < len(RefList):\r
         FieldName = RefList[Index]\r
         FromType = GetFinalTypeValue(Type, FieldName, TypedefDict, SUDict)\r
-        if FromType == None:\r
+        if FromType is None:\r
             return None\r
         # we want to determine the exact type.\r
-        if TargetType != None:\r
+        if TargetType is not None:\r
             Type = FromType.split()[0]\r
         # we only want to check if it is a pointer\r
         else:\r
@@ -1151,7 +1152,7 @@ def GetVarInfo(PredVarList, FuncRecord, FullFileName, IsFuncCall=False, TargetTy
 #            Type = GetDataTypeFromModifier(Result[0]).split()[-1]\r
             TypeList = GetDataTypeFromModifier(Result[0]).split()\r
             Type = TypeList[-1]\r
-            if len(TypeList) > 1 and StarList != None:\r
+            if len(TypeList) > 1 and StarList is not None:\r
                 for Star in StarList:\r
                     Type = Type.strip()\r
                     Type = Type.rstrip(Star)\r
@@ -1174,7 +1175,7 @@ def GetVarInfo(PredVarList, FuncRecord, FullFileName, IsFuncCall=False, TargetTy
                 Type = TypeList[-1]\r
                 if Type == '*' and len(TypeList) >= 2:\r
                     Type = TypeList[-2]\r
-                if len(TypeList) > 1 and StarList != None:\r
+                if len(TypeList) > 1 and StarList is not None:\r
                     for Star in StarList:\r
                         Type = Type.strip()\r
                         Type = Type.rstrip(Star)\r
@@ -1199,7 +1200,7 @@ def GetVarInfo(PredVarList, FuncRecord, FullFileName, IsFuncCall=False, TargetTy
         else:\r
             TypeList = GetDataTypeFromModifier(Result[0]).split()\r
             Type = TypeList[-1]\r
-            if len(TypeList) > 1 and StarList != None:\r
+            if len(TypeList) > 1 and StarList is not None:\r
                 for Star in StarList:\r
                     Type = Type.strip()\r
                     Type = Type.rstrip(Star)\r
@@ -1230,7 +1231,7 @@ def GetVarInfo(PredVarList, FuncRecord, FullFileName, IsFuncCall=False, TargetTy
             else:\r
                 TypeList = GetDataTypeFromModifier(Result[0]).split()\r
                 Type = TypeList[-1]\r
-                if len(TypeList) > 1 and StarList != None:\r
+                if len(TypeList) > 1 and StarList is not None:\r
                     for Star in StarList:\r
                         Type = Type.strip()\r
                         Type = Type.rstrip(Star)\r
@@ -1858,7 +1859,13 @@ def CheckDeclNoUseCType(FullFileName):
     for Result in ResultSet:\r
         for Type in CTypeTuple:\r
             if PatternInModifier(Result[0], Type):\r
-                PrintErrorMsg(ERROR_DECLARATION_DATA_TYPE_CHECK_NO_USE_C_TYPE, 'Variable type %s' % Type, FileTable, Result[2])\r
+                if EccGlobalData.gException.IsException(ERROR_DECLARATION_DATA_TYPE_CHECK_NO_USE_C_TYPE,\r
+                                                        Result[0] + ' ' + Result[1]):\r
+                    continue\r
+                PrintErrorMsg(ERROR_DECLARATION_DATA_TYPE_CHECK_NO_USE_C_TYPE,\r
+                              'Invalid variable type (%s) in definition [%s]' % (Type, Result[0] + ' ' + Result[1]),\r
+                              FileTable,\r
+                              Result[2])\r
                 break\r
 \r
     SqlStatement = """ select Modifier, Name, ID, Value\r
@@ -1933,12 +1940,12 @@ def CheckPointerNullComparison(FullFileName):
     p = GetFuncDeclPattern()\r
     for Str in PSL:\r
         FuncRecord = GetFuncContainsPE(Str[1], FL)\r
-        if FuncRecord == None:\r
+        if FuncRecord is None:\r
             continue\r
 \r
         for Exp in GetPredicateListFromPredicateExpStr(Str[0]):\r
             PredInfo = SplitPredicateStr(Exp)\r
-            if PredInfo[1] == None:\r
+            if PredInfo[1] is None:\r
                 PredVarStr = PredInfo[0][0].strip()\r
                 IsFuncCall = False\r
                 SearchInCache = False\r
@@ -1960,7 +1967,7 @@ def CheckPointerNullComparison(FullFileName):
                     continue\r
                 if SearchInCache:\r
                     Type = FuncReturnTypeDict.get(PredVarStr)\r
-                    if Type != None:\r
+                    if Type is not None:\r
                         if Type.find('*') != -1 and Type != 'BOOLEAN*':\r
                             PrintErrorMsg(ERROR_PREDICATE_EXPRESSION_CHECK_COMPARISON_NULL_TYPE, 'Predicate Expression: %s' % Exp, FileTable, Str[2])\r
                         continue\r
@@ -1971,7 +1978,7 @@ def CheckPointerNullComparison(FullFileName):
                 Type = GetVarInfo(PredVarList, FuncRecord, FullFileName, IsFuncCall, None, StarList)\r
                 if SearchInCache:\r
                     FuncReturnTypeDict[PredVarStr] = Type\r
-                if Type == None:\r
+                if Type is None:\r
                     continue\r
                 Type = GetTypeFromArray(Type, PredVarStr)\r
                 if Type.find('*') != -1 and Type != 'BOOLEAN*':\r
@@ -2012,12 +2019,12 @@ def CheckNonBooleanValueComparison(FullFileName):
     p = GetFuncDeclPattern()\r
     for Str in PSL:\r
         FuncRecord = GetFuncContainsPE(Str[1], FL)\r
-        if FuncRecord == None:\r
+        if FuncRecord is None:\r
             continue\r
 \r
         for Exp in GetPredicateListFromPredicateExpStr(Str[0]):\r
             PredInfo = SplitPredicateStr(Exp)\r
-            if PredInfo[1] == None:\r
+            if PredInfo[1] is None:\r
                 PredVarStr = PredInfo[0][0].strip()\r
                 IsFuncCall = False\r
                 SearchInCache = False\r
@@ -2040,7 +2047,7 @@ def CheckNonBooleanValueComparison(FullFileName):
 \r
                 if SearchInCache:\r
                     Type = FuncReturnTypeDict.get(PredVarStr)\r
-                    if Type != None:\r
+                    if Type is not None:\r
                         if Type.find('BOOLEAN') == -1:\r
                             PrintErrorMsg(ERROR_PREDICATE_EXPRESSION_CHECK_NO_BOOLEAN_OPERATOR, 'Predicate Expression: %s' % Exp, FileTable, Str[2])\r
                         continue\r
@@ -2050,7 +2057,7 @@ def CheckNonBooleanValueComparison(FullFileName):
                 Type = GetVarInfo(PredVarList, FuncRecord, FullFileName, IsFuncCall, 'BOOLEAN', StarList)\r
                 if SearchInCache:\r
                     FuncReturnTypeDict[PredVarStr] = Type\r
-                if Type == None:\r
+                if Type is None:\r
                     continue\r
                 if Type.find('BOOLEAN') == -1:\r
                     PrintErrorMsg(ERROR_PREDICATE_EXPRESSION_CHECK_NO_BOOLEAN_OPERATOR, 'Predicate Expression: %s' % Exp, FileTable, Str[2])\r
@@ -2091,7 +2098,7 @@ def CheckBooleanValueComparison(FullFileName):
     p = GetFuncDeclPattern()\r
     for Str in PSL:\r
         FuncRecord = GetFuncContainsPE(Str[1], FL)\r
-        if FuncRecord == None:\r
+        if FuncRecord is None:\r
             continue\r
 \r
         for Exp in GetPredicateListFromPredicateExpStr(Str[0]):\r
@@ -2119,7 +2126,7 @@ def CheckBooleanValueComparison(FullFileName):
 \r
                 if SearchInCache:\r
                     Type = FuncReturnTypeDict.get(PredVarStr)\r
-                    if Type != None:\r
+                    if Type is not None:\r
                         if Type.find('BOOLEAN') != -1:\r
                             PrintErrorMsg(ERROR_PREDICATE_EXPRESSION_CHECK_BOOLEAN_VALUE, 'Predicate Expression: %s' % Exp, FileTable, Str[2])\r
                         continue\r
@@ -2130,7 +2137,7 @@ def CheckBooleanValueComparison(FullFileName):
                 Type = GetVarInfo(PredVarList, FuncRecord, FullFileName, IsFuncCall, 'BOOLEAN', StarList)\r
                 if SearchInCache:\r
                     FuncReturnTypeDict[PredVarStr] = Type\r
-                if Type == None:\r
+                if Type is None:\r
                     continue\r
                 if Type.find('BOOLEAN') != -1:\r
                     PrintErrorMsg(ERROR_PREDICATE_EXPRESSION_CHECK_BOOLEAN_VALUE, 'Predicate Expression: %s' % Exp, FileTable, Str[2])\r
@@ -2279,7 +2286,7 @@ def CheckDoxygenTripleForwardSlash(FullFileName):
         for Result in ResultSet:\r
             CommentSet.append(Result)\r
     except:\r
-        print 'Unrecognized chars in comment of file %s', FullFileName\r
+        print('Unrecognized chars in comment of file %s', FullFileName)\r
 \r
 \r
     for Result in CommentSet:\r
@@ -2432,7 +2439,7 @@ def CheckFuncHeaderDoxygenComments(FullFileName):
         for Result in ResultSet:\r
             CommentSet.append(Result)\r
     except:\r
-        print 'Unrecognized chars in comment of file %s', FullFileName\r
+        print('Unrecognized chars in comment of file %s', FullFileName)\r
 \r
     # Func Decl check\r
     SqlStatement = """ select Modifier, Name, StartLine, ID, Value\r
@@ -2463,7 +2470,7 @@ def CheckFuncHeaderDoxygenComments(FullFileName):
         for Result in ResultSet:\r
             CommentSet.append(Result)\r
     except:\r
-        print 'Unrecognized chars in comment of file %s', FullFileName\r
+        print('Unrecognized chars in comment of file %s', FullFileName)\r
 \r
     SqlStatement = """ select Modifier, Header, StartLine, ID, Name\r
                        from Function\r
@@ -2627,10 +2634,10 @@ if __name__ == '__main__':
 #    CollectSourceCodeDataIntoDB(sys.argv[1])\r
     try:\r
         test_file = sys.argv[1]\r
-    except IndexError, v:\r
-        print "Usage: %s filename" % sys.argv[0]\r
+    except IndexError as v:\r
+        print("Usage: %s filename" % sys.argv[0])\r
         sys.exit(1)\r
     MsgList = CheckFuncHeaderDoxygenComments(test_file)\r
     for Msg in MsgList:\r
-        print Msg\r
-    print 'Done!'\r
+        print(Msg)\r
+    print('Done!')\r