[clang] 0ad4f29 - [analyzer] SATest: Weaken assumption about HTML files

Marco Antognini via cfe-commits cfe-commits at lists.llvm.org
Mon Jun 20 00:46:12 PDT 2022


Author: Marco Antognini
Date: 2022-06-20T09:46:07+02:00
New Revision: 0ad4f29b545d849820f0025736c9559c5c439032

URL: https://github.com/llvm/llvm-project/commit/0ad4f29b545d849820f0025736c9559c5c439032
DIFF: https://github.com/llvm/llvm-project/commit/0ad4f29b545d849820f0025736c9559c5c439032.diff

LOG: [analyzer] SATest: Weaken assumption about HTML files

Instead of assuming there is an HTML file for each diagnostics, consider
the HTML files only when they exist, individually of each other.

After generating the reference data, running

  python /scripts/SATest.py build --projects simbody

was resulting in this error:

    File "/scripts/CmpRuns.py", line 250, in read_single_file
      assert len(d['HTMLDiagnostics_files']) == 1
  KeyError: 'HTMLDiagnostics_files'

Reviewed By: steakhal

Differential Revision: https://reviews.llvm.org/D126197

Added: 
    

Modified: 
    clang/utils/analyzer/CmpRuns.py

Removed: 
    


################################################################################
diff  --git a/clang/utils/analyzer/CmpRuns.py b/clang/utils/analyzer/CmpRuns.py
index 7afe865d77f2b..61fd044c900fa 100644
--- a/clang/utils/analyzer/CmpRuns.py
+++ b/clang/utils/analyzer/CmpRuns.py
@@ -242,17 +242,20 @@ def read_single_file(self, path: str, delete_empty: bool):
             return
 
         # Extract the HTML reports, if they exists.
-        if 'HTMLDiagnostics_files' in data['diagnostics'][0]:
-            htmlFiles = []
-            for d in data['diagnostics']:
+        htmlFiles = []
+        for d in data['diagnostics']:
+            if 'HTMLDiagnostics_files' in d:
                 # FIXME: Why is this named files, when does it have multiple
                 # files?
                 assert len(d['HTMLDiagnostics_files']) == 1
                 htmlFiles.append(d.pop('HTMLDiagnostics_files')[0])
-        else:
-            htmlFiles = [None] * len(data['diagnostics'])
+            else:
+                htmlFiles.append(None)
 
         report = AnalysisReport(self, data.pop('files'))
+        # Python 3.10 offers zip(..., strict=True). The following assertion
+        # mimics it.
+        assert len(data['diagnostics']) == len(htmlFiles)
         diagnostics = [AnalysisDiagnostic(d, report, h)
                        for d, h in zip(data.pop('diagnostics'), htmlFiles)]
 


        


More information about the cfe-commits mailing list