diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4cc2a22b..c08b6e9f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,7 +27,7 @@ jobs: # stop the build if there are Python syntax errors or undefined names flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude=.git,__pycache__,docs/source/conf.py,old,build,dist,venv,test/resources,.eggs,review.egg-info,.pytest_cache,node_modules # TODO: change max-complexity into 10 after refactoring - flake8 . --count --max-complexity=11 --max-line-length=120 --max-doc-length=120 --ignore=I201,I202,I101,I100,R504,A003,E800,SC200,SC100,E402,W503,WPS,H601 --statistics --exclude=.git,__pycache__,docs/source/conf.py,old,build,dist,venv,test/resources,.eggs,review.egg-info,.pytest_cache,node_modules + flake8 . --count --max-complexity=11 --max-line-length=120 --max-doc-length=120 --ignore=R504,A003,E800,E402,W503,WPS,H601 --statistics --exclude=.git,__pycache__,docs/source/conf.py,old,build,dist,venv,test/resources,.eggs,review.egg-info,.pytest_cache,node_modules - name: Set up Eslint run: | npm install eslint --save-dev diff --git a/requirements-test.txt b/requirements-test.txt index d0ec886e..4a15ceb8 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -1,8 +1,8 @@ -pytest~=5.4.3 +pytest~=6.2.3 pytest-runner pytest-subtests jsonschema==3.2.0 -Django~=3.0.8 -pylint~=2.5.3 -requests~=2.24.0 -setuptools~=47.3.1 \ No newline at end of file +Django~=3.2 +pylint~=2.7.4 +requests~=2.25.1 +setuptools~=56.0.0 \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 60409ee1..d5a07c54 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,20 +1,20 @@ -setuptools==47.3.1 +setuptools==56.0.0 # python code analysis tools -pylint==2.5.3 -pylint-django==2.0.15 -flake8==3.8.3 +pylint==2.7.4 +pylint-django==2.3.0 +flake8==3.9.0 # flake8 plugins -flake8-bugbear==20.1.4 +flake8-bugbear==21.4.3 flake8-builtins==1.5.3 -flake8-comprehensions==3.2.3 -flake8-eradicate==0.4.0 +flake8-comprehensions==3.4.0 +flake8-eradicate==1.0.0 flake8-import-order==0.18.1 -flake8-plugin-utils==1.3.0 +flake8-plugin-utils==1.3.1 flake8-polyfill==1.0.2 -flake8-return==1.1.1 -flake8-spellcheck==0.14.0 +flake8-return==1.1.2 +flake8-spellcheck==0.24.0 mccabe==0.6.1 pep8-naming==0.11.1 wps-light==0.15.2 @@ -25,5 +25,5 @@ cohesion==1.0.0 radon==4.5.0 # extra libraries and frameworks -django==3.0.8 -requests==2.24.0 \ No newline at end of file +django==3.2 +requests==2.25.1 diff --git a/src/python/review/application_config.py b/src/python/review/application_config.py index c678605f..41a1c296 100644 --- a/src/python/review/application_config.py +++ b/src/python/review/application_config.py @@ -1,6 +1,6 @@ from dataclasses import dataclass from enum import Enum, unique -from typing import Optional, Set, List +from typing import List, Optional, Set from src.python.review.inspectors.inspector_type import InspectorType diff --git a/src/python/review/common/file_system.py b/src/python/review/common/file_system.py index 3faa962c..764a2d5e 100644 --- a/src/python/review/common/file_system.py +++ b/src/python/review/common/file_system.py @@ -4,7 +4,7 @@ from contextlib import contextmanager from enum import Enum, unique from pathlib import Path -from typing import List, Union, Callable +from typing import Callable, List, Union @unique diff --git a/src/python/review/inspectors/flake8/.flake8 b/src/python/review/inspectors/flake8/.flake8 index cc3e69cb..2ad4f70f 100644 --- a/src/python/review/inspectors/flake8/.flake8 +++ b/src/python/review/inspectors/flake8/.flake8 @@ -1,5 +1,8 @@ [flake8] disable_noqa=True + +dictionaries=en_US,python,technical,django + ignore=W291, # trailing whitespaces W292, # no newline at end of file W293, # blank line contains whitespaces diff --git a/src/python/review/inspectors/flake8/flake8.py b/src/python/review/inspectors/flake8/flake8.py index b974015c..5745a75f 100644 --- a/src/python/review/inspectors/flake8/flake8.py +++ b/src/python/review/inspectors/flake8/flake8.py @@ -5,18 +5,18 @@ 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 ( BaseIssue, CodeIssue, + CohesionIssue, CyclomaticComplexityIssue, - IssueType, IssueData, - CohesionIssue, + IssueType, ) from src.python.review.inspectors.tips import get_cyclomatic_complexity_tip -from src.python.review.inspectors.common import convert_percentage_of_value_to_lack_of_value logger = logging.getLogger(__name__) diff --git a/src/python/review/inspectors/intellij/issue_types/__init__.py b/src/python/review/inspectors/intellij/issue_types/__init__.py index 3482d8b4..97b8d31e 100644 --- a/src/python/review/inspectors/intellij/issue_types/__init__.py +++ b/src/python/review/inspectors/intellij/issue_types/__init__.py @@ -1,18 +1,15 @@ from typing import Dict -from src.python.review.inspectors.issue import IssueType - from src.python.review.inspectors.intellij.issue_types.java import ( ISSUE_CLASS_TO_ISSUE_TYPE as JAVA_ISSUE_CLASS_TO_ISSUE_TYPE, ) - from src.python.review.inspectors.intellij.issue_types.kotlin import ( ISSUE_CLASS_TO_ISSUE_TYPE as KOTLIN_ISSUE_CLASS_TO_ISSUE_TYPE, ) - from src.python.review.inspectors.intellij.issue_types.python import ( ISSUE_CLASS_TO_ISSUE_TYPE as PYTHON_ISSUE_CLASS_TO_ISSUE_TYPE, ) +from src.python.review.inspectors.issue import IssueType ISSUE_CLASS_TO_ISSUE_TYPE: Dict[str, IssueType] = { **JAVA_ISSUE_CLASS_TO_ISSUE_TYPE, diff --git a/src/python/review/inspectors/parsers/checkstyle_parser.py b/src/python/review/inspectors/parsers/checkstyle_parser.py index cae3593f..1db9874c 100644 --- a/src/python/review/inspectors/parsers/checkstyle_parser.py +++ b/src/python/review/inspectors/parsers/checkstyle_parser.py @@ -1,23 +1,21 @@ import logging import re from pathlib import Path -from typing import Callable, Dict, List, Any, Optional +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 ( BaseIssue, BoolExprLenIssue, CodeIssue, CyclomaticComplexityIssue, FuncLenIssue, + IssueData, IssueType, LineLenIssue, - IssueData, ) - from src.python.review.inspectors.tips import ( get_bool_expr_len_tip, get_cyclomatic_complexity_tip, diff --git a/src/python/review/inspectors/radon/radon.py b/src/python/review/inspectors/radon/radon.py index fb2bf299..f6a2236d 100644 --- a/src/python/review/inspectors/radon/radon.py +++ b/src/python/review/inspectors/radon/radon.py @@ -4,9 +4,9 @@ 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 BaseIssue, IssueData, IssueType, MaintainabilityLackIssue -from src.python.review.inspectors.common import convert_percentage_of_value_to_lack_of_value from src.python.review.inspectors.tips import get_maintainability_index_tip diff --git a/src/python/review/inspectors/springlint/springlint.py b/src/python/review/inspectors/springlint/springlint.py index cc90c487..b5eca5a4 100644 --- a/src/python/review/inspectors/springlint/springlint.py +++ b/src/python/review/inspectors/springlint/springlint.py @@ -3,13 +3,12 @@ import re from pathlib import Path from shutil import copy -from typing import AnyStr, List, Optional, Dict, Any +from typing import Any, AnyStr, Dict, List, Optional 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.inspector_type import InspectorType - from src.python.review.inspectors.issue import ( BaseIssue, ChildrenNumberIssue, @@ -18,12 +17,11 @@ CohesionIssue, CouplingIssue, InheritanceIssue, + IssueData, IssueType, MethodNumberIssue, WeightedMethodIssue, - IssueData, ) - from src.python.review.inspectors.tips import ( get_child_number_tip, get_class_coupling_tip, diff --git a/src/python/review/quality/evaluate_quality.py b/src/python/review/quality/evaluate_quality.py index 3861d3b3..b6329653 100644 --- a/src/python/review/quality/evaluate_quality.py +++ b/src/python/review/quality/evaluate_quality.py @@ -13,6 +13,10 @@ ) 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 ( + CohesionRule, + LANGUAGE_TO_COHESION_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 ( CyclomaticComplexityRule, @@ -28,6 +32,10 @@ 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 ( + LANGUAGE_TO_MAINTAINABILITY_RULE_CONFIG, + MaintainabilityRule, +) from src.python.review.quality.rules.method_number_scoring import ( LANGUAGE_TO_METHOD_NUMBER_RULE_CONFIG, MethodNumberRule, @@ -37,14 +45,6 @@ WeightedMethodsRule, ) from src.python.review.reviewers.utils.code_statistics import CodeStatistics -from src.python.review.quality.rules.cohesion_scoring import ( - LANGUAGE_TO_COHESION_RULE_CONFIG, - CohesionRule, -) -from src.python.review.quality.rules.maintainability_scoring import ( - LANGUAGE_TO_MAINTAINABILITY_RULE_CONFIG, - MaintainabilityRule, -) def __get_available_rules(language: Language) -> List[Rule]: diff --git a/src/python/review/quality/model.py b/src/python/review/quality/model.py index 6e64ea81..7a57dcf6 100644 --- a/src/python/review/quality/model.py +++ b/src/python/review/quality/model.py @@ -50,7 +50,7 @@ def quality_type(self) -> QualityType: def next_quality_type(self) -> QualityType: return min(map(lambda rule: rule.next_level_type, self.rules), default=QualityType.EXCELLENT) - # TODO@nbirillo: why rule.quality_type == quality_type for next level???? + # TODO: why rule.quality_type == quality_type for next level???? @property def next_level_requirements(self) -> List[Rule]: quality_type = self.quality_type diff --git a/src/python/review/quality/rules/cohesion_scoring.py b/src/python/review/quality/rules/cohesion_scoring.py index c73a426b..623fd2db 100644 --- a/src/python/review/quality/rules/cohesion_scoring.py +++ b/src/python/review/quality/rules/cohesion_scoring.py @@ -3,7 +3,7 @@ from src.python.review.common.language import Language from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import Rule, QualityType +from src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/quality/rules/maintainability_scoring.py b/src/python/review/quality/rules/maintainability_scoring.py index 456e7b0a..ade6fd4b 100644 --- a/src/python/review/quality/rules/maintainability_scoring.py +++ b/src/python/review/quality/rules/maintainability_scoring.py @@ -3,7 +3,7 @@ from src.python.review.common.language import Language from src.python.review.inspectors.issue import IssueType -from src.python.review.quality.model import Rule, QualityType +from src.python.review.quality.model import QualityType, Rule @dataclass diff --git a/src/python/review/reviewers/common.py b/src/python/review/reviewers/common.py index d7385fe5..9340d824 100644 --- a/src/python/review/reviewers/common.py +++ b/src/python/review/reviewers/common.py @@ -8,11 +8,11 @@ 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.radon.radon import RadonInspector 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.reviewers.review_result import FileReviewResult, ReviewResult diff --git a/src/python/review/reviewers/python.py b/src/python/review/reviewers/python.py index a239913a..d51b526a 100644 --- a/src/python/review/reviewers/python.py +++ b/src/python/review/reviewers/python.py @@ -2,7 +2,7 @@ from typing import List from src.python.review.application_config import ApplicationConfig -from src.python.review.common.file_system import get_all_file_system_items, FileSystemItem +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 ReviewResult diff --git a/src/python/review/reviewers/utils/code_statistics.py b/src/python/review/reviewers/utils/code_statistics.py index d8dd7b38..19218a7b 100644 --- a/src/python/review/reviewers/utils/code_statistics.py +++ b/src/python/review/reviewers/utils/code_statistics.py @@ -1,7 +1,7 @@ from collections import Counter from dataclasses import dataclass from pathlib import Path -from typing import List, Dict +from typing import Dict, List from src.python.review.common.file_system import get_content_from_file from src.python.review.inspectors.issue import BaseIssue, IssueType diff --git a/src/python/review/reviewers/utils/issues_filter.py b/src/python/review/reviewers/utils/issues_filter.py index a952998c..b6e5529e 100644 --- a/src/python/review/reviewers/utils/issues_filter.py +++ b/src/python/review/reviewers/utils/issues_filter.py @@ -5,14 +5,14 @@ from src.python.review.inspectors.issue import BaseIssue, 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 src.python.review.quality.rules.cohesion_scoring import LANGUAGE_TO_COHESION_RULE_CONFIG -from src.python.review.quality.rules.maintainability_scoring import LANGUAGE_TO_MAINTAINABILITY_RULE_CONFIG def __get_issue_type_to_low_measure_dict(language: Language) -> Dict[IssueType, int]: diff --git a/src/python/review/run_tool.py b/src/python/review/run_tool.py index 1b879972..0d96f6e8 100644 --- a/src/python/review/run_tool.py +++ b/src/python/review/run_tool.py @@ -5,7 +5,7 @@ import traceback from enum import Enum, unique from pathlib import Path -from typing import Set, List +from typing import List, Set sys.path.append('') sys.path.append('../../..') @@ -13,7 +13,6 @@ 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 ( OutputFormat, PathNotExists, diff --git a/test/python/functional_tests/conftest.py b/test/python/functional_tests/conftest.py index eea5a9ab..da01adde 100644 --- a/test/python/functional_tests/conftest.py +++ b/test/python/functional_tests/conftest.py @@ -1,11 +1,10 @@ from dataclasses import dataclass, field from pathlib import Path +from test.python import TEST_DATA_FOLDER from typing import List, Optional import pytest - from src.python import MAIN_FOLDER -from test.python import TEST_DATA_FOLDER DATA_PATH = TEST_DATA_FOLDER / 'functional_tests' diff --git a/test/python/functional_tests/test_different_languages.py b/test/python/functional_tests/test_different_languages.py index 935df678..c55e56f9 100644 --- a/test/python/functional_tests/test_different_languages.py +++ b/test/python/functional_tests/test_different_languages.py @@ -1,5 +1,4 @@ import subprocess - from test.python.functional_tests.conftest import DATA_PATH, LocalCommandBuilder diff --git a/test/python/functional_tests/test_disable.py b/test/python/functional_tests/test_disable.py index ffacbec1..7967e1bc 100644 --- a/test/python/functional_tests/test_disable.py +++ b/test/python/functional_tests/test_disable.py @@ -1,5 +1,4 @@ import subprocess - from test.python.functional_tests.conftest import DATA_PATH, LocalCommandBuilder diff --git a/test/python/functional_tests/test_duplicates.py b/test/python/functional_tests/test_duplicates.py index 153a3ac7..9158e030 100644 --- a/test/python/functional_tests/test_duplicates.py +++ b/test/python/functional_tests/test_duplicates.py @@ -1,6 +1,5 @@ import re import subprocess - from test.python.functional_tests.conftest import DATA_PATH, LocalCommandBuilder diff --git a/test/python/functional_tests/test_exit_code.py b/test/python/functional_tests/test_exit_code.py index bd24d250..4d5dad1a 100644 --- a/test/python/functional_tests/test_exit_code.py +++ b/test/python/functional_tests/test_exit_code.py @@ -1,6 +1,5 @@ import subprocess from pathlib import Path - from test.python.functional_tests.conftest import DATA_PATH, LocalCommandBuilder diff --git a/test/python/functional_tests/test_file_or_project.py b/test/python/functional_tests/test_file_or_project.py index bd9d1d74..074c77aa 100644 --- a/test/python/functional_tests/test_file_or_project.py +++ b/test/python/functional_tests/test_file_or_project.py @@ -1,5 +1,4 @@ import subprocess - from test.python.functional_tests.conftest import DATA_PATH, LocalCommandBuilder diff --git a/test/python/functional_tests/test_multi_file_project.py b/test/python/functional_tests/test_multi_file_project.py index 246f4f42..86a029d1 100644 --- a/test/python/functional_tests/test_multi_file_project.py +++ b/test/python/functional_tests/test_multi_file_project.py @@ -1,6 +1,5 @@ import json import subprocess - from test.python.functional_tests.conftest import DATA_PATH, LocalCommandBuilder EXPECTED_JSON = { diff --git a/test/python/functional_tests/test_range_of_lines.py b/test/python/functional_tests/test_range_of_lines.py index 57b5530d..1ef4a8f5 100644 --- a/test/python/functional_tests/test_range_of_lines.py +++ b/test/python/functional_tests/test_range_of_lines.py @@ -1,9 +1,8 @@ import json +from test.python.functional_tests.conftest import DATA_PATH, LocalCommandBuilder import pytest - from src.python.review.common.subprocess_runner import run_in_subprocess -from test.python.functional_tests.conftest import DATA_PATH, LocalCommandBuilder PATH_TO_FILE = DATA_PATH / 'lines_range' / 'code_with_multiple_issues.py' @@ -14,23 +13,23 @@ }, 'issues': [{ 'category': 'CODE_STYLE', - 'code': 'C0326', + 'code': 'E225', 'column_number': 2, 'line': 'a=10', 'line_number': 1, - 'text': 'Exactly one space required around assignment'}, + 'text': 'missing whitespace around operator'}, {'category': 'CODE_STYLE', - 'code': 'C0326', + 'code': 'E225', 'column_number': 2, 'line': 'b=20', 'line_number': 2, - 'text': 'Exactly one space required around assignment'}, + 'text': 'missing whitespace around operator'}, {'category': 'CODE_STYLE', - 'code': 'C0326', + 'code': 'E225', 'column_number': 2, 'line': 'c=a + b', 'line_number': 4, - 'text': 'Exactly one space required around assignment', + 'text': 'missing whitespace around operator', }, ], } @@ -80,8 +79,8 @@ def test_range_filter_when_start_line_is_not_first( 'code': 'MODERATE', 'text': 'Code quality (beta): MODERATE'}, 'issues': [{ - 'code': 'C0326', - 'text': 'Exactly one space required around assignment', + 'code': 'E225', + 'text': 'missing whitespace around operator', 'line': 'c=a + b', 'line_number': 4, 'column_number': 2, @@ -148,8 +147,8 @@ def test_range_filter_when_end_line_is_first( 'text': 'Code quality (beta): MODERATE', }, 'issues': [{ - 'code': 'C0326', - 'text': 'Exactly one space required around assignment', + 'code': 'E225', + 'text': 'missing whitespace around operator', 'line': 'a=10', 'line_number': 1, 'column_number': 2, @@ -214,15 +213,15 @@ def test_range_filter_when_both_start_and_end_lines_specified_not_equal_borders( 'text': 'Code quality (beta): BAD', }, 'issues': [{ - 'code': 'C0326', - 'text': 'Exactly one space required around assignment', + 'code': 'E225', + 'text': 'missing whitespace around operator', 'line': 'b=20', 'line_number': 2, 'column_number': 2, 'category': 'CODE_STYLE', }, { - 'code': 'C0326', - 'text': 'Exactly one space required around assignment', + 'code': 'E225', + 'text': 'missing whitespace around operator', 'line': 'c=a + b', 'line_number': 4, 'column_number': 2, diff --git a/test/python/functional_tests/test_single_file_json_format.py b/test/python/functional_tests/test_single_file_json_format.py index 48d8f14d..85616145 100644 --- a/test/python/functional_tests/test_single_file_json_format.py +++ b/test/python/functional_tests/test_single_file_json_format.py @@ -1,10 +1,9 @@ import json import subprocess +from test.python.functional_tests.conftest import DATA_PATH, LocalCommandBuilder from jsonschema import validate -from test.python.functional_tests.conftest import DATA_PATH, LocalCommandBuilder - schema = { 'type': 'object', 'properties': { diff --git a/test/python/functional_tests/test_verbosity.py b/test/python/functional_tests/test_verbosity.py index bed69f90..e835258b 100644 --- a/test/python/functional_tests/test_verbosity.py +++ b/test/python/functional_tests/test_verbosity.py @@ -1,6 +1,5 @@ import json import subprocess - from test.python.functional_tests.conftest import DATA_PATH, LocalCommandBuilder diff --git a/test/python/inspectors/conftest.py b/test/python/inspectors/conftest.py index d3df943c..f9072db7 100644 --- a/test/python/inspectors/conftest.py +++ b/test/python/inspectors/conftest.py @@ -5,7 +5,6 @@ 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 diff --git a/test/python/inspectors/test_checkstyle_inspector.py b/test/python/inspectors/test_checkstyle_inspector.py index 892ec97f..ce7040aa 100644 --- a/test/python/inspectors/test_checkstyle_inspector.py +++ b/test/python/inspectors/test_checkstyle_inspector.py @@ -1,10 +1,10 @@ -import pytest +from test.python.inspectors import JAVA_DATA_FOLDER +from test.python.inspectors.conftest import gather_issues_test_info, IssuesTestInfo, use_file_metadata +import pytest from src.python.review.common.language import Language from src.python.review.inspectors.checkstyle.checkstyle import CheckstyleInspector from src.python.review.reviewers.utils.issues_filter import filter_low_measure_issues -from test.python.inspectors import JAVA_DATA_FOLDER -from test.python.inspectors.conftest import gather_issues_test_info, IssuesTestInfo, use_file_metadata FILE_NAMES_AND_N_ISSUES = [ ('test_simple_valid_program.java', 0), diff --git a/test/python/inspectors/test_detekt_inspector.py b/test/python/inspectors/test_detekt_inspector.py index 4dbafd2d..61d05200 100644 --- a/test/python/inspectors/test_detekt_inspector.py +++ b/test/python/inspectors/test_detekt_inspector.py @@ -1,10 +1,10 @@ -import pytest +from test.python.inspectors import KOTLIN_DATA_FOLDER +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 test.python.inspectors import KOTLIN_DATA_FOLDER -from test.python.inspectors.conftest import use_file_metadata 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 076c76a0..a69f30e5 100644 --- a/test/python/inspectors/test_eslint_inspector.py +++ b/test/python/inspectors/test_eslint_inspector.py @@ -1,10 +1,10 @@ -import pytest +from test.python.inspectors import JS_DATA_FOLDER +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 test.python.inspectors import JS_DATA_FOLDER -from test.python.inspectors.conftest import use_file_metadata FILE_NAMES_AND_N_ISSUES = [ ('case0_no_issues.js', 0), diff --git a/test/python/inspectors/test_flake8_inspector.py b/test/python/inspectors/test_flake8_inspector.py index be211040..3208d633 100644 --- a/test/python/inspectors/test_flake8_inspector.py +++ b/test/python/inspectors/test_flake8_inspector.py @@ -1,12 +1,12 @@ -import pytest +from test.python.inspectors import PYTHON_DATA_FOLDER +from test.python.inspectors.conftest import gather_issues_test_info, IssuesTestInfo, use_file_metadata 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 test.python.inspectors import PYTHON_DATA_FOLDER -from test.python.inspectors.conftest import gather_issues_test_info, IssuesTestInfo, use_file_metadata FILE_NAMES_AND_N_ISSUES = [ ('case0_spaces.py', 5), @@ -25,7 +25,7 @@ ('case14_returns_errors.py', 4), ('case16_comments.py', 0), ('case17_dangerous_default_value.py', 1), - ('case18_comprehensions.py', 10), + ('case18_comprehensions.py', 9), ('case19_bad_indentation.py', 3), ('case21_imports.py', 2), ('case25_django.py', 0), diff --git a/test/python/inspectors/test_local_review.py b/test/python/inspectors/test_local_review.py index e1e028e6..5b182540 100644 --- a/test/python/inspectors/test_local_review.py +++ b/test/python/inspectors/test_local_review.py @@ -1,13 +1,12 @@ import json from collections import namedtuple +from test.python.inspectors import PYTHON_DATA_FOLDER import pytest - from src.python.review.application_config import ApplicationConfig from src.python.review.inspectors.inspector_type import InspectorType from src.python.review.quality.model import QualityType from src.python.review.reviewers.perform_review import OutputFormat, PathNotExists, perform_and_print_review -from test.python.inspectors import PYTHON_DATA_FOLDER Args = namedtuple('Args', [ 'path', @@ -24,7 +23,7 @@ def config() -> ApplicationConfig: disabled_inspectors={InspectorType.INTELLIJ}, allow_duplicates=False, n_cpu=1, - inspectors_config=dict(n_cpu=1), + inspectors_config={"n_cpu": 1}, ) diff --git a/test/python/inspectors/test_pmd_inspector.py b/test/python/inspectors/test_pmd_inspector.py index 18b13af4..393a2d46 100644 --- a/test/python/inspectors/test_pmd_inspector.py +++ b/test/python/inspectors/test_pmd_inspector.py @@ -1,7 +1,8 @@ -import pytest +from test.python.inspectors import JAVA_DATA_FOLDER +import pytest from src.python.review.inspectors.pmd.pmd import PMDInspector -from test.python.inspectors import JAVA_DATA_FOLDER + from .conftest import use_file_metadata FILE_NAMES_AND_N_ISSUES = [ diff --git a/test/python/inspectors/test_pylint_inspector.py b/test/python/inspectors/test_pylint_inspector.py index ab807765..ba4be12f 100644 --- a/test/python/inspectors/test_pylint_inspector.py +++ b/test/python/inspectors/test_pylint_inspector.py @@ -1,14 +1,14 @@ import textwrap +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 test.python.inspectors import PYTHON_DATA_FOLDER + from .conftest import use_file_metadata FILE_NAMES_AND_N_ISSUES = [ - ('case0_spaces.py', 3), + ('case0_spaces.py', 0), ('case1_simple_valid_program.py', 0), ('case2_boolean_expressions.py', 3), ('case3_redefining_builtin.py', 2), @@ -24,7 +24,7 @@ ('case15_redefining.py', 2), ('case16_comments.py', 0), ('case17_dangerous_default_value.py', 1), - ('case18_comprehensions.py', 2), + ('case18_comprehensions.py', 3), ('case19_bad_indentation.py', 2), ('case21_imports.py', 2), ('case23_merging_comparisons.py', 4), diff --git a/test/python/inspectors/test_python_ast.py b/test/python/inspectors/test_python_ast.py index fed3c542..880e4775 100644 --- a/test/python/inspectors/test_python_ast.py +++ b/test/python/inspectors/test_python_ast.py @@ -1,18 +1,15 @@ import ast +from test.python.inspectors import PYTHON_AST_DATA_FOLDER, PYTHON_DATA_FOLDER +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 ( BoolExpressionLensGatherer, FunctionLensGatherer, PythonAstInspector, ) -from test.python.inspectors import PYTHON_DATA_FOLDER, PYTHON_AST_DATA_FOLDER -from test.python.inspectors.conftest import use_file_metadata - FILE_NAMES_AND_N_ISSUES = [ ('case0_spaces.py', 0), ('case1_simple_valid_program.py', 0), diff --git a/test/python/inspectors/test_radon_inspector.py b/test/python/inspectors/test_radon_inspector.py index 72fd03e7..4ed41e1e 100644 --- a/test/python/inspectors/test_radon_inspector.py +++ b/test/python/inspectors/test_radon_inspector.py @@ -1,14 +1,14 @@ +from test.python.inspectors import PYTHON_DATA_FOLDER +from test.python.inspectors.conftest import use_file_metadata 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.reviewers.utils.issues_filter import filter_low_measure_issues -from test.python.inspectors import PYTHON_DATA_FOLDER -from test.python.inspectors.conftest import use_file_metadata from src.python.review.inspectors.tips import get_maintainability_index_tip +from src.python.review.reviewers.utils.issues_filter import filter_low_measure_issues + FILE_NAMES_AND_N_ISSUES = [ ("case13_complex_logic.py", 1), diff --git a/test/python/inspectors/test_springlint_inspector.py b/test/python/inspectors/test_springlint_inspector.py index 18ee8dfb..673aa30c 100644 --- a/test/python/inspectors/test_springlint_inspector.py +++ b/test/python/inspectors/test_springlint_inspector.py @@ -1,6 +1,7 @@ +from test.python.inspectors import SPRING_DATA_FOLDER + from src.python.review.inspectors.issue import IssueType from src.python.review.inspectors.springlint.springlint import SpringlintInspector -from test.python.inspectors import SPRING_DATA_FOLDER def test_controller_with_smells(): diff --git a/test/resources/inspectors/python/case18_comprehensions.py b/test/resources/inspectors/python/case18_comprehensions.py index 3ed9be6f..4365018e 100644 --- a/test/resources/inspectors/python/case18_comprehensions.py +++ b/test/resources/inspectors/python/case18_comprehensions.py @@ -11,7 +11,7 @@ dict(((1, 2),)) # {1: 2} -sum([x ** 2 for x in range(10)]) # sum(x ** 2 for x in range(10)) +sum([x ** 2 for x in range(10)]) # we allow this since flake8-comprehension 3.4.0 (see its changelog) test_dict = dict() # we allow this test_list = list() # we allow this diff --git a/whitelist.txt b/whitelist.txt index c2473e99..a36bef18 100644 --- a/whitelist.txt +++ b/whitelist.txt @@ -54,6 +54,25 @@ unlink utils param params +changelog +multiline +sqrt +WPS +OOP +mccabe +mcs +dicts +misrefactored +src +textwrap +dedent +maintainabilities +parsers +fs +KTS +nl +splitext +dirname # Springlint issues cbo dit @@ -61,5 +80,3 @@ lcom noc nom wmc -multiline -sqrt