1. Add -m and -s to support only scanning meta-data files or source code files
[people/mcb30/basetools.git] / Source / Python / Ecc / Check.py
index 0b82f0b..05af5dc 100644 (file)
@@ -457,13 +457,18 @@ class Check(object):
     def MetaDataFileCheckLibraryInstance(self):\r
         if EccGlobalData.gConfig.MetaDataFileCheckLibraryInstance == '1' or EccGlobalData.gConfig.MetaDataFileCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1':\r
             EdkLogger.quiet("Checking for library instance type issue ...")\r
-            SqlCommand = """select ID, Value2 from Inf where Value1 = 'LIBRARY_CLASS' and Model = %s group by BelongsToFile""" % MODEL_META_DATA_HEADER\r
+            #SqlCommand = """select ID, Value2 from Inf where Value1 = 'LIBRARY_CLASS' and Model = %s group by BelongsToFile""" % MODEL_META_DATA_HEADER\r
+            SqlCommand = """select A.ID, A.Value2, B.Value2 from Inf as A left join Inf as B\r
+                            where A.Value1 = 'LIBRARY_CLASS' and A.Model = %s \r
+                            and B.Value1 = 'MODULE_TYPE' and B.Model = %s and A.BelongsToFile = B.BelongsToFile \r
+                            group by A.BelongsToFile""" % (MODEL_META_DATA_HEADER, MODEL_META_DATA_HEADER)\r
             RecordSet = EccGlobalData.gDb.TblInf.Exec(SqlCommand)\r
             LibraryClasses = {}\r
             for Record in RecordSet:\r
                 List = Record[1].split('|', 1)\r
                 if len(List) != 2:\r
-                    EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_2, OtherMsg = "The Library Class '%s' does not specify its supported module types" % (List[0]), BelongsToTable = 'Inf', BelongsToItem = Record[0])\r
+                    if Record[2] != 'BASE':\r
+                        EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_2, OtherMsg = "The Library Class '%s' does not specify its supported module types" % (List[0]), BelongsToTable = 'Inf', BelongsToItem = Record[0])\r
                 else:\r
                     LibraryClasses[List[0]] = List[1]\r
             SqlCommand = """select A.ID, A.Value1, B.Value2 from Inf as A left join Inf as B \r
@@ -471,7 +476,7 @@ class Check(object):
                             % (MODEL_EFI_LIBRARY_CLASS, 'MODULE_TYPE', MODEL_META_DATA_HEADER)\r
             RecordSet = EccGlobalData.gDb.TblInf.Exec(SqlCommand)\r
             for Record in RecordSet:\r
-                if Record[1] in LibraryClasses and LibraryClasses[Record[1]].find(Record[2]) < 0:\r
+                if Record[1] in LibraryClasses and LibraryClasses[Record[1]].find(Record[2]) < 0 and Record[2] != 'BASE':\r
                     EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_LIBRARY_INSTANCE_1, OtherMsg = "The type of Library Class '%s' defined in Inf file does not match the type of the module" % (Record[1]), BelongsToTable = 'Inf', BelongsToItem = Record[0])\r
     #\r
     # Check whether a Library Instance has been defined for all dependent library classes\r