openscap_report.scap_results_parser.data_structures.rule   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Test Coverage

Coverage 85%

Importance

Changes 0
Metric Value
wmc 3
eloc 56
dl 0
loc 67
ccs 34
cts 40
cp 0.85
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A Rule.get_reference_search_string() 0 6 2
A Rule.as_dict() 0 2 1
1
# Copyright 2022, Red Hat, Inc.
2
# SPDX-License-Identifier: LGPL-2.1-or-later
3
4 1
from typing import Dict, List
5
6 1
from openscap_report.dataclasses import asdict, dataclass, field
7
8 1
from .cpe_platform import Platform
9 1
from .identifier import Identifier
10 1
from .oval_definition import OvalDefinition
11 1
from .oval_node import OvalNode
12 1
from .reference import Reference
13 1
from .remediation import Remediation
14 1
from .warning import RuleWarning
15
16 1
RULE_JSON_KEYS = [
17
    "rule_id",
18
    "title",
19
    "result",
20
    "time",
21
    "severity",
22
    "weight",
23
    "identifiers",
24
    "references",
25
    "description",
26
    "rationale",
27
    "warnings",
28
    "platforms",
29
    "oval_definition_id",
30
    "messages",
31
    "remediations",
32
]
33
34
35 1
@dataclass
36 1
class Rule:  # pylint: disable=R0902
37 1
    rule_id: str
38 1
    title: str = ""
39 1
    result: str = ""
40 1
    multi_check: bool = False
41 1
    time: str = ""
42 1
    severity: str = ""
43 1
    weight: float = 0.0
44 1
    identifiers: List[Identifier] = field(default_factory=list)
45 1
    references: List[Reference] = field(default_factory=list)
46 1
    description: str = ""
47 1
    rationale: str = ""
48 1
    warnings: List[RuleWarning] = field(default_factory=list)
49 1
    platforms: List[str] = field(default_factory=list)
50 1
    oval_definition_id: str = None
51 1
    oval_reference: str = None
52 1
    oval_definition: OvalDefinition = None
53 1
    messages: List[str] = field(default_factory=list)
54 1
    remediations: List[Remediation] = field(default_factory=list)
55 1
    cpe_oval_dict: Dict[str, Dict[str, OvalNode]] = field(default_factory=dict)
56 1
    cpe_al: Dict[str, Dict[str, Platform]] = field(default_factory=dict)
57
58 1
    def as_dict(self):
59
        return asdict(self)
60
61 1
    def get_reference_search_string(self):
62
        out = []
63
        for ref in self.references:
64
            prefix = f"{ref.name.lower().replace(' ', '')}: "
65
            out.extend([prefix + ref_ for ref_ in ref.ref_ids])
66
        return " ".join(out)
67