openscap_report.scap_results_parser.parsers.remediation_parser   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Test Coverage

Coverage 94.74%

Importance

Changes 0
Metric Value
wmc 8
eloc 26
dl 0
loc 36
ccs 18
cts 19
cp 0.9474
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A RemediationParser.get_remediation() 0 10 1
A RemediationParser._get_remediation_code() 0 9 5
A RemediationParser.replace_sub_tag() 0 2 1
A RemediationParser.__init__() 0 2 1
1
# Copyright 2022, Red Hat, Inc.
2
# SPDX-License-Identifier: LGPL-2.1-or-later
3
4 1
from lxml import etree
5
6 1
from ..data_structures import Remediation
7
8
9 1
class RemediationParser():
10 1
    def __init__(self, ref_values):
11 1
        self.ref_values = ref_values
12
13 1
    def replace_sub_tag(self, tag):
14 1
        return self.ref_values.get(tag.get("idref"))
15
16 1
    def _get_remediation_code(self, fix):
17 1
        str_fix = fix.text
18 1
        for child in fix:
19 1
            if str_fix is None:
20
                str_fix = ""
21 1
            if etree.QName(child).localname == "sub":
22 1
                str_fix += self.replace_sub_tag(child)
23 1
            str_fix += child.tail if child.tail is not None else ""
24 1
        return str_fix
25
26 1
    def get_remediation(self, fix):
27 1
        fix_dict = {
28
            "remediation_id": fix.get("id"),
29
            "system": fix.get("system"),
30
            "complexity": fix.get("complexity", ""),
31
            "disruption": fix.get("disruption", ""),
32
            "strategy": fix.get("strategy", ""),
33
            "fix": self._get_remediation_code(fix),
34
        }
35
        return Remediation(**fix_dict)
36