When I want to generate a report from an ARF I got a traceback.
[jcerny@thinkpad oscap-report{master}]$ oscap xccdf eval --rule xccdf_org.ssgproject.content_rule_selinux_state --profile '(all)' --results-arf arf.xml /usr/share/xml/scap/ssg/content/ssg-fedora-ds.xml
Title Ensure SELinux State is Enforcing
Rule xccdf_org.ssgproject.content_rule_selinux_state
Result pass
[jcerny@thinkpad oscap-report{master}]$ python3 -m oscap_report.cli -o report.html arf.xml
Traceback (most recent call last):
File "/usr/lib64/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib64/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/jcerny/work/git/oscap-report/oscap_report/cli.py", line 157, in <module>
main()
File "/home/jcerny/work/git/oscap-report/oscap_report/cli.py", line 146, in main
report = api.generate_report(parser)
File "/home/jcerny/work/git/oscap-report/oscap_report/cli.py", line 118, in generate_report
return report_generator.generate_html_report()
File "/home/jcerny/work/git/oscap-report/oscap_report/html_report/report_generator.py", line 18, in generate_html_report
html_report = template.render(report=self.report)
File "/usr/lib/python3.9/site-packages/jinja2/environment.py", line 1090, in render
self.environment.handle_exception()
File "/usr/lib/python3.9/site-packages/jinja2/environment.py", line 832, in handle_exception
reraise(*rewrite_traceback_stack(source=source))
File "/usr/lib/python3.9/site-packages/jinja2/_compat.py", line 28, in reraise
raise value.with_traceback(tb)
File "/home/jcerny/work/git/oscap-report/oscap_report/html_report/templates/template_report.html", line 1, in top-level template code
{% extends 'base_report.html' %}
File "/home/jcerny/work/git/oscap-report/oscap_report/html_report/templates/base_report.html", line 365, in top-level template code
{% block content%}
File "/home/jcerny/work/git/oscap-report/oscap_report/html_report/templates/template_report.html", line 18, in block "content"
{% include 'severity_of_failed_rules.html'%}
File "/home/jcerny/work/git/oscap-report/oscap_report/html_report/templates/severity_of_failed_rules.html", line 1, in top-level template code
{% set severity_of_failed_rules = report.get_severity_of_failed_rules_stats() %}
File "/home/jcerny/work/git/oscap-report/oscap_report/scap_results_parser/data_structures.py", line 70, in get_severity_of_failed_rules_stats
percent_per_rule = 100 / len(failed_rules)
ZeroDivisionError: division by zero
I think that the problem is that my ARF contains only a single rule which is passing.