Passed
Pull Request — master (#156)
by Jan
09:48
created

oval_graph.command_line_client.client_html_output   A

Complexity

Total Complexity 20

Size/Duplication

Total Lines 100
Duplicated Lines 0 %

Test Coverage

Coverage 88.71%

Importance

Changes 0
Metric Value
eloc 86
dl 0
loc 100
ccs 55
cts 62
cp 0.8871
rs 10
c 0
b 0
f 0
wmc 20

10 Methods

Rating   Name   Duplication   Size   Complexity  
A ClientHtmlOutput._build_and_save_html() 0 3 1
A ClientHtmlOutput.__init__() 0 10 3
A ClientHtmlOutput.kill_web_browsers() 0 3 2
A ClientHtmlOutput.prepare_args_when_output_is_html() 0 13 1
B ClientHtmlOutput._prepare_data() 0 20 5
A ClientHtmlOutput.get_src() 0 4 1
A ClientHtmlOutput.get_save_src() 0 9 2
A ClientHtmlOutput._get_src_for_one_graph() 0 2 1
A ClientHtmlOutput.open_results_in_web_browser() 0 9 3
A ClientHtmlOutput.prepare_data() 0 6 1
1 1
import os
0 ignored issues
show
introduced by
Missing module docstring
Loading history...
2 1
import subprocess
3 1
import tempfile
4 1
import webbrowser
5
6 1
from .._builder_html_graph import BuilderHtmlGraph
7 1
from ..exceptions import NotChecked
8 1
from .client import Client
9
10
11 1
class ClientHtmlOutput(Client):
0 ignored issues
show
introduced by
Missing class docstring
Loading history...
Bug introduced by
The method get_only_fail_rule which was declared abstract in the super-class Client
was not overridden.

Methods which raise NotImplementedError should be overridden in concrete child classes.

Loading history...
Bug introduced by
The method search_rules_id which was declared abstract in the super-class Client
was not overridden.

Methods which raise NotImplementedError should be overridden in concrete child classes.

Loading history...
Bug introduced by
The method _get_rows_of_unselected_rules which was declared abstract in the super-class Client
was not overridden.

Methods which raise NotImplementedError should be overridden in concrete child classes.

Loading history...
12 1
    def __init__(self, args):
13 1
        super().__init__(args)
14 1
        self.parts = self.get_src('../parts')
15 1
        self.start_of_file_name = 'graph-of-'
16
17 1
        self.all_in_one = self.arg.all_in_one
18 1
        self.all_rules = True if self.all_in_one else self.arg.all
19 1
        self.display_html = True if self.out is None else self.arg.display
20 1
        self.html_builder = BuilderHtmlGraph(self.parts, self.verbose, self.all_in_one)
21 1
        self.web_browsers = []
22
23 1
    @staticmethod
24
    def get_src(src):
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
25 1
        _dir = os.path.dirname(os.path.realpath(__file__))
26 1
        return str(os.path.join(_dir, src))
27
28 1
    def prepare_data(self, rules):
29 1
        out_src = []
30 1
        oval_tree_dict = dict()
31 1
        self._prepare_data(rules, oval_tree_dict, out_src)
32 1
        self.open_results_in_web_browser(out_src)
33 1
        return out_src
34
35 1
    def _prepare_data(self, rules, dict_oval_trees, out_src):
36 1
        for rule in rules['rules']:
37 1
            try:
38 1
                self._put_to_dict_oval_trees(dict_oval_trees, rule)
0 ignored issues
show
Bug introduced by
The Instance of ClientHtmlOutput does not seem to have a member named _put_to_dict_oval_trees.

This check looks for calls to members that are non-existent. These calls will fail.

The member could have been renamed or removed.

Loading history...
39 1
                if not self.all_in_one:
40 1
                    self._build_and_save_html(
41
                        dict_oval_trees,
42
                        self._get_src_for_one_graph(rule),
43
                        dict(rules=[rule]),
44
                        out_src
45
                    )
46 1
                    dict_oval_trees = {}
47 1
            except NotChecked as error:
48
                start_red_color = '\033[91m'
49
                end_red_color = '\033[0m'
50
                print(start_red_color + str(error) + end_red_color)
51 1
        if self.all_in_one:
52
            self._build_and_save_html(
53
                dict_oval_trees, self.get_save_src(
54
                    'rules' + self.date), rules, out_src)
55
56 1
    def _build_and_save_html(self, dict_oval_trees, src, rules, out_src):
57 1
        self.html_builder.save_html(dict_oval_trees, src, rules)
58 1
        out_src.append(src)
59
60 1
    def _get_src_for_one_graph(self, rule):
61 1
        return self.get_save_src(rule + self.date)
62
63 1
    def get_save_src(self, rule):
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
64 1
        if self.out is not None:
65 1
            os.makedirs(self.out, exist_ok=True)
66 1
            return os.path.join(
67
                self.out,
68
                self.start_of_file_name + rule + '.html')
69 1
        return os.path.join(
70
            tempfile.gettempdir(),
71
            self.start_of_file_name + rule + '.html')
72
73 1
    def open_results_in_web_browser(self, paths_to_results):
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
74 1
        if self.display_html:
75 1
            try:
76 1
                self.web_browsers.append(
77
                    subprocess.Popen(["firefox", *paths_to_results]))
78
            except subprocess.CalledProcessError:
79
                default_web_browser_name = webbrowser.get().name
80
                self.web_browsers.append(
81
                    subprocess.Popen([default_web_browser_name, *paths_to_results]))
82
83 1
    def kill_web_browsers(self):
0 ignored issues
show
introduced by
Missing function or method docstring
Loading history...
84 1
        for web_browser in self.web_browsers:
85 1
            web_browser.kill()
86
87 1
    def prepare_args_when_output_is_html(self):
0 ignored issues
show
Coding Style Naming introduced by
Method name "prepare_args_when_output_is_html" doesn't conform to '[a-z_][a-z0-9_]2,30$' pattern ('[a-z_][a-z0-9_]2,30$' pattern)

This check looks for invalid names for a range of different identifiers.

You can set regular expressions to which the identifiers must conform if the defaults do not match your requirements.

If your project includes a Pylint configuration file, the settings contained in that file take precedence.

To find out more about Pylint, please refer to their site.

Loading history...
introduced by
Missing function or method docstring
Loading history...
88 1
        self.parser.add_argument(
89
            '-i',
90
            '--all-in-one',
91
            action="store_true",
92
            default=False,
93
            help="Processes all rules into one file.")
94 1
        self.parser.add_argument(
95
            '-d',
96
            '--display',
97
            action="store_true",
98
            default=False,
99
            help="Enables opening a web browser with a graph, when is used --output.")
100