mantognini created this revision.
Herald added subscribers: manas, steakhal, ASDenysPetrov, dkrupp, donat.nagy, 
Szelethus, mikhail.ramalho, a.sidorin, szepet, baloghadamsoftware, xazax.hun.
Herald added a project: All.
mantognini published this revision for review.
mantognini added reviewers: vsavchenko, steakhal.
mantognini added a comment.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

This patch relates to my previous comment: 
https://reviews.llvm.org/D124621#3485799


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'


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D126197

Files:
  clang/utils/analyzer/CmpRuns.py


Index: clang/utils/analyzer/CmpRuns.py
===================================================================
--- clang/utils/analyzer/CmpRuns.py
+++ clang/utils/analyzer/CmpRuns.py
@@ -242,17 +242,20 @@
             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)]
 


Index: clang/utils/analyzer/CmpRuns.py
===================================================================
--- clang/utils/analyzer/CmpRuns.py
+++ clang/utils/analyzer/CmpRuns.py
@@ -242,17 +242,20 @@
             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)]
 
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to