Dump table of warning counts before all warnings.
* The table of warning counts has links to each warning pattern section,
which has a new anchor.
* Each warning pattern section has a new link to the 'top' of the table
of warning counts.
* Background color of unknown warnings is changed to more visible light blue.
BUG: 27698849
Change-Id: Ia3d4a8511bd42f44f6a47afcb9c3889f6d62b9f2
diff --git a/tools/warn.py b/tools/warn.py
index 8ea45df..bb3b08d 100755
--- a/tools/warn.py
+++ b/tools/warn.py
@@ -30,9 +30,24 @@
if sev == severity.HARMLESS:
return 'limegreen'
if sev == severity.UNKNOWN:
- return 'blue'
+ return 'lightblue'
return 'grey'
+def headerforseverity(sev):
+ if sev == severity.FIXMENOW:
+ return 'Critical warnings, fix me now'
+ if sev == severity.HIGH:
+ return 'High severity warnings'
+ if sev == severity.MEDIUM:
+ return 'Medium severity warnings'
+ if sev == severity.LOW:
+ return 'Low severity warnings'
+ if sev == severity.HARMLESS:
+ return 'Harmless warnings'
+ if sev == severity.UNKNOWN:
+ return 'Unknown warnings'
+ return 'Unhandled warnings'
+
warnpatterns = [
{ 'category':'make', 'severity':severity.MEDIUM, 'members':[], 'option':'',
'description':'make: overriding commands/ignoring old commands',
@@ -623,16 +638,21 @@
output(text,)
output('</td></tr>')
-def begintable(text, backgroundcolor):
+def begintable(text, backgroundcolor, extraanchor):
global anchor
output('<table border="1" rules="cols" frame="box" width="100%" bgcolor="black"><tr bgcolor="' +
- backgroundcolor + '"><a name="anchor' + str(anchor) + '"><td>')
+ backgroundcolor + '"><a name="anchor' + str(anchor) + '">')
+ if extraanchor:
+ output('<a name="' + extraanchor + '">')
+ output('<td>')
output(htmlbig(text[0]) + '<br>')
for i in text[1:]:
output(i + '<br>')
output('</td>')
- output('<td width="100" bgcolor="grey"><a align="right" href="#anchor' + str(anchor-1) +
- '">previous</a><br><a align="right" href="#anchor' + str(anchor+1) + '">next</a>')
+ output('<td width="100" bgcolor="grey">' +
+ '<a align="right" href="#WarningTOC">top</a><br>' +
+ '<a align="right" href="#anchor' + str(anchor-1) + '">previous</a><br>' +
+ '<a align="right" href="#anchor' + str(anchor+1) + '">next</a>')
output('</td></a></tr>')
anchor += 1
@@ -650,13 +670,43 @@
unknown += len(i['members'])
elif i['severity'] != severity.SKIP:
known += len(i['members'])
- output('Number of classified warnings: <b>' + str(known) + '</b><br>' )
- output('Number of unclassified warnings: <b>' + str(unknown) + '</b><br>')
+ output('\nNumber of classified warnings: <b>' + str(known) + '</b><br>' )
+ output('\nNumber of unclassified warnings: <b>' + str(unknown) + '</b><br>')
total = unknown + known
- output('Total number of warnings: <b>' + str(total) + '</b>')
+ output('\nTotal number of warnings: <b>' + str(total) + '</b>')
if total < 1000:
output('(low count may indicate incremental build)')
- output('<p>')
+ output('\n<p>\n')
+
+# dump count of warnings of a given severity in TOC
+def dumpcount(sev):
+ first = True
+ for i in warnpatterns:
+ if i['severity'] == sev and len(i['members']) > 0:
+ if first:
+ output(headerforseverity(sev) + ':\n<blockquote>' +
+ '<table border="1" frame="box" width="100%">')
+ output('<tr bgcolor="' + colorforseverity(sev) + '">' +
+ '<td><a href="#' + i['anchor'] + '">' + descriptionfor(i) +
+ ' (' + str(len(i['members'])) + ')</a></td></tr>\n')
+ first = False
+ if not first:
+ output('</table></blockquote>\n')
+
+# dump table of content, list of all warning patterns
+def dumptoc():
+ n = 1
+ output('<a name="WarningTOC"><blockquote>\n')
+ for i in warnpatterns:
+ i['anchor'] = 'Warning' + str(n)
+ n += 1
+ dumpcount(severity.FIXMENOW)
+ dumpcount(severity.HIGH)
+ dumpcount(severity.MEDIUM)
+ dumpcount(severity.LOW)
+ dumpcount(severity.HARMLESS)
+ dumpcount(severity.UNKNOWN)
+ output('</blockquote>\n<p>\n')
def allpatterns(cat):
pats = ''
@@ -678,7 +728,7 @@
if len(i['members']) == 0 and i['severity'] != severity.SKIP:
if tablestarted == False:
tablestarted = True
- begintable(['Fixed warnings', 'No more occurences. Please consider turning these in to errors if possible, before they are reintroduced in to the build'], 'blue')
+ begintable(['Fixed warnings', 'No more occurences. Please consider turning these in to errors if possible, before they are reintroduced in to the build'], 'blue', '')
tablerow(i['description'] + ' (' + allpatterns(i) + ') ' + i['option'])
if tablestarted:
endtable()
@@ -690,7 +740,7 @@
header = [descriptionfor(cat),str(len(cat['members'])) + ' occurences:']
if cat['option'] != '':
header[1:1] = [' (related option: ' + cat['option'] +')']
- begintable(header, colorforseverity(cat['severity']))
+ begintable(header, colorforseverity(cat['severity']), cat['anchor'])
for i in cat['members']:
tablerow(i)
endtable()
@@ -761,6 +811,7 @@
# dump the html output to stdout
dumphtmlprologue('Warnings for ' + platformversion + ' - ' + targetproduct + ' - ' + targetvariant)
dumpstats()
+dumptoc()
dumpseverity(severity.FIXMENOW)
dumpseverity(severity.HIGH)
dumpseverity(severity.MEDIUM)