From bf3c6e2dc42290ad27f2d30ce42d84a53241544b Mon Sep 17 00:00:00 2001 From: Nastya Birillo Date: Wed, 6 Oct 2021 21:54:01 +0300 Subject: [PATCH] Code refactoring and fix issues (#141) * Code refactoring - move src package into hyperstyle package * Fix issue#129 and issue #139 --- .github/workflows/build.yml | 6 +-- MANIFEST.in | 3 ++ README.md | 2 +- VERSION.md | 2 +- {src => hyperstyle}/__init__.py | 0 .../common => hyperstyle/src}/__init__.py | 0 {src => hyperstyle/src}/python/__init__.py | 0 .../src/python/common}/__init__.py | 0 .../src}/python/common/tool_arguments.py | 4 +- .../src/python/review}/__init__.py | 0 .../src}/python/review/application_config.py | 4 +- .../src/python/review/common}/__init__.py | 0 .../src}/python/review/common/file_system.py | 0 .../python/review/common/java_compiler.py | 2 +- .../src}/python/review/common/language.py | 4 +- .../python/review/common/parallel_runner.py | 6 +-- .../python/review/common/subprocess_runner.py | 0 .../src/python/review/inspectors}/__init__.py | 0 .../review/inspectors/base_inspector.py | 4 +- .../review/inspectors/checkstyle}/__init__.py | 0 .../inspectors/checkstyle/checkstyle.py | 23 +++++---- .../inspectors/checkstyle/files/config.xml | 0 .../inspectors/checkstyle/issue_types.py | 2 +- .../src}/python/review/inspectors/common.py | 0 .../review/inspectors/detekt}/__init__.py | 0 .../python/review/inspectors/detekt/detekt.py | 17 +++---- .../inspectors/detekt/files/detekt-config.yml | 0 .../review/inspectors/detekt/issue_types.py | 2 +- .../python/review/inspectors/eslint/.eslintrc | 0 .../review/inspectors/eslint}/__init__.py | 0 .../python/review/inspectors/eslint/eslint.py | 17 +++---- .../review/inspectors/eslint/issue_types.py | 2 +- .../python/review/inspectors/flake8/.flake8 | 2 + .../review/inspectors/flake8}/__init__.py | 0 .../python/review/inspectors/flake8/flake8.py | 24 ++++++---- .../review/inspectors/flake8/issue_types.py | 2 +- .../review/inspectors/flake8/whitelist.txt | 0 .../review/inspectors/inspector_type.py | 0 .../src}/python/review/inspectors/issue.py | 2 +- .../review/inspectors/parsers}/__init__.py | 0 .../review/inspectors/parsers/xml_parser.py | 15 +++--- .../python/review/inspectors/pmd}/__init__.py | 0 .../review/inspectors/pmd/files/config.xml | 1 - .../review/inspectors/pmd/issue_types.py | 2 +- .../src}/python/review/inspectors/pmd/pmd.py | 16 +++---- .../review/inspectors/pyast}/__init__.py | 0 .../review/inspectors/pyast/python_ast.py | 16 ++++--- .../review/inspectors/pylint}/__init__.py | 0 .../review/inspectors/pylint/issue_types.py | 2 +- .../python/review/inspectors/pylint/pylint.py | 12 ++--- .../python/review/inspectors/pylint/pylintrc | 0 .../review/inspectors/radon}/__init__.py | 0 .../python/review/inspectors/radon/radon.py | 12 ++--- .../src}/python/review/inspectors/tips.py | 23 +++++++-- .../src}/python/review/logging_config.py | 0 .../src/python/review/quality}/__init__.py | 0 .../python/review/quality/evaluate_quality.py | 48 +++++++++++-------- .../src}/python/review/quality/model.py | 2 +- .../src}/python/review/quality/penalty.py | 6 +-- .../python/review/quality/rules}/__init__.py | 0 .../quality/rules/best_practices_scoring.py | 6 +-- .../quality/rules/boolean_length_scoring.py | 6 +-- .../quality/rules/class_response_scoring.py | 6 +-- .../quality/rules/code_style_scoring.py | 6 +-- .../review/quality/rules/cohesion_scoring.py | 6 +-- .../quality/rules/complexity_scoring.py | 6 +-- .../review/quality/rules/coupling_scoring.py | 6 +-- .../rules/cyclomatic_complexity_scoring.py | 6 +-- .../quality/rules/error_prone_scoring.py | 6 +-- .../quality/rules/function_length_scoring.py | 6 +-- .../rules/inheritance_depth_scoring.py | 6 +-- .../review/quality/rules/line_len_scoring.py | 6 +-- .../quality/rules/maintainability_scoring.py | 6 +-- .../quality/rules/method_number_scoring.py | 6 +-- .../quality/rules/weighted_methods_scoring.py | 6 +-- .../src/python/review/reviewers}/__init__.py | 0 .../src}/python/review/reviewers/common.py | 38 +++++++-------- .../python/review/reviewers/perform_review.py | 16 +++---- .../src}/python/review/reviewers/python.py | 12 ++--- .../python/review/reviewers/review_result.py | 6 +-- .../python/review/reviewers/utils/__init__.py | 0 .../review/reviewers/utils/code_statistics.py | 4 +- .../review/reviewers/utils/issues_filter.py | 28 ++++++----- .../reviewers/utils/metadata_exploration.py | 4 +- .../review/reviewers/utils/print_review.py | 14 +++--- .../src}/python/review/run_tool.py | 12 ++--- setup.py | 9 ++-- test/python/functional_tests/conftest.py | 4 +- .../test_difficulty_levels.py | 46 +++++++++++++++--- .../functional_tests/test_range_of_lines.py | 2 +- test/python/inspectors/conftest.py | 6 +-- .../inspectors/test_checkstyle_inspector.py | 15 +++--- .../inspectors/test_detekt_inspector.py | 6 +-- .../inspectors/test_eslint_inspector.py | 6 +-- .../test_filter_duplicate_issues.py | 6 +-- .../inspectors/test_flake8_inspector.py | 8 ++-- test/python/inspectors/test_local_review.py | 6 +-- .../inspectors/test_out_of_range_issues.py | 6 +-- test/python/inspectors/test_pmd_inspector.py | 6 +-- .../inspectors/test_pylint_inspector.py | 4 +- test/python/inspectors/test_python_ast.py | 4 +- .../python/inspectors/test_radon_inspector.py | 10 ++-- test/python/quality/test_penalty.py | 6 +-- 103 files changed, 374 insertions(+), 285 deletions(-) create mode 100644 MANIFEST.in rename {src => hyperstyle}/__init__.py (100%) rename {src/python/common => hyperstyle/src}/__init__.py (100%) rename {src => hyperstyle/src}/python/__init__.py (100%) rename {src/python/review => hyperstyle/src/python/common}/__init__.py (100%) rename {src => hyperstyle/src}/python/common/tool_arguments.py (95%) rename {src/python/review/common => hyperstyle/src/python/review}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/application_config.py (92%) rename {src/python/review/inspectors => hyperstyle/src/python/review/common}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/common/file_system.py (100%) rename {src => hyperstyle/src}/python/review/common/java_compiler.py (91%) rename {src => hyperstyle/src}/python/review/common/language.py (92%) rename {src => hyperstyle/src}/python/review/common/parallel_runner.py (84%) rename {src => hyperstyle/src}/python/review/common/subprocess_runner.py (100%) rename {src/python/review/inspectors/checkstyle => hyperstyle/src/python/review/inspectors}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/inspectors/base_inspector.py (90%) rename {src/python/review/inspectors/detekt => hyperstyle/src/python/review/inspectors/checkstyle}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/inspectors/checkstyle/checkstyle.py (73%) rename {src => hyperstyle/src}/python/review/inspectors/checkstyle/files/config.xml (100%) rename {src => hyperstyle/src}/python/review/inspectors/checkstyle/issue_types.py (99%) rename {src => hyperstyle/src}/python/review/inspectors/common.py (100%) rename {src/python/review/inspectors/eslint => hyperstyle/src/python/review/inspectors/detekt}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/inspectors/detekt/detekt.py (76%) rename {src => hyperstyle/src}/python/review/inspectors/detekt/files/detekt-config.yml (100%) rename {src => hyperstyle/src}/python/review/inspectors/detekt/issue_types.py (99%) rename {src => hyperstyle/src}/python/review/inspectors/eslint/.eslintrc (100%) rename {src/python/review/inspectors/flake8 => hyperstyle/src/python/review/inspectors/eslint}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/inspectors/eslint/eslint.py (70%) rename {src => hyperstyle/src}/python/review/inspectors/eslint/issue_types.py (98%) rename {src => hyperstyle/src}/python/review/inspectors/flake8/.flake8 (97%) rename {src/python/review/inspectors/parsers => hyperstyle/src/python/review/inspectors/flake8}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/inspectors/flake8/flake8.py (83%) rename {src => hyperstyle/src}/python/review/inspectors/flake8/issue_types.py (99%) rename {src => hyperstyle/src}/python/review/inspectors/flake8/whitelist.txt (100%) rename {src => hyperstyle/src}/python/review/inspectors/inspector_type.py (100%) rename {src => hyperstyle/src}/python/review/inspectors/issue.py (99%) rename {src/python/review/inspectors/pmd => hyperstyle/src/python/review/inspectors/parsers}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/inspectors/parsers/xml_parser.py (90%) rename {src/python/review/inspectors/pyast => hyperstyle/src/python/review/inspectors/pmd}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/inspectors/pmd/files/config.xml (99%) rename {src => hyperstyle/src}/python/review/inspectors/pmd/issue_types.py (99%) rename {src => hyperstyle/src}/python/review/inspectors/pmd/pmd.py (85%) rename {src/python/review/inspectors/pylint => hyperstyle/src/python/review/inspectors/pyast}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/inspectors/pyast/python_ast.py (90%) rename {src/python/review/inspectors/radon => hyperstyle/src/python/review/inspectors/pylint}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/inspectors/pylint/issue_types.py (99%) rename {src => hyperstyle/src}/python/review/inspectors/pylint/pylint.py (83%) rename {src => hyperstyle/src}/python/review/inspectors/pylint/pylintrc (100%) rename {src/python/review/quality => hyperstyle/src/python/review/inspectors/radon}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/inspectors/radon/radon.py (81%) rename {src => hyperstyle/src}/python/review/inspectors/tips.py (71%) rename {src => hyperstyle/src}/python/review/logging_config.py (100%) rename {src/python/review/quality/rules => hyperstyle/src/python/review/quality}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/quality/evaluate_quality.py (58%) rename {src => hyperstyle/src}/python/review/quality/model.py (97%) rename {src => hyperstyle/src}/python/review/quality/penalty.py (97%) rename {src/python/review/reviewers => hyperstyle/src/python/review/quality/rules}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/quality/rules/best_practices_scoring.py (91%) rename {src => hyperstyle/src}/python/review/quality/rules/boolean_length_scoring.py (92%) rename {src => hyperstyle/src}/python/review/quality/rules/class_response_scoring.py (90%) rename {src => hyperstyle/src}/python/review/quality/rules/code_style_scoring.py (94%) rename {src => hyperstyle/src}/python/review/quality/rules/cohesion_scoring.py (92%) rename {src => hyperstyle/src}/python/review/quality/rules/complexity_scoring.py (91%) rename {src => hyperstyle/src}/python/review/quality/rules/coupling_scoring.py (89%) rename {src => hyperstyle/src}/python/review/quality/rules/cyclomatic_complexity_scoring.py (91%) rename {src => hyperstyle/src}/python/review/quality/rules/error_prone_scoring.py (89%) rename {src => hyperstyle/src}/python/review/quality/rules/function_length_scoring.py (88%) rename {src => hyperstyle/src}/python/review/quality/rules/inheritance_depth_scoring.py (88%) rename {src => hyperstyle/src}/python/review/quality/rules/line_len_scoring.py (92%) rename {src => hyperstyle/src}/python/review/quality/rules/maintainability_scoring.py (93%) rename {src => hyperstyle/src}/python/review/quality/rules/method_number_scoring.py (92%) rename {src => hyperstyle/src}/python/review/quality/rules/weighted_methods_scoring.py (92%) rename {src/python/review/reviewers/utils => hyperstyle/src/python/review/reviewers}/__init__.py (100%) rename {src => hyperstyle/src}/python/review/reviewers/common.py (71%) rename {src => hyperstyle/src}/python/review/reviewers/perform_review.py (81%) rename {src => hyperstyle/src}/python/review/reviewers/python.py (65%) rename {src => hyperstyle/src}/python/review/reviewers/review_result.py (78%) create mode 100644 hyperstyle/src/python/review/reviewers/utils/__init__.py rename {src => hyperstyle/src}/python/review/reviewers/utils/code_statistics.py (96%) rename {src => hyperstyle/src}/python/review/reviewers/utils/issues_filter.py (81%) rename {src => hyperstyle/src}/python/review/reviewers/utils/metadata_exploration.py (92%) rename {src => hyperstyle/src}/python/review/reviewers/utils/print_review.py (92%) rename {src => hyperstyle/src}/python/review/run_tool.py (94%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 91efc8bf..44cf23e8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -39,7 +39,7 @@ jobs: - name: Sort whitelists run: | - for file in "whitelist.txt" "src/python/review/inspectors/flake8/whitelist.txt" + for file in "whitelist.txt" "hyperstyle/src/python/review/inspectors/flake8/whitelist.txt" do LC_ALL=C sort $file -o $file done @@ -47,7 +47,7 @@ jobs: - name: Commit sorted whitelists uses: EndBug/add-and-commit@v7.2.1 with: - add: "['whitelist.txt', 'src/python/review/inspectors/flake8/whitelist.txt']" + add: "['whitelist.txt', 'hyperstyle/src/python/review/inspectors/flake8/whitelist.txt']" message: 'Sort whitelists (Github Actions)' - name: Set up Eslint @@ -57,7 +57,7 @@ jobs: - name: Test with pytest run: | - pytest + pytest -vv - name: Install review module run: | diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 00000000..bdf4942c --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,3 @@ +include VERSION.md +include requirements.txt +recursive-exclude __pycache__ *.pyc *.pyo *.orig \ No newline at end of file diff --git a/README.md b/README.md index c8b7bbb6..3ea3b1ca 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ Or use the public docker image, that we use in the [build.yml](.github/workflows ## Usage -Run the [run_tool.py](./src/python/review/run_tool.py) with the arguments. +Run the [run_tool.py](hyperstyle/src/python/review/run_tool.py) with the arguments. A simple configuration: `python run_tool.py `. diff --git a/VERSION.md b/VERSION.md index 6085e946..23aa8390 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -1.2.1 +1.2.2 diff --git a/src/__init__.py b/hyperstyle/__init__.py similarity index 100% rename from src/__init__.py rename to hyperstyle/__init__.py diff --git a/src/python/common/__init__.py b/hyperstyle/src/__init__.py similarity index 100% rename from src/python/common/__init__.py rename to hyperstyle/src/__init__.py diff --git a/src/python/__init__.py b/hyperstyle/src/python/__init__.py similarity index 100% rename from src/python/__init__.py rename to hyperstyle/src/python/__init__.py diff --git a/src/python/review/__init__.py b/hyperstyle/src/python/common/__init__.py similarity index 100% rename from src/python/review/__init__.py rename to hyperstyle/src/python/common/__init__.py diff --git a/src/python/common/tool_arguments.py b/hyperstyle/src/python/common/tool_arguments.py similarity index 95% rename from src/python/common/tool_arguments.py rename to hyperstyle/src/python/common/tool_arguments.py index 025a1006..3958fb2f 100644 --- a/src/python/common/tool_arguments.py +++ b/hyperstyle/src/python/common/tool_arguments.py @@ -2,8 +2,8 @@ from enum import Enum, unique from typing import List, Optional -from src.python.review.application_config import LanguageVersion -from src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.application_config import LanguageVersion +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType @unique diff --git a/src/python/review/common/__init__.py b/hyperstyle/src/python/review/__init__.py similarity index 100% rename from src/python/review/common/__init__.py rename to hyperstyle/src/python/review/__init__.py diff --git a/src/python/review/application_config.py b/hyperstyle/src/python/review/application_config.py similarity index 92% rename from src/python/review/application_config.py rename to hyperstyle/src/python/review/application_config.py index 07a72780..b086ffc0 100644 --- a/src/python/review/application_config.py +++ b/hyperstyle/src/python/review/application_config.py @@ -2,8 +2,8 @@ from enum import Enum, unique from typing import Dict, List, Optional, Set -from src.python.review.common.file_system import Extension -from src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.common.file_system import Extension +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType @dataclass diff --git a/src/python/review/inspectors/__init__.py b/hyperstyle/src/python/review/common/__init__.py similarity index 100% rename from src/python/review/inspectors/__init__.py rename to hyperstyle/src/python/review/common/__init__.py diff --git a/src/python/review/common/file_system.py b/hyperstyle/src/python/review/common/file_system.py similarity index 100% rename from src/python/review/common/file_system.py rename to hyperstyle/src/python/review/common/file_system.py diff --git a/src/python/review/common/java_compiler.py b/hyperstyle/src/python/review/common/java_compiler.py similarity index 91% rename from src/python/review/common/java_compiler.py rename to hyperstyle/src/python/review/common/java_compiler.py index e6b97861..8ab52f5c 100644 --- a/src/python/review/common/java_compiler.py +++ b/hyperstyle/src/python/review/common/java_compiler.py @@ -3,7 +3,7 @@ from pathlib import Path from typing import Union -from src.python.review.common.file_system import Encoding, Extension +from hyperstyle.src.python.review.common.file_system import Encoding, Extension logger = logging.getLogger(__name__) diff --git a/src/python/review/common/language.py b/hyperstyle/src/python/review/common/language.py similarity index 92% rename from src/python/review/common/language.py rename to hyperstyle/src/python/review/common/language.py index 46851ce3..4bc61431 100644 --- a/src/python/review/common/language.py +++ b/hyperstyle/src/python/review/common/language.py @@ -2,8 +2,8 @@ from pathlib import Path from typing import List -from src.python.review.application_config import LanguageVersion -from src.python.review.common.file_system import Extension +from hyperstyle.src.python.review.application_config import LanguageVersion +from hyperstyle.src.python.review.common.file_system import Extension @unique diff --git a/src/python/review/common/parallel_runner.py b/hyperstyle/src/python/review/common/parallel_runner.py similarity index 84% rename from src/python/review/common/parallel_runner.py rename to hyperstyle/src/python/review/common/parallel_runner.py index c0347d23..a2655565 100644 --- a/src/python/review/common/parallel_runner.py +++ b/hyperstyle/src/python/review/common/parallel_runner.py @@ -5,9 +5,9 @@ from pathlib import Path from typing import List -from src.python.review.application_config import ApplicationConfig -from src.python.review.inspectors.base_inspector import BaseInspector -from src.python.review.inspectors.issue import BaseIssue +from hyperstyle.src.python.review.application_config import ApplicationConfig +from hyperstyle.src.python.review.inspectors.base_inspector import BaseInspector +from hyperstyle.src.python.review.inspectors.issue import BaseIssue logger = logging.getLogger(__name__) diff --git a/src/python/review/common/subprocess_runner.py b/hyperstyle/src/python/review/common/subprocess_runner.py similarity index 100% rename from src/python/review/common/subprocess_runner.py rename to hyperstyle/src/python/review/common/subprocess_runner.py diff --git a/src/python/review/inspectors/checkstyle/__init__.py b/hyperstyle/src/python/review/inspectors/__init__.py similarity index 100% rename from src/python/review/inspectors/checkstyle/__init__.py rename to hyperstyle/src/python/review/inspectors/__init__.py diff --git a/src/python/review/inspectors/base_inspector.py b/hyperstyle/src/python/review/inspectors/base_inspector.py similarity index 90% rename from src/python/review/inspectors/base_inspector.py rename to hyperstyle/src/python/review/inspectors/base_inspector.py index 032f6f60..b088f1e9 100644 --- a/src/python/review/inspectors/base_inspector.py +++ b/hyperstyle/src/python/review/inspectors/base_inspector.py @@ -2,8 +2,8 @@ from pathlib import Path from typing import Any, Dict, List -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import BaseIssue +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import BaseIssue class BaseInspector(abc.ABC): diff --git a/src/python/review/inspectors/detekt/__init__.py b/hyperstyle/src/python/review/inspectors/checkstyle/__init__.py similarity index 100% rename from src/python/review/inspectors/detekt/__init__.py rename to hyperstyle/src/python/review/inspectors/checkstyle/__init__.py diff --git a/src/python/review/inspectors/checkstyle/checkstyle.py b/hyperstyle/src/python/review/inspectors/checkstyle/checkstyle.py similarity index 73% rename from src/python/review/inspectors/checkstyle/checkstyle.py rename to hyperstyle/src/python/review/inspectors/checkstyle/checkstyle.py index bc841676..fd4fe0d5 100644 --- a/src/python/review/inspectors/checkstyle/checkstyle.py +++ b/hyperstyle/src/python/review/inspectors/checkstyle/checkstyle.py @@ -3,13 +3,14 @@ from pathlib import Path from typing import Any, Dict, List -from src.python.review.common.file_system import check_set_up_env_variable, new_temp_dir -from src.python.review.common.subprocess_runner import run_in_subprocess -from src.python.review.inspectors.base_inspector import BaseInspector -from src.python.review.inspectors.checkstyle.issue_types import CHECK_CLASS_NAME_TO_ISSUE_TYPE -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import BaseIssue, IssueDifficulty, IssueType -from src.python.review.inspectors.parsers.xml_parser import parse_xml_file_result +from hyperstyle.src.python.review.common.file_system import check_set_up_env_variable, new_temp_dir +from hyperstyle.src.python.review.common.subprocess_runner import run_in_subprocess +from hyperstyle.src.python.review.inspectors.base_inspector import BaseInspector +from hyperstyle.src.python.review.inspectors.checkstyle.issue_types import CHECK_CLASS_NAME_TO_ISSUE_TYPE +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import BaseIssue, IssueDifficulty, IssueType +from hyperstyle.src.python.review.inspectors.parsers.xml_parser import parse_xml_file_result +from hyperstyle.src.python.review.inspectors.tips import get_magic_number_tip logger = logging.getLogger(__name__) @@ -39,6 +40,11 @@ class CheckstyleInspector(BaseInspector): 'LineLengthCheck': r'Line is longer than \d+ characters \(found (\d+)\)', + + } + + origin_class_to_description = { + 'MagicNumberCheck': get_magic_number_tip(), } @classmethod @@ -59,7 +65,8 @@ def inspect(self, path: Path, config: Dict[str, Any]) -> List[BaseIssue]: self.inspector_type, self.choose_issue_type, IssueDifficulty.get_by_issue_type, - self.origin_class_to_pattern) + self.origin_class_to_pattern, + self.origin_class_to_description) @classmethod def choose_issue_type(cls, check_class: str) -> IssueType: diff --git a/src/python/review/inspectors/checkstyle/files/config.xml b/hyperstyle/src/python/review/inspectors/checkstyle/files/config.xml similarity index 100% rename from src/python/review/inspectors/checkstyle/files/config.xml rename to hyperstyle/src/python/review/inspectors/checkstyle/files/config.xml diff --git a/src/python/review/inspectors/checkstyle/issue_types.py b/hyperstyle/src/python/review/inspectors/checkstyle/issue_types.py similarity index 99% rename from src/python/review/inspectors/checkstyle/issue_types.py rename to hyperstyle/src/python/review/inspectors/checkstyle/issue_types.py index faa92701..604d8a2d 100644 --- a/src/python/review/inspectors/checkstyle/issue_types.py +++ b/hyperstyle/src/python/review/inspectors/checkstyle/issue_types.py @@ -1,6 +1,6 @@ from typing import Dict -from src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.inspectors.issue import IssueType CHECK_CLASS_NAME_TO_ISSUE_TYPE: Dict[str, IssueType] = { # ---- Annotations ---- diff --git a/src/python/review/inspectors/common.py b/hyperstyle/src/python/review/inspectors/common.py similarity index 100% rename from src/python/review/inspectors/common.py rename to hyperstyle/src/python/review/inspectors/common.py diff --git a/src/python/review/inspectors/eslint/__init__.py b/hyperstyle/src/python/review/inspectors/detekt/__init__.py similarity index 100% rename from src/python/review/inspectors/eslint/__init__.py rename to hyperstyle/src/python/review/inspectors/detekt/__init__.py diff --git a/src/python/review/inspectors/detekt/detekt.py b/hyperstyle/src/python/review/inspectors/detekt/detekt.py similarity index 76% rename from src/python/review/inspectors/detekt/detekt.py rename to hyperstyle/src/python/review/inspectors/detekt/detekt.py index 75d86431..adb40d36 100644 --- a/src/python/review/inspectors/detekt/detekt.py +++ b/hyperstyle/src/python/review/inspectors/detekt/detekt.py @@ -3,13 +3,13 @@ from pathlib import Path from typing import Any, Dict, List -from src.python.review.common.file_system import check_set_up_env_variable, new_temp_dir -from src.python.review.common.subprocess_runner import run_in_subprocess -from src.python.review.inspectors.base_inspector import BaseInspector -from src.python.review.inspectors.detekt.issue_types import DETEKT_CLASS_NAME_TO_ISSUE_TYPE -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import BaseIssue, IssueDifficulty, IssueType -from src.python.review.inspectors.parsers.xml_parser import parse_xml_file_result +from hyperstyle.src.python.review.common.file_system import check_set_up_env_variable, new_temp_dir +from hyperstyle.src.python.review.common.subprocess_runner import run_in_subprocess +from hyperstyle.src.python.review.inspectors.base_inspector import BaseInspector +from hyperstyle.src.python.review.inspectors.detekt.issue_types import DETEKT_CLASS_NAME_TO_ISSUE_TYPE +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import BaseIssue, IssueDifficulty, IssueType +from hyperstyle.src.python.review.inspectors.parsers.xml_parser import parse_xml_file_result logger = logging.getLogger(__name__) @@ -58,7 +58,8 @@ def inspect(self, path: Path, config: Dict[str, Any]) -> List[BaseIssue]: self.inspector_type, self.choose_issue_type, IssueDifficulty.get_by_issue_type, - self.origin_class_to_pattern) + self.origin_class_to_pattern, + {}) @classmethod def choose_issue_type(cls, issue_class: str) -> IssueType: diff --git a/src/python/review/inspectors/detekt/files/detekt-config.yml b/hyperstyle/src/python/review/inspectors/detekt/files/detekt-config.yml similarity index 100% rename from src/python/review/inspectors/detekt/files/detekt-config.yml rename to hyperstyle/src/python/review/inspectors/detekt/files/detekt-config.yml diff --git a/src/python/review/inspectors/detekt/issue_types.py b/hyperstyle/src/python/review/inspectors/detekt/issue_types.py similarity index 99% rename from src/python/review/inspectors/detekt/issue_types.py rename to hyperstyle/src/python/review/inspectors/detekt/issue_types.py index 06a4ef46..19b4da80 100644 --- a/src/python/review/inspectors/detekt/issue_types.py +++ b/hyperstyle/src/python/review/inspectors/detekt/issue_types.py @@ -1,6 +1,6 @@ from typing import Dict -from src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.inspectors.issue import IssueType DETEKT_CLASS_NAME_TO_ISSUE_TYPE: Dict[str, IssueType] = { # Comments diff --git a/src/python/review/inspectors/eslint/.eslintrc b/hyperstyle/src/python/review/inspectors/eslint/.eslintrc similarity index 100% rename from src/python/review/inspectors/eslint/.eslintrc rename to hyperstyle/src/python/review/inspectors/eslint/.eslintrc diff --git a/src/python/review/inspectors/flake8/__init__.py b/hyperstyle/src/python/review/inspectors/eslint/__init__.py similarity index 100% rename from src/python/review/inspectors/flake8/__init__.py rename to hyperstyle/src/python/review/inspectors/eslint/__init__.py diff --git a/src/python/review/inspectors/eslint/eslint.py b/hyperstyle/src/python/review/inspectors/eslint/eslint.py similarity index 70% rename from src/python/review/inspectors/eslint/eslint.py rename to hyperstyle/src/python/review/inspectors/eslint/eslint.py index b586fa6e..e4a4e2ba 100644 --- a/src/python/review/inspectors/eslint/eslint.py +++ b/hyperstyle/src/python/review/inspectors/eslint/eslint.py @@ -1,13 +1,13 @@ from pathlib import Path from typing import Any, Dict, List -from src.python.review.common.file_system import new_temp_dir -from src.python.review.common.subprocess_runner import run_in_subprocess -from src.python.review.inspectors.base_inspector import BaseInspector -from src.python.review.inspectors.eslint.issue_types import ESLINT_CLASS_NAME_TO_ISSUE_TYPE -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import BaseIssue, IssueDifficulty, IssueType -from src.python.review.inspectors.parsers.xml_parser import parse_xml_file_result +from hyperstyle.src.python.review.common.file_system import new_temp_dir +from hyperstyle.src.python.review.common.subprocess_runner import run_in_subprocess +from hyperstyle.src.python.review.inspectors.base_inspector import BaseInspector +from hyperstyle.src.python.review.inspectors.eslint.issue_types import ESLINT_CLASS_NAME_TO_ISSUE_TYPE +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import BaseIssue, IssueDifficulty, IssueType +from hyperstyle.src.python.review.inspectors.parsers.xml_parser import parse_xml_file_result PATH_ESLINT_CONFIG = Path(__file__).parent / '.eslintrc' @@ -42,7 +42,8 @@ def inspect(self, path: Path, config: Dict[str, Any]) -> List[BaseIssue]: self.inspector_type, self.choose_issue_type, IssueDifficulty.get_by_issue_type, - self.origin_class_to_pattern) + self.origin_class_to_pattern, + {}) output_path.unlink() diff --git a/src/python/review/inspectors/eslint/issue_types.py b/hyperstyle/src/python/review/inspectors/eslint/issue_types.py similarity index 98% rename from src/python/review/inspectors/eslint/issue_types.py rename to hyperstyle/src/python/review/inspectors/eslint/issue_types.py index 66d32a0e..db8b082b 100644 --- a/src/python/review/inspectors/eslint/issue_types.py +++ b/hyperstyle/src/python/review/inspectors/eslint/issue_types.py @@ -1,6 +1,6 @@ from typing import Dict -from src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.inspectors.issue import IssueType ESLINT_CLASS_NAME_TO_ISSUE_TYPE: Dict[str, IssueType] = { # Possible errors (according to Eslint doc) diff --git a/src/python/review/inspectors/flake8/.flake8 b/hyperstyle/src/python/review/inspectors/flake8/.flake8 similarity index 97% rename from src/python/review/inspectors/flake8/.flake8 rename to hyperstyle/src/python/review/inspectors/flake8/.flake8 index 4d379e05..42bde8fa 100644 --- a/src/python/review/inspectors/flake8/.flake8 +++ b/hyperstyle/src/python/review/inspectors/flake8/.flake8 @@ -25,6 +25,7 @@ ignore=W291, # trailing whitespaces WPS125, # Forbid variable or module names which shadow builtin names. TODO: Collision with flake8-builtins # WPS: Complexity WPS200, # Forbid modules with complex lines. (Jones Complexity) + WPS210, # Too many local variables WPS221, # Forbid complex lines. (Jones Complexity) # WPS: Consistency WPS303, # Forbid underscores in numbers. @@ -49,6 +50,7 @@ ignore=W291, # trailing whitespaces WPS430, # Forbid nested functions. WPS431, # Forbid nested classes. WPS435, # Forbid multiplying lists. + WPS510, # Found `in` used with a non-set container # WPS: Refactoring WPS518, # Forbid implicit enumerate() calls. TODO: Collision with "C0200" WPS527, # Require tuples as arguments for frozenset. diff --git a/src/python/review/inspectors/parsers/__init__.py b/hyperstyle/src/python/review/inspectors/flake8/__init__.py similarity index 100% rename from src/python/review/inspectors/parsers/__init__.py rename to hyperstyle/src/python/review/inspectors/flake8/__init__.py diff --git a/src/python/review/inspectors/flake8/flake8.py b/hyperstyle/src/python/review/inspectors/flake8/flake8.py similarity index 83% rename from src/python/review/inspectors/flake8/flake8.py rename to hyperstyle/src/python/review/inspectors/flake8/flake8.py index a4b19e32..f7b25d6f 100644 --- a/src/python/review/inspectors/flake8/flake8.py +++ b/hyperstyle/src/python/review/inspectors/flake8/flake8.py @@ -3,12 +3,12 @@ from pathlib import Path from typing import Any, Dict, List -from src.python.review.common.subprocess_runner import run_in_subprocess -from src.python.review.inspectors.base_inspector import BaseInspector -from src.python.review.inspectors.common import convert_percentage_of_value_to_lack_of_value -from src.python.review.inspectors.flake8.issue_types import CODE_PREFIX_TO_ISSUE_TYPE, CODE_TO_ISSUE_TYPE -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import ( +from hyperstyle.src.python.review.common.subprocess_runner import run_in_subprocess +from hyperstyle.src.python.review.inspectors.base_inspector import BaseInspector +from hyperstyle.src.python.review.inspectors.common import convert_percentage_of_value_to_lack_of_value +from hyperstyle.src.python.review.inspectors.flake8.issue_types import CODE_PREFIX_TO_ISSUE_TYPE, CODE_TO_ISSUE_TYPE +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import ( BaseIssue, CodeIssue, CohesionIssue, @@ -18,7 +18,9 @@ IssueType, LineLenIssue, ) -from src.python.review.inspectors.tips import get_cyclomatic_complexity_tip, get_line_len_tip +from hyperstyle.src.python.review.inspectors.tips import ( + get_cohesion_tip, get_cyclomatic_complexity_tip, get_line_len_tip, get_magic_number_tip, +) logger = logging.getLogger(__name__) @@ -80,7 +82,7 @@ def parse(cls, output: str) -> List[BaseIssue]: issues.append(CyclomaticComplexityIssue(**issue_data)) elif cohesion_match is not None: # flake8-cohesion issue_type = IssueType.COHESION - issue_data[IssueData.DESCRIPTION.value] = description # TODO: Add tip + issue_data[IssueData.DESCRIPTION.value] = f'{get_cohesion_tip(f"{description.capitalize()}.")}' issue_data[IssueData.COHESION_LACK.value] = convert_percentage_of_value_to_lack_of_value( float(cohesion_match.group(1)), ) @@ -98,7 +100,11 @@ def parse(cls, output: str) -> List[BaseIssue]: issue_type = cls.choose_issue_type(origin_class) issue_data[IssueData.ISSUE_TYPE.value] = issue_type issue_data[IssueData.DIFFICULTY.value] = IssueDifficulty.get_by_issue_type(issue_type) - issue_data[IssueData.DESCRIPTION.value] = description + # Magic number + if origin_class == 'WPS432': + issue_data[IssueData.DESCRIPTION.value] = get_magic_number_tip(description) + else: + issue_data[IssueData.DESCRIPTION.value] = description issues.append(CodeIssue(**issue_data)) return issues diff --git a/src/python/review/inspectors/flake8/issue_types.py b/hyperstyle/src/python/review/inspectors/flake8/issue_types.py similarity index 99% rename from src/python/review/inspectors/flake8/issue_types.py rename to hyperstyle/src/python/review/inspectors/flake8/issue_types.py index a57031ba..566f8c9e 100644 --- a/src/python/review/inspectors/flake8/issue_types.py +++ b/hyperstyle/src/python/review/inspectors/flake8/issue_types.py @@ -1,6 +1,6 @@ from typing import Dict -from src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.inspectors.issue import IssueType CODE_TO_ISSUE_TYPE: Dict[str, IssueType] = { 'E800': IssueType.BEST_PRACTICES, # flake8-eradicate diff --git a/src/python/review/inspectors/flake8/whitelist.txt b/hyperstyle/src/python/review/inspectors/flake8/whitelist.txt similarity index 100% rename from src/python/review/inspectors/flake8/whitelist.txt rename to hyperstyle/src/python/review/inspectors/flake8/whitelist.txt diff --git a/src/python/review/inspectors/inspector_type.py b/hyperstyle/src/python/review/inspectors/inspector_type.py similarity index 100% rename from src/python/review/inspectors/inspector_type.py rename to hyperstyle/src/python/review/inspectors/inspector_type.py diff --git a/src/python/review/inspectors/issue.py b/hyperstyle/src/python/review/inspectors/issue.py similarity index 99% rename from src/python/review/inspectors/issue.py rename to hyperstyle/src/python/review/inspectors/issue.py index 055f77c7..b94c390e 100644 --- a/src/python/review/inspectors/issue.py +++ b/hyperstyle/src/python/review/inspectors/issue.py @@ -6,7 +6,7 @@ from pathlib import Path from typing import Any, Dict, List, Union -from src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType logger = logging.getLogger(__name__) diff --git a/src/python/review/inspectors/pmd/__init__.py b/hyperstyle/src/python/review/inspectors/parsers/__init__.py similarity index 100% rename from src/python/review/inspectors/pmd/__init__.py rename to hyperstyle/src/python/review/inspectors/parsers/__init__.py diff --git a/src/python/review/inspectors/parsers/xml_parser.py b/hyperstyle/src/python/review/inspectors/parsers/xml_parser.py similarity index 90% rename from src/python/review/inspectors/parsers/xml_parser.py rename to hyperstyle/src/python/review/inspectors/parsers/xml_parser.py index c7491263..315ad1c8 100644 --- a/src/python/review/inspectors/parsers/xml_parser.py +++ b/hyperstyle/src/python/review/inspectors/parsers/xml_parser.py @@ -4,9 +4,9 @@ from typing import Any, Callable, Dict, List, Optional from xml.etree import ElementTree -from src.python.review.common.file_system import get_content_from_file -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import ( +from hyperstyle.src.python.review.common.file_system import get_content_from_file +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import ( BaseIssue, BoolExprLenIssue, CodeIssue, @@ -17,7 +17,7 @@ IssueType, LineLenIssue, ) -from src.python.review.inspectors.tips import ( +from hyperstyle.src.python.review.inspectors.tips import ( get_bool_expr_len_tip, get_cyclomatic_complexity_tip, get_func_len_tip, @@ -102,6 +102,7 @@ def parse_xml_file_result( inspector_type: InspectorType, issue_type_selector: Callable[[str], IssueType], difficulty_selector: Callable[[IssueType], IssueDifficulty], + origin_class_to_pattern: Dict[str, str], origin_class_to_description: Dict[str, str]) -> List[BaseIssue]: """ Parses the output, which is a xml file, and returns a list of the issues found there. @@ -140,14 +141,14 @@ def parse_xml_file_result( issue_data[IssueData.ISSUE_TYPE.value] = issue_type issue_data[IssueData.DIFFICULTY.value] = difficulty_selector(issue_type) - if origin_class in origin_class_to_description: - pattern = origin_class_to_description.get(origin_class) + if origin_class in origin_class_to_pattern: + pattern = origin_class_to_pattern.get(origin_class) measure_value = int(re.search(pattern, message, flags=re.IGNORECASE).groups()[0]) issue = __parse_measurable_issue(issue_data, issue_type, measure_value) else: - issue_data[IssueData.DESCRIPTION.value] = message + issue_data[IssueData.DESCRIPTION.value] = origin_class_to_description.get(origin_class, message) issue = CodeIssue(**issue_data) if issue is not None: diff --git a/src/python/review/inspectors/pyast/__init__.py b/hyperstyle/src/python/review/inspectors/pmd/__init__.py similarity index 100% rename from src/python/review/inspectors/pyast/__init__.py rename to hyperstyle/src/python/review/inspectors/pmd/__init__.py diff --git a/src/python/review/inspectors/pmd/files/config.xml b/hyperstyle/src/python/review/inspectors/pmd/files/config.xml similarity index 99% rename from src/python/review/inspectors/pmd/files/config.xml rename to hyperstyle/src/python/review/inspectors/pmd/files/config.xml index 7dffeeed..1ec2b6f5 100644 --- a/src/python/review/inspectors/pmd/files/config.xml +++ b/hyperstyle/src/python/review/inspectors/pmd/files/config.xml @@ -177,7 +177,6 @@ - diff --git a/src/python/review/inspectors/pmd/issue_types.py b/hyperstyle/src/python/review/inspectors/pmd/issue_types.py similarity index 99% rename from src/python/review/inspectors/pmd/issue_types.py rename to hyperstyle/src/python/review/inspectors/pmd/issue_types.py index 3e42176d..c17dca53 100644 --- a/src/python/review/inspectors/pmd/issue_types.py +++ b/hyperstyle/src/python/review/inspectors/pmd/issue_types.py @@ -1,6 +1,6 @@ from typing import Dict -from src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.inspectors.issue import IssueType PMD_RULE_TO_ISSUE_TYPE: Dict[str, IssueType] = { # ---- Best Practices ---- diff --git a/src/python/review/inspectors/pmd/pmd.py b/hyperstyle/src/python/review/inspectors/pmd/pmd.py similarity index 85% rename from src/python/review/inspectors/pmd/pmd.py rename to hyperstyle/src/python/review/inspectors/pmd/pmd.py index 84d7acba..aa2fe985 100644 --- a/src/python/review/inspectors/pmd/pmd.py +++ b/hyperstyle/src/python/review/inspectors/pmd/pmd.py @@ -4,14 +4,14 @@ from pathlib import Path from typing import Any, Dict, List -from src.python.review.application_config import LanguageVersion -from src.python.review.common.file_system import check_set_up_env_variable, new_temp_dir -from src.python.review.common.subprocess_runner import run_in_subprocess -from src.python.review.inspectors.base_inspector import BaseInspector -from src.python.review.inspectors.common import remove_prefix -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import BaseIssue, CodeIssue, IssueDifficulty, IssueType -from src.python.review.inspectors.pmd.issue_types import PMD_RULE_TO_ISSUE_TYPE +from hyperstyle.src.python.review.application_config import LanguageVersion +from hyperstyle.src.python.review.common.file_system import check_set_up_env_variable, new_temp_dir +from hyperstyle.src.python.review.common.subprocess_runner import run_in_subprocess +from hyperstyle.src.python.review.inspectors.base_inspector import BaseInspector +from hyperstyle.src.python.review.inspectors.common import remove_prefix +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import BaseIssue, CodeIssue, IssueDifficulty, IssueType +from hyperstyle.src.python.review.inspectors.pmd.issue_types import PMD_RULE_TO_ISSUE_TYPE logger = logging.getLogger(__name__) diff --git a/src/python/review/inspectors/pylint/__init__.py b/hyperstyle/src/python/review/inspectors/pyast/__init__.py similarity index 100% rename from src/python/review/inspectors/pylint/__init__.py rename to hyperstyle/src/python/review/inspectors/pyast/__init__.py diff --git a/src/python/review/inspectors/pyast/python_ast.py b/hyperstyle/src/python/review/inspectors/pyast/python_ast.py similarity index 90% rename from src/python/review/inspectors/pyast/python_ast.py rename to hyperstyle/src/python/review/inspectors/pyast/python_ast.py index cb0eb537..d8db6b3f 100644 --- a/src/python/review/inspectors/pyast/python_ast.py +++ b/hyperstyle/src/python/review/inspectors/pyast/python_ast.py @@ -3,13 +3,15 @@ from pathlib import Path from typing import Any, Dict, List -from src.python.review.common import language -from src.python.review.common.file_system import get_all_file_system_items -from src.python.review.common.language import Language -from src.python.review.inspectors.base_inspector import BaseInspector -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import BaseIssue, BoolExprLenIssue, FuncLenIssue, IssueDifficulty, IssueType -from src.python.review.inspectors.tips import get_bool_expr_len_tip, get_func_len_tip +from hyperstyle.src.python.review.common import language +from hyperstyle.src.python.review.common.file_system import get_all_file_system_items +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.base_inspector import BaseInspector +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import ( + BaseIssue, BoolExprLenIssue, FuncLenIssue, IssueDifficulty, IssueType, +) +from hyperstyle.src.python.review.inspectors.tips import get_bool_expr_len_tip, get_func_len_tip BOOL_EXPR_LEN_ORIGIN_CLASS = 'C001' FUNC_LEN_ORIGIN_CLASS = 'C002' diff --git a/src/python/review/inspectors/radon/__init__.py b/hyperstyle/src/python/review/inspectors/pylint/__init__.py similarity index 100% rename from src/python/review/inspectors/radon/__init__.py rename to hyperstyle/src/python/review/inspectors/pylint/__init__.py diff --git a/src/python/review/inspectors/pylint/issue_types.py b/hyperstyle/src/python/review/inspectors/pylint/issue_types.py similarity index 99% rename from src/python/review/inspectors/pylint/issue_types.py rename to hyperstyle/src/python/review/inspectors/pylint/issue_types.py index 1a9ab612..5375532d 100644 --- a/src/python/review/inspectors/pylint/issue_types.py +++ b/hyperstyle/src/python/review/inspectors/pylint/issue_types.py @@ -1,6 +1,6 @@ from typing import Dict -from src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.inspectors.issue import IssueType CODE_TO_ISSUE_TYPE: Dict[str, IssueType] = { # Basic checker diff --git a/src/python/review/inspectors/pylint/pylint.py b/hyperstyle/src/python/review/inspectors/pylint/pylint.py similarity index 83% rename from src/python/review/inspectors/pylint/pylint.py rename to hyperstyle/src/python/review/inspectors/pylint/pylint.py index 5467f998..cc7ce5cd 100644 --- a/src/python/review/inspectors/pylint/pylint.py +++ b/hyperstyle/src/python/review/inspectors/pylint/pylint.py @@ -3,12 +3,12 @@ from pathlib import Path from typing import Any, Dict, List, Optional -from src.python.review.common.subprocess_runner import run_in_subprocess -from src.python.review.inspectors.base_inspector import BaseInspector -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import CodeIssue, IssueDifficulty, IssueType -from src.python.review.inspectors.pylint.issue_types import CATEGORY_TO_ISSUE_TYPE, CODE_TO_ISSUE_TYPE -from src.python.review.inspectors.tips import add_complexity_tip +from hyperstyle.src.python.review.common.subprocess_runner import run_in_subprocess +from hyperstyle.src.python.review.inspectors.base_inspector import BaseInspector +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import CodeIssue, IssueDifficulty, IssueType +from hyperstyle.src.python.review.inspectors.pylint.issue_types import CATEGORY_TO_ISSUE_TYPE, CODE_TO_ISSUE_TYPE +from hyperstyle.src.python.review.inspectors.tips import add_complexity_tip logger = logging.getLogger(__name__) diff --git a/src/python/review/inspectors/pylint/pylintrc b/hyperstyle/src/python/review/inspectors/pylint/pylintrc similarity index 100% rename from src/python/review/inspectors/pylint/pylintrc rename to hyperstyle/src/python/review/inspectors/pylint/pylintrc diff --git a/src/python/review/quality/__init__.py b/hyperstyle/src/python/review/inspectors/radon/__init__.py similarity index 100% rename from src/python/review/quality/__init__.py rename to hyperstyle/src/python/review/inspectors/radon/__init__.py diff --git a/src/python/review/inspectors/radon/radon.py b/hyperstyle/src/python/review/inspectors/radon/radon.py similarity index 81% rename from src/python/review/inspectors/radon/radon.py rename to hyperstyle/src/python/review/inspectors/radon/radon.py index 4499b890..f6cabb85 100644 --- a/src/python/review/inspectors/radon/radon.py +++ b/hyperstyle/src/python/review/inspectors/radon/radon.py @@ -2,18 +2,18 @@ from pathlib import Path from typing import Any, Dict, List -from src.python.review.common.subprocess_runner import run_in_subprocess -from src.python.review.inspectors.base_inspector import BaseInspector -from src.python.review.inspectors.common import convert_percentage_of_value_to_lack_of_value -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import ( +from hyperstyle.src.python.review.common.subprocess_runner import run_in_subprocess +from hyperstyle.src.python.review.inspectors.base_inspector import BaseInspector +from hyperstyle.src.python.review.inspectors.common import convert_percentage_of_value_to_lack_of_value +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import ( BaseIssue, IssueData, IssueDifficulty, IssueType, MaintainabilityLackIssue, ) -from src.python.review.inspectors.tips import get_maintainability_index_tip +from hyperstyle.src.python.review.inspectors.tips import get_maintainability_index_tip MAINTAINABILITY_ORIGIN_CLASS = 'RAD100' diff --git a/src/python/review/inspectors/tips.py b/hyperstyle/src/python/review/inspectors/tips.py similarity index 71% rename from src/python/review/inspectors/tips.py rename to hyperstyle/src/python/review/inspectors/tips.py index eac449c1..0ba018ed 100644 --- a/src/python/review/inspectors/tips.py +++ b/hyperstyle/src/python/review/inspectors/tips.py @@ -65,9 +65,16 @@ def get_class_coupling_tip() -> str: ) -# This issue will not be reported at this version -def get_cohesion_tip() -> str: - return '' +def get_cohesion_tip(base_message: str) -> str: + return ( + f'{base_message} ' + 'Cohesion measures the strength of relationship between pieces of functionality within a given module. ' + 'When cohesion is high, the methods and variables of the class are co-dependent ' + 'and hang together as a logical whole. ' + 'However, if the task requires implementing classes without methods, the cohesion always will be low since ' + 'all variables will be in-dependent. ' + 'Please, ignore this issue if the task requires implement an empty class (without any methods).' + ) def get_class_response_tip() -> str: @@ -89,3 +96,13 @@ def get_method_number_tip() -> str: # TODO: Need to improve the tip. def get_maintainability_index_tip() -> str: return 'The maintainability index is too low.' + + +def get_magic_number_tip(base_message: str = "Found a magic number") -> str: + return ( + f'{base_message}. ' + 'The use of unnamed magic numbers in code hides the developers\' intent in choosing that number, ' + 'increases opportunities for subtle errors and makes it more difficult for the program to be adapted ' + 'and extended in the future.\n' + 'However, for small programs it can be allowed, but it is better to use constants instead of magic numbers.' + ) diff --git a/src/python/review/logging_config.py b/hyperstyle/src/python/review/logging_config.py similarity index 100% rename from src/python/review/logging_config.py rename to hyperstyle/src/python/review/logging_config.py diff --git a/src/python/review/quality/rules/__init__.py b/hyperstyle/src/python/review/quality/__init__.py similarity index 100% rename from src/python/review/quality/rules/__init__.py rename to hyperstyle/src/python/review/quality/__init__.py diff --git a/src/python/review/quality/evaluate_quality.py b/hyperstyle/src/python/review/quality/evaluate_quality.py similarity index 58% rename from src/python/review/quality/evaluate_quality.py rename to hyperstyle/src/python/review/quality/evaluate_quality.py index f4eb3a9e..100a92dc 100644 --- a/src/python/review/quality/evaluate_quality.py +++ b/hyperstyle/src/python/review/quality/evaluate_quality.py @@ -1,51 +1,61 @@ from typing import List -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import Quality, Rule -from src.python.review.quality.rules.best_practices_scoring import ( +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import Quality, Rule +from hyperstyle.src.python.review.quality.rules.best_practices_scoring import ( BestPracticesRule, LANGUAGE_TO_BEST_PRACTICES_RULE_CONFIG, ) -from src.python.review.quality.rules.boolean_length_scoring import ( +from hyperstyle.src.python.review.quality.rules.boolean_length_scoring import ( BooleanExpressionRule, LANGUAGE_TO_BOOLEAN_EXPRESSION_RULE_CONFIG, ) -from src.python.review.quality.rules.class_response_scoring import LANGUAGE_TO_RESPONSE_RULE_CONFIG, ResponseRule -from src.python.review.quality.rules.code_style_scoring import CodeStyleRule, LANGUAGE_TO_CODE_STYLE_RULE_CONFIG -from src.python.review.quality.rules.cohesion_scoring import ( +from hyperstyle.src.python.review.quality.rules.class_response_scoring import ( + LANGUAGE_TO_RESPONSE_RULE_CONFIG, ResponseRule, +) +from hyperstyle.src.python.review.quality.rules.code_style_scoring import ( + CodeStyleRule, LANGUAGE_TO_CODE_STYLE_RULE_CONFIG, +) +from hyperstyle.src.python.review.quality.rules.cohesion_scoring import ( CohesionRule, LANGUAGE_TO_COHESION_RULE_CONFIG, ) -from src.python.review.quality.rules.complexity_scoring import ComplexityRule, LANGUAGE_TO_COMPLEXITY_RULE_CONFIG -from src.python.review.quality.rules.coupling_scoring import CouplingRule, LANGUAGE_TO_COUPLING_RULE_CONFIG -from src.python.review.quality.rules.cyclomatic_complexity_scoring import ( +from hyperstyle.src.python.review.quality.rules.complexity_scoring import ( + ComplexityRule, LANGUAGE_TO_COMPLEXITY_RULE_CONFIG, +) +from hyperstyle.src.python.review.quality.rules.coupling_scoring import CouplingRule, LANGUAGE_TO_COUPLING_RULE_CONFIG +from hyperstyle.src.python.review.quality.rules.cyclomatic_complexity_scoring import ( CyclomaticComplexityRule, LANGUAGE_TO_CYCLOMATIC_COMPLEXITY_RULE_CONFIG, ) -from src.python.review.quality.rules.error_prone_scoring import ErrorProneRule, LANGUAGE_TO_ERROR_PRONE_RULE_CONFIG -from src.python.review.quality.rules.function_length_scoring import ( +from hyperstyle.src.python.review.quality.rules.error_prone_scoring import ( + ErrorProneRule, LANGUAGE_TO_ERROR_PRONE_RULE_CONFIG, +) +from hyperstyle.src.python.review.quality.rules.function_length_scoring import ( FunctionLengthRule, LANGUAGE_TO_FUNCTION_LENGTH_RULE_CONFIG, ) -from src.python.review.quality.rules.inheritance_depth_scoring import ( +from hyperstyle.src.python.review.quality.rules.inheritance_depth_scoring import ( InheritanceDepthRule, LANGUAGE_TO_INHERITANCE_DEPTH_RULE_CONFIG, ) -from src.python.review.quality.rules.line_len_scoring import LANGUAGE_TO_LINE_LENGTH_RULE_CONFIG, LineLengthRule -from src.python.review.quality.rules.maintainability_scoring import ( +from hyperstyle.src.python.review.quality.rules.line_len_scoring import ( + LANGUAGE_TO_LINE_LENGTH_RULE_CONFIG, LineLengthRule, +) +from hyperstyle.src.python.review.quality.rules.maintainability_scoring import ( LANGUAGE_TO_MAINTAINABILITY_RULE_CONFIG, MaintainabilityRule, ) -from src.python.review.quality.rules.method_number_scoring import ( +from hyperstyle.src.python.review.quality.rules.method_number_scoring import ( LANGUAGE_TO_METHOD_NUMBER_RULE_CONFIG, MethodNumberRule, ) -from src.python.review.quality.rules.weighted_methods_scoring import ( +from hyperstyle.src.python.review.quality.rules.weighted_methods_scoring import ( LANGUAGE_TO_WEIGHTED_METHODS_RULE_CONFIG, WeightedMethodsRule, ) -from src.python.review.reviewers.utils.code_statistics import CodeStatistics +from hyperstyle.src.python.review.reviewers.utils.code_statistics import CodeStatistics def __get_available_rules(language: Language) -> List[Rule]: diff --git a/src/python/review/quality/model.py b/hyperstyle/src/python/review/quality/model.py similarity index 97% rename from src/python/review/quality/model.py rename to hyperstyle/src/python/review/quality/model.py index 78291370..ca0f40b1 100644 --- a/src/python/review/quality/model.py +++ b/hyperstyle/src/python/review/quality/model.py @@ -4,7 +4,7 @@ from functools import total_ordering from typing import List -from src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.inspectors.issue import IssueType @total_ordering diff --git a/src/python/review/quality/penalty.py b/hyperstyle/src/python/review/quality/penalty.py similarity index 97% rename from src/python/review/quality/penalty.py rename to hyperstyle/src/python/review/quality/penalty.py index e8cfce2f..2add2917 100644 --- a/src/python/review/quality/penalty.py +++ b/hyperstyle/src/python/review/quality/penalty.py @@ -2,9 +2,9 @@ from dataclasses import dataclass from typing import Dict, List, Optional, Set -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import BaseIssue, IssueType -from src.python.review.quality.model import QualityType +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import BaseIssue, IssueType +from hyperstyle.src.python.review.quality.model import QualityType @dataclass(frozen=True, eq=True) diff --git a/src/python/review/reviewers/__init__.py b/hyperstyle/src/python/review/quality/rules/__init__.py similarity index 100% rename from src/python/review/reviewers/__init__.py rename to hyperstyle/src/python/review/quality/rules/__init__.py diff --git a/src/python/review/quality/rules/best_practices_scoring.py b/hyperstyle/src/python/review/quality/rules/best_practices_scoring.py similarity index 91% rename from src/python/review/quality/rules/best_practices_scoring.py rename to hyperstyle/src/python/review/quality/rules/best_practices_scoring.py index 4541ee34..7bb89411 100644 --- a/src/python/review/quality/rules/best_practices_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/best_practices_scoring.py @@ -1,9 +1,9 @@ from dataclasses import dataclass from typing import Optional -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/boolean_length_scoring.py b/hyperstyle/src/python/review/quality/rules/boolean_length_scoring.py similarity index 92% rename from src/python/review/quality/rules/boolean_length_scoring.py rename to hyperstyle/src/python/review/quality/rules/boolean_length_scoring.py index a338f081..614e778c 100644 --- a/src/python/review/quality/rules/boolean_length_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/boolean_length_scoring.py @@ -1,9 +1,9 @@ from dataclasses import dataclass from typing import Optional -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/class_response_scoring.py b/hyperstyle/src/python/review/quality/rules/class_response_scoring.py similarity index 90% rename from src/python/review/quality/rules/class_response_scoring.py rename to hyperstyle/src/python/review/quality/rules/class_response_scoring.py index d4b82fa9..9a8265a4 100644 --- a/src/python/review/quality/rules/class_response_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/class_response_scoring.py @@ -1,9 +1,9 @@ from dataclasses import dataclass from typing import Optional -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/code_style_scoring.py b/hyperstyle/src/python/review/quality/rules/code_style_scoring.py similarity index 94% rename from src/python/review/quality/rules/code_style_scoring.py rename to hyperstyle/src/python/review/quality/rules/code_style_scoring.py index 8fdabd23..d0a900a4 100644 --- a/src/python/review/quality/rules/code_style_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/code_style_scoring.py @@ -1,8 +1,8 @@ from dataclasses import dataclass -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/cohesion_scoring.py b/hyperstyle/src/python/review/quality/rules/cohesion_scoring.py similarity index 92% rename from src/python/review/quality/rules/cohesion_scoring.py rename to hyperstyle/src/python/review/quality/rules/cohesion_scoring.py index 15de7a62..fea1ce55 100644 --- a/src/python/review/quality/rules/cohesion_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/cohesion_scoring.py @@ -1,9 +1,9 @@ from dataclasses import dataclass from typing import Optional -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/complexity_scoring.py b/hyperstyle/src/python/review/quality/rules/complexity_scoring.py similarity index 91% rename from src/python/review/quality/rules/complexity_scoring.py rename to hyperstyle/src/python/review/quality/rules/complexity_scoring.py index 31083074..654462d3 100644 --- a/src/python/review/quality/rules/complexity_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/complexity_scoring.py @@ -1,9 +1,9 @@ from dataclasses import dataclass from typing import Optional -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/coupling_scoring.py b/hyperstyle/src/python/review/quality/rules/coupling_scoring.py similarity index 89% rename from src/python/review/quality/rules/coupling_scoring.py rename to hyperstyle/src/python/review/quality/rules/coupling_scoring.py index 7fb0a782..4cd9dd56 100644 --- a/src/python/review/quality/rules/coupling_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/coupling_scoring.py @@ -1,9 +1,9 @@ from dataclasses import dataclass from typing import Optional -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/cyclomatic_complexity_scoring.py b/hyperstyle/src/python/review/quality/rules/cyclomatic_complexity_scoring.py similarity index 91% rename from src/python/review/quality/rules/cyclomatic_complexity_scoring.py rename to hyperstyle/src/python/review/quality/rules/cyclomatic_complexity_scoring.py index 162284b4..4cab4a91 100644 --- a/src/python/review/quality/rules/cyclomatic_complexity_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/cyclomatic_complexity_scoring.py @@ -1,9 +1,9 @@ from dataclasses import dataclass from typing import Optional -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/error_prone_scoring.py b/hyperstyle/src/python/review/quality/rules/error_prone_scoring.py similarity index 89% rename from src/python/review/quality/rules/error_prone_scoring.py rename to hyperstyle/src/python/review/quality/rules/error_prone_scoring.py index 1ee57305..067a577e 100644 --- a/src/python/review/quality/rules/error_prone_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/error_prone_scoring.py @@ -1,9 +1,9 @@ from dataclasses import dataclass from typing import Optional -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/function_length_scoring.py b/hyperstyle/src/python/review/quality/rules/function_length_scoring.py similarity index 88% rename from src/python/review/quality/rules/function_length_scoring.py rename to hyperstyle/src/python/review/quality/rules/function_length_scoring.py index e728e9c2..db8f0fd6 100644 --- a/src/python/review/quality/rules/function_length_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/function_length_scoring.py @@ -1,9 +1,9 @@ from dataclasses import dataclass from typing import Optional -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/inheritance_depth_scoring.py b/hyperstyle/src/python/review/quality/rules/inheritance_depth_scoring.py similarity index 88% rename from src/python/review/quality/rules/inheritance_depth_scoring.py rename to hyperstyle/src/python/review/quality/rules/inheritance_depth_scoring.py index a3531afc..267e20f7 100644 --- a/src/python/review/quality/rules/inheritance_depth_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/inheritance_depth_scoring.py @@ -1,9 +1,9 @@ from dataclasses import dataclass from typing import Optional -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/line_len_scoring.py b/hyperstyle/src/python/review/quality/rules/line_len_scoring.py similarity index 92% rename from src/python/review/quality/rules/line_len_scoring.py rename to hyperstyle/src/python/review/quality/rules/line_len_scoring.py index 4ae8cc67..17d766d5 100644 --- a/src/python/review/quality/rules/line_len_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/line_len_scoring.py @@ -1,8 +1,8 @@ from dataclasses import dataclass -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/maintainability_scoring.py b/hyperstyle/src/python/review/quality/rules/maintainability_scoring.py similarity index 93% rename from src/python/review/quality/rules/maintainability_scoring.py rename to hyperstyle/src/python/review/quality/rules/maintainability_scoring.py index ade6fd4b..2b9a94fa 100644 --- a/src/python/review/quality/rules/maintainability_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/maintainability_scoring.py @@ -1,9 +1,9 @@ from dataclasses import dataclass from typing import Optional -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/method_number_scoring.py b/hyperstyle/src/python/review/quality/rules/method_number_scoring.py similarity index 92% rename from src/python/review/quality/rules/method_number_scoring.py rename to hyperstyle/src/python/review/quality/rules/method_number_scoring.py index bc15a497..f51dc86c 100644 --- a/src/python/review/quality/rules/method_number_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/method_number_scoring.py @@ -1,9 +1,9 @@ from dataclasses import dataclass from typing import Optional -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/weighted_methods_scoring.py b/hyperstyle/src/python/review/quality/rules/weighted_methods_scoring.py similarity index 92% rename from src/python/review/quality/rules/weighted_methods_scoring.py rename to hyperstyle/src/python/review/quality/rules/weighted_methods_scoring.py index 633c4839..a32a5e1a 100644 --- a/src/python/review/quality/rules/weighted_methods_scoring.py +++ b/hyperstyle/src/python/review/quality/rules/weighted_methods_scoring.py @@ -1,9 +1,9 @@ from dataclasses import dataclass from typing import Optional -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import QualityType, Rule +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/reviewers/utils/__init__.py b/hyperstyle/src/python/review/reviewers/__init__.py similarity index 100% rename from src/python/review/reviewers/utils/__init__.py rename to hyperstyle/src/python/review/reviewers/__init__.py diff --git a/src/python/review/reviewers/common.py b/hyperstyle/src/python/review/reviewers/common.py similarity index 71% rename from src/python/review/reviewers/common.py rename to hyperstyle/src/python/review/reviewers/common.py index c1ccadf6..ba79ba64 100644 --- a/src/python/review/reviewers/common.py +++ b/hyperstyle/src/python/review/reviewers/common.py @@ -1,29 +1,29 @@ from collections import defaultdict from typing import List, Optional -from src.python.review.application_config import ApplicationConfig -from src.python.review.common.language import Language -from src.python.review.common.parallel_runner import inspect_in_parallel -from src.python.review.inspectors.checkstyle.checkstyle import CheckstyleInspector -from src.python.review.inspectors.detekt.detekt import DetektInspector -from src.python.review.inspectors.eslint.eslint import ESLintInspector -from src.python.review.inspectors.flake8.flake8 import Flake8Inspector -from src.python.review.inspectors.issue import BaseIssue -from src.python.review.inspectors.pmd.pmd import PMDInspector -from src.python.review.inspectors.pyast.python_ast import PythonAstInspector -from src.python.review.inspectors.pylint.pylint import PylintInspector -from src.python.review.inspectors.radon.radon import RadonInspector -from src.python.review.quality.evaluate_quality import evaluate_quality -from src.python.review.quality.model import Quality -from src.python.review.quality.penalty import categorize, get_previous_issues_by_language, Punisher -from src.python.review.reviewers.review_result import FileReviewResult, GeneralReviewResult -from src.python.review.reviewers.utils.code_statistics import gather_code_statistics -from src.python.review.reviewers.utils.issues_filter import ( +from hyperstyle.src.python.review.application_config import ApplicationConfig +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.common.parallel_runner import inspect_in_parallel +from hyperstyle.src.python.review.inspectors.checkstyle.checkstyle import CheckstyleInspector +from hyperstyle.src.python.review.inspectors.detekt.detekt import DetektInspector +from hyperstyle.src.python.review.inspectors.eslint.eslint import ESLintInspector +from hyperstyle.src.python.review.inspectors.flake8.flake8 import Flake8Inspector +from hyperstyle.src.python.review.inspectors.issue import BaseIssue +from hyperstyle.src.python.review.inspectors.pmd.pmd import PMDInspector +from hyperstyle.src.python.review.inspectors.pyast.python_ast import PythonAstInspector +from hyperstyle.src.python.review.inspectors.pylint.pylint import PylintInspector +from hyperstyle.src.python.review.inspectors.radon.radon import RadonInspector +from hyperstyle.src.python.review.quality.evaluate_quality import evaluate_quality +from hyperstyle.src.python.review.quality.model import Quality +from hyperstyle.src.python.review.quality.penalty import categorize, get_previous_issues_by_language, Punisher +from hyperstyle.src.python.review.reviewers.review_result import FileReviewResult, GeneralReviewResult +from hyperstyle.src.python.review.reviewers.utils.code_statistics import gather_code_statistics +from hyperstyle.src.python.review.reviewers.utils.issues_filter import ( filter_duplicate_issues, filter_low_measure_issues, group_issues_by_difficulty, ) -from src.python.review.reviewers.utils.metadata_exploration import FileMetadata, Metadata +from hyperstyle.src.python.review.reviewers.utils.metadata_exploration import FileMetadata, Metadata LANGUAGE_TO_INSPECTORS = { Language.PYTHON: [ diff --git a/src/python/review/reviewers/perform_review.py b/hyperstyle/src/python/review/reviewers/perform_review.py similarity index 81% rename from src/python/review/reviewers/perform_review.py rename to hyperstyle/src/python/review/reviewers/perform_review.py index a2561d05..e3bcdb54 100644 --- a/src/python/review/reviewers/perform_review.py +++ b/hyperstyle/src/python/review/reviewers/perform_review.py @@ -4,14 +4,14 @@ from pathlib import Path from typing import Final, List -from src.python.review.application_config import ApplicationConfig -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.reviewers.common import perform_language_review -from src.python.review.reviewers.python import perform_python_review -from src.python.review.reviewers.review_result import GeneralReviewResult -from src.python.review.reviewers.utils.metadata_exploration import explore_file, explore_project -from src.python.review.reviewers.utils.print_review import ( +from hyperstyle.src.python.review.application_config import ApplicationConfig +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.reviewers.common import perform_language_review +from hyperstyle.src.python.review.reviewers.python import perform_python_review +from hyperstyle.src.python.review.reviewers.review_result import GeneralReviewResult +from hyperstyle.src.python.review.reviewers.utils.metadata_exploration import explore_file, explore_project +from hyperstyle.src.python.review.reviewers.utils.print_review import ( print_review_result_as_json, print_review_result_as_multi_file_json, print_review_result_as_text, diff --git a/src/python/review/reviewers/python.py b/hyperstyle/src/python/review/reviewers/python.py similarity index 65% rename from src/python/review/reviewers/python.py rename to hyperstyle/src/python/review/reviewers/python.py index 14d7b85e..e255f162 100644 --- a/src/python/review/reviewers/python.py +++ b/hyperstyle/src/python/review/reviewers/python.py @@ -1,12 +1,12 @@ from pathlib import Path from typing import List -from src.python.review.application_config import ApplicationConfig -from src.python.review.common.file_system import FileSystemItem, get_all_file_system_items -from src.python.review.common.language import Language -from src.python.review.reviewers.common import perform_language_review -from src.python.review.reviewers.review_result import GeneralReviewResult -from src.python.review.reviewers.utils.metadata_exploration import Metadata, ProjectMetadata +from hyperstyle.src.python.review.application_config import ApplicationConfig +from hyperstyle.src.python.review.common.file_system import FileSystemItem, get_all_file_system_items +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.reviewers.common import perform_language_review +from hyperstyle.src.python.review.reviewers.review_result import GeneralReviewResult +from hyperstyle.src.python.review.reviewers.utils.metadata_exploration import Metadata, ProjectMetadata def perform_python_review(metadata: Metadata, config: ApplicationConfig) -> GeneralReviewResult: diff --git a/src/python/review/reviewers/review_result.py b/hyperstyle/src/python/review/reviewers/review_result.py similarity index 78% rename from src/python/review/reviewers/review_result.py rename to hyperstyle/src/python/review/reviewers/review_result.py index 88854d3f..8c934008 100644 --- a/src/python/review/reviewers/review_result.py +++ b/hyperstyle/src/python/review/reviewers/review_result.py @@ -2,9 +2,9 @@ from pathlib import Path from typing import Dict, List -from src.python.review.inspectors.issue import BaseIssue, IssueDifficulty -from src.python.review.quality.model import Quality -from src.python.review.quality.penalty import Punisher +from hyperstyle.src.python.review.inspectors.issue import BaseIssue, IssueDifficulty +from hyperstyle.src.python.review.quality.model import Quality +from hyperstyle.src.python.review.quality.penalty import Punisher @dataclass diff --git a/hyperstyle/src/python/review/reviewers/utils/__init__.py b/hyperstyle/src/python/review/reviewers/utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/python/review/reviewers/utils/code_statistics.py b/hyperstyle/src/python/review/reviewers/utils/code_statistics.py similarity index 96% rename from src/python/review/reviewers/utils/code_statistics.py rename to hyperstyle/src/python/review/reviewers/utils/code_statistics.py index 23e3ee8e..11590dbe 100644 --- a/src/python/review/reviewers/utils/code_statistics.py +++ b/hyperstyle/src/python/review/reviewers/utils/code_statistics.py @@ -3,8 +3,8 @@ from pathlib import Path from typing import Dict, List -from src.python.review.common.file_system import get_total_code_lines_from_file -from src.python.review.inspectors.issue import BaseIssue, IssueType +from hyperstyle.src.python.review.common.file_system import get_total_code_lines_from_file +from hyperstyle.src.python.review.inspectors.issue import BaseIssue, IssueType @dataclass diff --git a/src/python/review/reviewers/utils/issues_filter.py b/hyperstyle/src/python/review/reviewers/utils/issues_filter.py similarity index 81% rename from src/python/review/reviewers/utils/issues_filter.py rename to hyperstyle/src/python/review/reviewers/utils/issues_filter.py index dfec89ff..5acd4517 100644 --- a/src/python/review/reviewers/utils/issues_filter.py +++ b/hyperstyle/src/python/review/reviewers/utils/issues_filter.py @@ -1,18 +1,22 @@ from collections import defaultdict from typing import Dict, List, Tuple -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import BaseIssue, IssueDifficulty, IssueType, Measurable -from src.python.review.quality.rules.boolean_length_scoring import LANGUAGE_TO_BOOLEAN_EXPRESSION_RULE_CONFIG -from src.python.review.quality.rules.class_response_scoring import LANGUAGE_TO_RESPONSE_RULE_CONFIG -from src.python.review.quality.rules.cohesion_scoring import LANGUAGE_TO_COHESION_RULE_CONFIG -from src.python.review.quality.rules.coupling_scoring import LANGUAGE_TO_COUPLING_RULE_CONFIG -from src.python.review.quality.rules.cyclomatic_complexity_scoring import LANGUAGE_TO_CYCLOMATIC_COMPLEXITY_RULE_CONFIG -from src.python.review.quality.rules.function_length_scoring import LANGUAGE_TO_FUNCTION_LENGTH_RULE_CONFIG -from src.python.review.quality.rules.inheritance_depth_scoring import LANGUAGE_TO_INHERITANCE_DEPTH_RULE_CONFIG -from src.python.review.quality.rules.maintainability_scoring import LANGUAGE_TO_MAINTAINABILITY_RULE_CONFIG -from src.python.review.quality.rules.method_number_scoring import LANGUAGE_TO_METHOD_NUMBER_RULE_CONFIG -from src.python.review.quality.rules.weighted_methods_scoring import LANGUAGE_TO_WEIGHTED_METHODS_RULE_CONFIG +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import BaseIssue, IssueDifficulty, IssueType, Measurable +from hyperstyle.src.python.review.quality.rules.boolean_length_scoring import LANGUAGE_TO_BOOLEAN_EXPRESSION_RULE_CONFIG +from hyperstyle.src.python.review.quality.rules.class_response_scoring import LANGUAGE_TO_RESPONSE_RULE_CONFIG +from hyperstyle.src.python.review.quality.rules.cohesion_scoring import LANGUAGE_TO_COHESION_RULE_CONFIG +from hyperstyle.src.python.review.quality.rules.coupling_scoring import LANGUAGE_TO_COUPLING_RULE_CONFIG +from hyperstyle.src.python.review.quality.rules.cyclomatic_complexity_scoring import ( + LANGUAGE_TO_CYCLOMATIC_COMPLEXITY_RULE_CONFIG, +) +from hyperstyle.src.python.review.quality.rules.function_length_scoring import LANGUAGE_TO_FUNCTION_LENGTH_RULE_CONFIG +from hyperstyle.src.python.review.quality.rules.inheritance_depth_scoring import ( + LANGUAGE_TO_INHERITANCE_DEPTH_RULE_CONFIG, +) +from hyperstyle.src.python.review.quality.rules.maintainability_scoring import LANGUAGE_TO_MAINTAINABILITY_RULE_CONFIG +from hyperstyle.src.python.review.quality.rules.method_number_scoring import LANGUAGE_TO_METHOD_NUMBER_RULE_CONFIG +from hyperstyle.src.python.review.quality.rules.weighted_methods_scoring import LANGUAGE_TO_WEIGHTED_METHODS_RULE_CONFIG def __get_issue_type_to_low_measure_dict(language: Language) -> Dict[IssueType, int]: diff --git a/src/python/review/reviewers/utils/metadata_exploration.py b/hyperstyle/src/python/review/reviewers/utils/metadata_exploration.py similarity index 92% rename from src/python/review/reviewers/utils/metadata_exploration.py rename to hyperstyle/src/python/review/reviewers/utils/metadata_exploration.py index 318f5328..582a1ad1 100644 --- a/src/python/review/reviewers/utils/metadata_exploration.py +++ b/hyperstyle/src/python/review/reviewers/utils/metadata_exploration.py @@ -4,8 +4,8 @@ from pathlib import Path from typing import Dict, List, Set, Union -from src.python.review.common.file_system import Extension, get_all_file_system_items -from src.python.review.common.language import guess_file_language, Language +from hyperstyle.src.python.review.common.file_system import Extension, get_all_file_system_items +from hyperstyle.src.python.review.common.language import guess_file_language, Language @dataclass diff --git a/src/python/review/reviewers/utils/print_review.py b/hyperstyle/src/python/review/reviewers/utils/print_review.py similarity index 92% rename from src/python/review/reviewers/utils/print_review.py rename to hyperstyle/src/python/review/reviewers/utils/print_review.py index 1467c45c..d8204271 100644 --- a/src/python/review/reviewers/utils/print_review.py +++ b/hyperstyle/src/python/review/reviewers/utils/print_review.py @@ -4,13 +4,13 @@ from pathlib import Path from typing import Any, Dict, List, Union -from src.python.review.application_config import ApplicationConfig -from src.python.review.common.file_system import get_file_line -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import BaseIssue, IssueDifficulty, IssueType -from src.python.review.quality.model import QualityType -from src.python.review.quality.penalty import PenaltyIssue -from src.python.review.reviewers.review_result import FileReviewResult, GeneralReviewResult, ReviewResult +from hyperstyle.src.python.review.application_config import ApplicationConfig +from hyperstyle.src.python.review.common.file_system import get_file_line +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import BaseIssue, IssueDifficulty, IssueType +from hyperstyle.src.python.review.quality.model import QualityType +from hyperstyle.src.python.review.quality.penalty import PenaltyIssue +from hyperstyle.src.python.review.reviewers.review_result import FileReviewResult, GeneralReviewResult, ReviewResult def print_review_result_as_text(review_result: GeneralReviewResult, path: Path, config: ApplicationConfig) -> None: diff --git a/src/python/review/run_tool.py b/hyperstyle/src/python/review/run_tool.py similarity index 94% rename from src/python/review/run_tool.py rename to hyperstyle/src/python/review/run_tool.py index 33c2e415..a4b8978a 100644 --- a/src/python/review/run_tool.py +++ b/hyperstyle/src/python/review/run_tool.py @@ -8,13 +8,13 @@ from typing import Set sys.path.append('') -sys.path.append('../../..') +sys.path.append('../../../..') -from src.python.common.tool_arguments import RunToolArgument, VerbosityLevel -from src.python.review.application_config import ApplicationConfig, LanguageVersion -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.logging_config import logging_config -from src.python.review.reviewers.perform_review import ( +from hyperstyle.src.python.common.tool_arguments import RunToolArgument, VerbosityLevel +from hyperstyle.src.python.review.application_config import ApplicationConfig, LanguageVersion +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.logging_config import logging_config +from hyperstyle.src.python.review.reviewers.perform_review import ( OutputFormat, PathNotExists, perform_and_print_review, diff --git a/setup.py b/setup.py index 7a119b2e..33ebde4e 100644 --- a/setup.py +++ b/setup.py @@ -18,13 +18,13 @@ def get_version() -> str: def get_inspectors_additional_files() -> List[str]: - inspectors_path = current_dir / 'src' / 'python' / 'review' / 'inspectors' + inspectors_path = current_dir / 'hyperstyle' / 'src' / 'python' / 'review' / 'inspectors' + configs = ['xml', 'yml', 'eslintrc', 'flake8', 'txt', 'pylintrc'] result = [] for root, _, files in os.walk(inspectors_path): for file in files: - if not file.endswith('.py'): + if not file.endswith('.py') and file.split('.')[-1] in configs: result.append(str(Path(root) / file)) - return result @@ -53,6 +53,7 @@ def get_requires() -> List[str]: keywords='code review', python_requires='>=3.8, <4', install_requires=get_requires(), + include_package_data=True, packages=find_packages(exclude=[ '*.unit_tests', '*.unit_tests.*', @@ -69,7 +70,7 @@ def get_requires() -> List[str]: }, entry_points={ 'console_scripts': [ - 'review=src.python.review.run_tool:main', + 'review=hyperstyle.src.python.review.run_tool:main', ], }, ) diff --git a/test/python/functional_tests/conftest.py b/test/python/functional_tests/conftest.py index 99131521..89fac5e8 100644 --- a/test/python/functional_tests/conftest.py +++ b/test/python/functional_tests/conftest.py @@ -4,8 +4,8 @@ from typing import List, Optional import pytest -from src.python import MAIN_FOLDER -from src.python.common.tool_arguments import RunToolArgument +from hyperstyle.src.python import MAIN_FOLDER +from hyperstyle.src.python.common.tool_arguments import RunToolArgument DATA_PATH = TEST_DATA_FOLDER / 'functional_tests' diff --git a/test/python/functional_tests/test_difficulty_levels.py b/test/python/functional_tests/test_difficulty_levels.py index fcbdb1a1..ccbb3ca9 100644 --- a/test/python/functional_tests/test_difficulty_levels.py +++ b/test/python/functional_tests/test_difficulty_levels.py @@ -49,7 +49,16 @@ def _get_output_json(local_command: LocalCommandBuilder, file_path: str, history 'influence_on_penalty': {'EASY': 0, 'HARD': 0, 'MEDIUM': 0}, 'line': 'class BadClass:', 'line_number': 4, - 'text': 'class has low (20.00%) cohesion', + 'text': 'Class has low (20.00%) cohesion. Cohesion measures the ' + 'strength of relationship between pieces of functionality ' + 'within a given module. When cohesion is high, the ' + 'methods and variables of the class are co-dependent and ' + 'hang together as a logical whole. However, if the task ' + 'requires implementing classes without methods, the ' + 'cohesion always will be low since all variables will be ' + 'in-dependent. Please, ignore this issue if the task ' + 'requires implement an empty class (without any ' + 'methods).', }, ], } @@ -174,7 +183,6 @@ def _get_output_json(local_command: LocalCommandBuilder, file_path: str, history ], } - ALL_DIFFICULTY_LEVEL_ISSUES = { 'quality': { 'EASY': {'code': 'GOOD', 'text': 'Code quality (beta): GOOD'}, @@ -200,7 +208,16 @@ def _get_output_json(local_command: LocalCommandBuilder, file_path: str, history 'influence_on_penalty': {'EASY': 0, 'HARD': 0, 'MEDIUM': 0}, 'line': 'class BadClass:', 'line_number': 5, - 'text': 'class has low (20.00%) cohesion', + 'text': 'Class has low (20.00%) cohesion. Cohesion measures the ' + 'strength of relationship between pieces of functionality ' + 'within a given module. When cohesion is high, the ' + 'methods and variables of the class are co-dependent and ' + 'hang together as a logical whole. However, if the task ' + 'requires implementing classes without methods, the ' + 'cohesion always will be low since all variables will be ' + 'in-dependent. Please, ignore this issue if the task ' + 'requires implement an empty class (without any ' + 'methods).', }, { 'category': 'CODE_STYLE', @@ -215,7 +232,6 @@ def _get_output_json(local_command: LocalCommandBuilder, file_path: str, history ], } - DIFFICULTY_LEVELS_TEST_DATA = [ ('file_without_issues.py', WITHOUT_ISSUES), ('file_with_only_hard_issues.py', HARD_ISSUES), @@ -262,7 +278,16 @@ def test_difficulty_levels(local_command: LocalCommandBuilder, file: str, expect 'influence_on_penalty': {'EASY': 0, 'MEDIUM': 0, 'HARD': 100}, 'line': 'class BadClass:', 'line_number': 4, - 'text': 'class has low (20.00%) cohesion', + 'text': 'Class has low (20.00%) cohesion. Cohesion measures the ' + 'strength of relationship between pieces of functionality ' + 'within a given module. When cohesion is high, the ' + 'methods and variables of the class are co-dependent and ' + 'hang together as a logical whole. However, if the task ' + 'requires implementing classes without methods, the ' + 'cohesion always will be low since all variables will be ' + 'in-dependent. Please, ignore this issue if the task ' + 'requires implement an empty class (without any ' + 'methods).', }, ], } @@ -412,7 +437,16 @@ def test_difficulty_levels(local_command: LocalCommandBuilder, file: str, expect 'influence_on_penalty': {'EASY': 0, 'MEDIUM': 0, 'HARD': 17}, 'line': 'class BadClass:', 'line_number': 5, - 'text': 'class has low (20.00%) cohesion', + 'text': 'Class has low (20.00%) cohesion. Cohesion measures the ' + 'strength of relationship between pieces of functionality ' + 'within a given module. When cohesion is high, the ' + 'methods and variables of the class are co-dependent and ' + 'hang together as a logical whole. However, if the task ' + 'requires implementing classes without methods, the ' + 'cohesion always will be low since all variables will be ' + 'in-dependent. Please, ignore this issue if the task ' + 'requires implement an empty class (without any ' + 'methods).', }, { 'category': 'CODE_STYLE', diff --git a/test/python/functional_tests/test_range_of_lines.py b/test/python/functional_tests/test_range_of_lines.py index f20b83df..7e281575 100644 --- a/test/python/functional_tests/test_range_of_lines.py +++ b/test/python/functional_tests/test_range_of_lines.py @@ -2,7 +2,7 @@ from test.python.functional_tests.conftest import DATA_PATH, LocalCommandBuilder import pytest -from src.python.review.common.subprocess_runner import run_in_subprocess +from hyperstyle.src.python.review.common.subprocess_runner import run_in_subprocess PATH_TO_FILE = DATA_PATH / 'lines_range' / 'code_with_multiple_issues.py' diff --git a/test/python/inspectors/conftest.py b/test/python/inspectors/conftest.py index f9072db7..32ff8828 100644 --- a/test/python/inspectors/conftest.py +++ b/test/python/inspectors/conftest.py @@ -5,9 +5,9 @@ from typing import Any, Dict, List import pytest -from src.python.review.common.file_system import new_temp_dir -from src.python.review.inspectors.issue import BaseIssue, IssueType -from src.python.review.reviewers.utils.metadata_exploration import explore_file, FileMetadata +from hyperstyle.src.python.review.common.file_system import new_temp_dir +from hyperstyle.src.python.review.inspectors.issue import BaseIssue, IssueType +from hyperstyle.src.python.review.reviewers.utils.metadata_exploration import explore_file, FileMetadata @pytest.fixture diff --git a/test/python/inspectors/test_checkstyle_inspector.py b/test/python/inspectors/test_checkstyle_inspector.py index 2ba7b3bd..fc56790e 100644 --- a/test/python/inspectors/test_checkstyle_inspector.py +++ b/test/python/inspectors/test_checkstyle_inspector.py @@ -4,10 +4,10 @@ from typing import List import pytest -from src.python.review.common.language import Language -from src.python.review.inspectors.checkstyle.checkstyle import CheckstyleInspector -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import ( +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.checkstyle.checkstyle import CheckstyleInspector +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import ( BoolExprLenIssue, CodeIssue, CyclomaticComplexityIssue, @@ -16,14 +16,14 @@ IssueType, LineLenIssue, ) -from src.python.review.inspectors.parsers.xml_parser import parse_xml_file_result -from src.python.review.inspectors.tips import ( +from hyperstyle.src.python.review.inspectors.parsers.xml_parser import parse_xml_file_result +from hyperstyle.src.python.review.inspectors.tips import ( get_bool_expr_len_tip, get_cyclomatic_complexity_tip, get_func_len_tip, get_line_len_tip, ) -from src.python.review.reviewers.utils.issues_filter import filter_low_measure_issues +from hyperstyle.src.python.review.reviewers.utils.issues_filter import filter_low_measure_issues FILE_NAME_AND_ISSUES = [ ('empty_file.xml', []), @@ -159,6 +159,7 @@ def test_output_parsing(file_name: str, expected_issues: List[CodeIssue]): CheckstyleInspector.choose_issue_type, IssueDifficulty.get_by_issue_type, CheckstyleInspector.origin_class_to_pattern, + {}, ) assert issues == expected_issues diff --git a/test/python/inspectors/test_detekt_inspector.py b/test/python/inspectors/test_detekt_inspector.py index e9a650c2..453b5ea8 100644 --- a/test/python/inspectors/test_detekt_inspector.py +++ b/test/python/inspectors/test_detekt_inspector.py @@ -2,9 +2,9 @@ from test.python.inspectors.conftest import use_file_metadata import pytest -from src.python.review.common.language import Language -from src.python.review.inspectors.detekt.detekt import DetektInspector -from src.python.review.reviewers.utils.issues_filter import filter_low_measure_issues +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.detekt.detekt import DetektInspector +from hyperstyle.src.python.review.reviewers.utils.issues_filter import filter_low_measure_issues FILE_NAMES_AND_N_ISSUES = [ ('case0_good_program.kt', 0), diff --git a/test/python/inspectors/test_eslint_inspector.py b/test/python/inspectors/test_eslint_inspector.py index d7aceeac..cf251b8d 100644 --- a/test/python/inspectors/test_eslint_inspector.py +++ b/test/python/inspectors/test_eslint_inspector.py @@ -2,9 +2,9 @@ from test.python.inspectors.conftest import use_file_metadata import pytest -from src.python.review.common.language import Language -from src.python.review.inspectors.eslint.eslint import ESLintInspector -from src.python.review.reviewers.utils.issues_filter import filter_low_measure_issues +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.eslint.eslint import ESLintInspector +from hyperstyle.src.python.review.reviewers.utils.issues_filter import filter_low_measure_issues FILE_NAMES_AND_N_ISSUES = [ ('case0_no_issues.js', 0), diff --git a/test/python/inspectors/test_filter_duplicate_issues.py b/test/python/inspectors/test_filter_duplicate_issues.py index 9f088530..92d17b4e 100644 --- a/test/python/inspectors/test_filter_duplicate_issues.py +++ b/test/python/inspectors/test_filter_duplicate_issues.py @@ -1,8 +1,8 @@ from pathlib import Path -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import CodeIssue, IssueDifficulty, IssueType -from src.python.review.reviewers.utils.issues_filter import filter_duplicate_issues +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import CodeIssue, IssueDifficulty, IssueType +from hyperstyle.src.python.review.reviewers.utils.issues_filter import filter_duplicate_issues def test_filter_duplicate_issues_when_single_inspector() -> None: diff --git a/test/python/inspectors/test_flake8_inspector.py b/test/python/inspectors/test_flake8_inspector.py index 4f3b6c2a..269f5ede 100644 --- a/test/python/inspectors/test_flake8_inspector.py +++ b/test/python/inspectors/test_flake8_inspector.py @@ -3,10 +3,10 @@ from textwrap import dedent import pytest -from src.python.review.common.language import Language -from src.python.review.inspectors.flake8.flake8 import Flake8Inspector -from src.python.review.inspectors.issue import IssueType -from src.python.review.reviewers.utils.issues_filter import filter_low_measure_issues +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.flake8.flake8 import Flake8Inspector +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.reviewers.utils.issues_filter import filter_low_measure_issues FILE_NAMES_AND_N_ISSUES = [ ('case0_spaces.py', 5), diff --git a/test/python/inspectors/test_local_review.py b/test/python/inspectors/test_local_review.py index 0d5583ee..6fc09fa6 100644 --- a/test/python/inspectors/test_local_review.py +++ b/test/python/inspectors/test_local_review.py @@ -3,9 +3,9 @@ from test.python.inspectors import PYTHON_DATA_FOLDER import pytest -from src.python.review.application_config import ApplicationConfig -from src.python.review.quality.model import QualityType -from src.python.review.reviewers.perform_review import OutputFormat, PathNotExists, perform_and_print_review +from hyperstyle.src.python.review.application_config import ApplicationConfig +from hyperstyle.src.python.review.quality.model import QualityType +from hyperstyle.src.python.review.reviewers.perform_review import OutputFormat, PathNotExists, perform_and_print_review Args = namedtuple('Args', [ 'path', diff --git a/test/python/inspectors/test_out_of_range_issues.py b/test/python/inspectors/test_out_of_range_issues.py index b5751d05..0dc60493 100644 --- a/test/python/inspectors/test_out_of_range_issues.py +++ b/test/python/inspectors/test_out_of_range_issues.py @@ -1,8 +1,8 @@ from pathlib import Path -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import BaseIssue, CodeIssue, IssueDifficulty, IssueType -from src.python.review.reviewers.common import filter_out_of_range_issues +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import BaseIssue, CodeIssue, IssueDifficulty, IssueType +from hyperstyle.src.python.review.reviewers.common import filter_out_of_range_issues DEFAULT_PATH = Path('test_out_of_range_issues.py') diff --git a/test/python/inspectors/test_pmd_inspector.py b/test/python/inspectors/test_pmd_inspector.py index e4688c66..575ce08a 100644 --- a/test/python/inspectors/test_pmd_inspector.py +++ b/test/python/inspectors/test_pmd_inspector.py @@ -3,9 +3,9 @@ from typing import List import pytest -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import CodeIssue, IssueDifficulty, IssueType -from src.python.review.inspectors.pmd.pmd import PMDInspector +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import CodeIssue, IssueDifficulty, IssueType +from hyperstyle.src.python.review.inspectors.pmd.pmd import PMDInspector from .conftest import use_file_metadata diff --git a/test/python/inspectors/test_pylint_inspector.py b/test/python/inspectors/test_pylint_inspector.py index fc381234..8d9a4214 100644 --- a/test/python/inspectors/test_pylint_inspector.py +++ b/test/python/inspectors/test_pylint_inspector.py @@ -2,8 +2,8 @@ from test.python.inspectors import PYTHON_DATA_FOLDER import pytest -from src.python.review.inspectors.issue import IssueType -from src.python.review.inspectors.pylint.pylint import PylintInspector +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.inspectors.pylint.pylint import PylintInspector from .conftest import use_file_metadata diff --git a/test/python/inspectors/test_python_ast.py b/test/python/inspectors/test_python_ast.py index 880e4775..584363c5 100644 --- a/test/python/inspectors/test_python_ast.py +++ b/test/python/inspectors/test_python_ast.py @@ -3,8 +3,8 @@ from test.python.inspectors.conftest import use_file_metadata import pytest -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.pyast.python_ast import ( +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.pyast.python_ast import ( BoolExpressionLensGatherer, FunctionLensGatherer, PythonAstInspector, diff --git a/test/python/inspectors/test_radon_inspector.py b/test/python/inspectors/test_radon_inspector.py index 4ed41e1e..00343e63 100644 --- a/test/python/inspectors/test_radon_inspector.py +++ b/test/python/inspectors/test_radon_inspector.py @@ -3,11 +3,11 @@ from textwrap import dedent import pytest -from src.python.review.common.language import Language -from src.python.review.inspectors.issue import IssueType -from src.python.review.inspectors.radon.radon import RadonInspector -from src.python.review.inspectors.tips import get_maintainability_index_tip -from src.python.review.reviewers.utils.issues_filter import filter_low_measure_issues +from hyperstyle.src.python.review.common.language import Language +from hyperstyle.src.python.review.inspectors.issue import IssueType +from hyperstyle.src.python.review.inspectors.radon.radon import RadonInspector +from hyperstyle.src.python.review.inspectors.tips import get_maintainability_index_tip +from hyperstyle.src.python.review.reviewers.utils.issues_filter import filter_low_measure_issues FILE_NAMES_AND_N_ISSUES = [ diff --git a/test/python/quality/test_penalty.py b/test/python/quality/test_penalty.py index 70717302..0947c46d 100644 --- a/test/python/quality/test_penalty.py +++ b/test/python/quality/test_penalty.py @@ -2,9 +2,9 @@ from typing import List, Set import pytest -from src.python.review.inspectors.inspector_type import InspectorType -from src.python.review.inspectors.issue import BaseIssue, IssueDifficulty, IssueType -from src.python.review.quality.penalty import categorize, PreviousIssue, Punisher +from hyperstyle.src.python.review.inspectors.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.issue import BaseIssue, IssueDifficulty, IssueType +from hyperstyle.src.python.review.quality.penalty import categorize, PreviousIssue, Punisher punisher = Punisher([], [])