From ec023ee07b7d5f15b9b62d8f5ca4d698eefe2015 Mon Sep 17 00:00:00 2001 From: meanmail Date: Mon, 23 Sep 2024 16:20:48 +0200 Subject: [PATCH] Add Java IntelliJ Inspector Introduce Java IJ inspector with necessary configurations and update the common reviewer logic to include it. Bump version to 1.6.0 and handle missing connection parameters with an exception instead of a warning. --- .../common/inspector/inspector_type.py | 2 ++ .../review/inspectors/ij_java/__init__.py | 0 .../review/inspectors/ij_java/ij_python.py | 18 ++++++++++++++++++ .../review/inspectors/ij_java/issue_configs.py | 3 +++ .../review/inspectors/ij_java/issue_types.py | 5 +++++ .../src/python/review/reviewers/common.py | 18 +++++++----------- pyproject.toml | 2 +- test/python/functional_tests/conftest.py | 1 + 8 files changed, 37 insertions(+), 12 deletions(-) create mode 100644 hyperstyle/src/python/review/inspectors/ij_java/__init__.py create mode 100644 hyperstyle/src/python/review/inspectors/ij_java/ij_python.py create mode 100644 hyperstyle/src/python/review/inspectors/ij_java/issue_configs.py create mode 100644 hyperstyle/src/python/review/inspectors/ij_java/issue_types.py diff --git a/hyperstyle/src/python/review/inspectors/common/inspector/inspector_type.py b/hyperstyle/src/python/review/inspectors/common/inspector/inspector_type.py index b9b9cb28..fdd3c66f 100644 --- a/hyperstyle/src/python/review/inspectors/common/inspector/inspector_type.py +++ b/hyperstyle/src/python/review/inspectors/common/inspector/inspector_type.py @@ -15,6 +15,7 @@ class InspectorType(Enum): # Java language PMD = "PMD" CHECKSTYLE = "CHECKSTYLE" + IJ_JAVA = "IJ_JAVA" # Kotlin language DETEKT = "DETEKT" @@ -43,6 +44,7 @@ def available_values(cls) -> list[str]: # Java language cls.PMD.value, cls.CHECKSTYLE.value, + cls.IJ_JAVA.value, # Kotlin language cls.DETEKT.value, cls.IJ_KOTLIN.value, diff --git a/hyperstyle/src/python/review/inspectors/ij_java/__init__.py b/hyperstyle/src/python/review/inspectors/ij_java/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/hyperstyle/src/python/review/inspectors/ij_java/ij_python.py b/hyperstyle/src/python/review/inspectors/ij_java/ij_python.py new file mode 100644 index 00000000..5b3c43aa --- /dev/null +++ b/hyperstyle/src/python/review/inspectors/ij_java/ij_python.py @@ -0,0 +1,18 @@ +from __future__ import annotations + +from hyperstyle.src.python.review.inspectors.common.inspector.base_inspector import BaseIJInspector +from hyperstyle.src.python.review.inspectors.common.inspector.inspector_type import InspectorType +from hyperstyle.src.python.review.inspectors.common.inspector.proto import model_pb2 +from hyperstyle.src.python.review.inspectors.ij_java.issue_configs import ISSUE_CONFIGS +from hyperstyle.src.python.review.inspectors.ij_java.issue_types import ( + IJ_INSPECTION_TO_ISSUE_TYPE, + IJ_MESSAGE_TO_ISSUE_TYPE, +) + + +class JavaIJInspector(BaseIJInspector): + inspector_type = InspectorType.IJ_JAVA + language_id = model_pb2.LanguageId.Java + issue_configs = ISSUE_CONFIGS + ij_inspection_to_issue_type = IJ_INSPECTION_TO_ISSUE_TYPE + ij_message_to_issue_type = IJ_MESSAGE_TO_ISSUE_TYPE diff --git a/hyperstyle/src/python/review/inspectors/ij_java/issue_configs.py b/hyperstyle/src/python/review/inspectors/ij_java/issue_configs.py new file mode 100644 index 00000000..234cb4f8 --- /dev/null +++ b/hyperstyle/src/python/review/inspectors/ij_java/issue_configs.py @@ -0,0 +1,3 @@ +from __future__ import annotations + +ISSUE_CONFIGS = [] diff --git a/hyperstyle/src/python/review/inspectors/ij_java/issue_types.py b/hyperstyle/src/python/review/inspectors/ij_java/issue_types.py new file mode 100644 index 00000000..5c0fe456 --- /dev/null +++ b/hyperstyle/src/python/review/inspectors/ij_java/issue_types.py @@ -0,0 +1,5 @@ +from __future__ import annotations + +IJ_INSPECTION_TO_ISSUE_TYPE = {} + +IJ_MESSAGE_TO_ISSUE_TYPE = {} diff --git a/hyperstyle/src/python/review/reviewers/common.py b/hyperstyle/src/python/review/reviewers/common.py index 8b2a5388..bf92adf4 100644 --- a/hyperstyle/src/python/review/reviewers/common.py +++ b/hyperstyle/src/python/review/reviewers/common.py @@ -1,7 +1,6 @@ from __future__ import annotations import json -import logging from collections import defaultdict from typing import TYPE_CHECKING @@ -17,6 +16,7 @@ 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.golang_lint.golang_lint import GolangLintInspector +from hyperstyle.src.python.review.inspectors.ij_java.ij_python import JavaIJInspector from hyperstyle.src.python.review.inspectors.ij_kotlin.ij_kotlin import KotlinIJInspector from hyperstyle.src.python.review.inspectors.ij_python.ij_python import PythonIJInspector from hyperstyle.src.python.review.inspectors.pmd.pmd import PMDInspector @@ -55,6 +55,7 @@ Language.JAVA: [ CheckstyleInspector(), PMDInspector(), + JavaIJInspector(), ], Language.KOTLIN: [ DetektInspector(), @@ -85,18 +86,13 @@ def _inspect_code( None if config.ij_config is None else json.loads(config.ij_config).get(language.value.lower()) ) if ij_inspectors and connection_parameters is None: - logging.warning( - f"IJ inspectors for the {language.value} will be disabled " - f"as the IJ config for this language was not specified.", + msg = f"Connection parameters for {language.value} inspectors are not provided" + raise ValueError(msg) + for inspector in ij_inspectors: + inspector.setup_connection_parameters( + connection_parameters["host"], connection_parameters["port"] ) - config.disabled_inspectors.update(inspector.inspector_type for inspector in ij_inspectors) - else: - for inspector in ij_inspectors: - inspector.setup_connection_parameters( - connection_parameters["host"], connection_parameters["port"] - ) - if isinstance(metadata, InMemoryMetadata): return inspect_in_parallel(run_inspector_in_memory, metadata.code, config, inspectors) diff --git a/pyproject.toml b/pyproject.toml index 2627a7a8..d115279d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "hyperstyle" -version = "1.5.0" +version = "1.6.0" description = "A tool for running a set of pre-configured linters and evaluating code quality." authors = ["Hyperskill Team"] readme = "README.md" diff --git a/test/python/functional_tests/conftest.py b/test/python/functional_tests/conftest.py index 38994df1..0c876567 100644 --- a/test/python/functional_tests/conftest.py +++ b/test/python/functional_tests/conftest.py @@ -47,6 +47,7 @@ def build(self) -> list[str]: # TODO: remove after adding a test server self.disable.append(InspectorType.IJ_PYTHON.value) self.disable.append(InspectorType.IJ_KOTLIN.value) + self.disable.append(InspectorType.IJ_JAVA.value) if self.disable: command.extend([RunToolArgument.DISABLE.value.long_name, ",".join(self.disable)])