Merge pull request #782 from JIghtuse/htmlreport_tweaks
htmlreport tweaks and enhancements
This commit is contained in:
commit
ea889acfdc
|
@ -215,6 +215,17 @@ HTML_HEAD = """
|
|||
clickable.onclick = toggle;
|
||||
}
|
||||
}
|
||||
function set_class_display(c, st) {
|
||||
var elements = document.querySelectorAll('.' + c),
|
||||
len = elements.length;
|
||||
for (i = 0; i < len; i++) {
|
||||
elements[i].style.display = st;
|
||||
}
|
||||
}
|
||||
function toggle_class_visibility(id) {
|
||||
var box = document.getElementById(id);
|
||||
set_class_display(id, box.checked ? '' : 'none');
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init_expandables()">
|
||||
|
@ -532,25 +543,33 @@ if __name__ == '__main__':
|
|||
stats.append(error['id']) # get the stats
|
||||
stats_count += 1
|
||||
|
||||
counter = Counter(stats)
|
||||
|
||||
stat_html = []
|
||||
# the following lines sort the stat primary by value (occurrences),
|
||||
# but if two IDs occur equally often, then we sort them alphabetically by warning ID
|
||||
try:
|
||||
cnt_max = Counter(stats).most_common()[0][1]
|
||||
cnt_max = counter.most_common()[0][1]
|
||||
except IndexError:
|
||||
cnt_max = 0
|
||||
|
||||
try:
|
||||
cnt_min = Counter(stats).most_common()[-1][1]
|
||||
cnt_min = counter.most_common()[-1][1]
|
||||
except IndexError:
|
||||
cnt_min = 0
|
||||
|
||||
stat_fmt = " <tr><td><input type='checkbox' onclick='toggle_class_visibility(this.id)' id='{}' name='{}' checked></td><td>{}</td><td>{}</td></tr>"
|
||||
for occurrences in reversed(range(cnt_min, cnt_max + 1)):
|
||||
for _id in [k for k, v in sorted(Counter(stats).items()) if v == occurrences]:
|
||||
stat_html.append(" " + str(dict(Counter(stats).most_common())[_id]) + " " + str(_id) + "<br/>\n")
|
||||
for _id in [k for k, v in sorted(counter.items()) if v == occurrences]:
|
||||
stat_html.append(stat_fmt.format(_id, _id, dict(counter.most_common())[_id], _id))
|
||||
|
||||
output_file.write(HTML_HEAD.replace('id="menu" dir="rtl"', 'id="menu_index"', 1).replace("Defects:", "Defect summary;", 1) % (options.title, '', options.title, '', ''))
|
||||
output_file.write(' <p>\n' + ' ' + str(stats_count) + ' total<br/><br/>\n' + ''.join(stat_html) + '<br/><br/><a href="stats.html">Statistics</a></p>')
|
||||
output_file.write(' <table>')
|
||||
output_file.write(' <tr><th>Show</th><th>#</th><th>Defect ID</th></tr>')
|
||||
output_file.write(''.join(stat_html))
|
||||
output_file.write(' <tr><td></td><td>' + str(stats_count) + '</td><td>total</td></tr>')
|
||||
output_file.write(' </table>')
|
||||
output_file.write(' <a href="stats.html">Statistics</a></p>')
|
||||
output_file.write(HTML_HEAD_END.replace("content", "content_index", 1))
|
||||
output_file.write(' <table>\n')
|
||||
|
||||
|
@ -588,27 +607,20 @@ if __name__ == '__main__':
|
|||
if error['severity'] == 'error':
|
||||
error_class = 'class="error"'
|
||||
if error['id'] == 'missingInclude':
|
||||
output_file.write(
|
||||
'\n <tr><td></td><td>%s</td><td></td><td>%s</td><td>%s</td></tr>' %
|
||||
(error['id'], error['severity'], error['msg']))
|
||||
output_file.write(
|
||||
'\n <tr class="%s"><td></td><td>%s</td><td></td><td>%s</td><td>%s</td></tr>' %
|
||||
(error['id'], error['id'], error['severity'], error['msg']))
|
||||
elif (error['id'] == 'unmatchedSuppression') and filename.endswith('*'):
|
||||
output_file.write(
|
||||
"\n <tr><td></td><td>%s</td><td></td><td>%s</td><td %s>%s</td></tr>" %
|
||||
(error['id'], error['severity'], error_class,
|
||||
'\n <tr class="%s"><td></td><td>%s</td><td></td><td>%s</td><td %s>%s</td></tr>' %
|
||||
(error['id'], error['id'], error['severity'], error_class,
|
||||
error['msg']))
|
||||
else:
|
||||
if cwe_url:
|
||||
output_file.write(
|
||||
"\n <tr><td><a href='%s#line-%d'>%d</a></td><td>%s</td><td>%s</td><td>%s</td><td %s>%s</td></tr>" %
|
||||
(data['htmlfile'], error['line'], error['line'],
|
||||
error['id'], cwe_url, error['severity'], error_class,
|
||||
error['msg']))
|
||||
else:
|
||||
output_file.write(
|
||||
"\n <tr><td><a href='%s#line-%d'>%d</a></td><td>%s</td><td></td><td>%s</td><td %s>%s</td></tr>" %
|
||||
(data['htmlfile'], error['line'], error['line'],
|
||||
error['id'], error['severity'], error_class,
|
||||
error['msg']))
|
||||
output_file.write(
|
||||
'\n <tr class="%s"><td><a href="%s#line-%d">%d</a></td><td>%s</td><td>%s</td><td>%s</td><td %s>%s</td></tr>' %
|
||||
(error['id'], data['htmlfile'], error['line'], error['line'],
|
||||
error['id'], cwe_url, error['severity'], error_class,
|
||||
error['msg']))
|
||||
|
||||
output_file.write('\n </table>')
|
||||
output_file.write(HTML_FOOTER % contentHandler.versionCppcheck)
|
||||
|
|
Loading…
Reference in New Issue