From 40708e456091bfeaced944fb9a0fc8c36210673b Mon Sep 17 00:00:00 2001 From: "anastasia.birillo" Date: Thu, 22 Jun 2023 16:57:46 +0200 Subject: [PATCH] Fix issues --- .../review/inspectors/ij_python/ij_client.py | 8 +++++--- .../inspectors/ij_python/ij_inspections.py | 17 +++++++++++++---- .../inspectors/ij_python/issue_configs.py | 8 ++++++++ .../review/inspectors/ij_python/issue_types.py | 6 +++--- .../python/review/inspectors/inspector_type.py | 4 ++++ 5 files changed, 33 insertions(+), 10 deletions(-) create mode 100644 hyperstyle/src/python/review/inspectors/ij_python/issue_configs.py diff --git a/hyperstyle/src/python/review/inspectors/ij_python/ij_client.py b/hyperstyle/src/python/review/inspectors/ij_python/ij_client.py index 2317a7c5..023865e7 100644 --- a/hyperstyle/src/python/review/inspectors/ij_python/ij_client.py +++ b/hyperstyle/src/python/review/inspectors/ij_python/ij_client.py @@ -3,6 +3,8 @@ import hyperstyle.src.python.review.inspectors.ij_python.proto.model_pb2 as model_pb2 import hyperstyle.src.python.review.inspectors.ij_python.proto.model_pb2_grpc as model_pb2_grpc +TIMEOUT = 1 + class IJClient(object): def __init__(self, host: str = 'localhost', port: int = 8080): @@ -14,14 +16,14 @@ def __init__(self, host: str = 'localhost', port: int = 8080): # bind the client and the server try: - grpc.channel_ready_future(self.channel).result(timeout=60) + grpc.channel_ready_future(self.channel).result(timeout=TIMEOUT) except grpc.FutureTimeoutError: raise Exception("Failed to connect to ij code server") else: self.stub = model_pb2_grpc.CodeInspectionServiceStub(self.channel) def inspect(self, code: model_pb2.Code) -> model_pb2.InspectionResult: - return self.stub.inspect(code, timeout=60) + return self.stub.inspect(code, timeout=TIMEOUT) def init(self, service: model_pb2.Service) -> model_pb2.InitResult: - return self.stub.init(service, timeout=60) + return self.stub.init(service, timeout=TIMEOUT) diff --git a/hyperstyle/src/python/review/inspectors/ij_python/ij_inspections.py b/hyperstyle/src/python/review/inspectors/ij_python/ij_inspections.py index d521c3d9..a4f86aeb 100644 --- a/hyperstyle/src/python/review/inspectors/ij_python/ij_inspections.py +++ b/hyperstyle/src/python/review/inspectors/ij_python/ij_inspections.py @@ -7,11 +7,14 @@ from hyperstyle.src.python.review.common.language import Language from hyperstyle.src.python.review.inspectors.base_inspector import BaseInspector import hyperstyle.src.python.review.inspectors.ij_python.proto.model_pb2 as model_pb2 +from hyperstyle.src.python.review.inspectors.common.base_issue_converter import convert_base_issue from hyperstyle.src.python.review.inspectors.ij_python.ij_client import IJClient +from hyperstyle.src.python.review.inspectors.ij_python.issue_configs import ISSUE_CONFIGS from hyperstyle.src.python.review.inspectors.ij_python.issue_types import IJ_PYTHON_CODE_TO_ISSUE_TYPE, \ ISSUE_TYPE_EXCEPTIONS 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.issue_configs import IssueConfigsHandler CODE_SERVER_HOST = "CODE_SERVER_HOST" CODE_SERVER_PORT = "CODE_SERVER_PORT" @@ -51,10 +54,10 @@ def choose_issue_type(inspector: str, description: str) -> IssueType: def convert_to_base_issues(self, inspection_result: model_pb2.InspectionResult, file_path: Path) -> List[BaseIssue]: base_issues = [] + issue_configs_handler = IssueConfigsHandler(*ISSUE_CONFIGS) for problem in inspection_result.problems: issue_type = self.choose_issue_type(problem.inspector, problem.name) - base_issues.append( - BaseIssue( + base_issue = BaseIssue( origin_class=problem.inspector, type=issue_type, description=problem.name, @@ -63,8 +66,14 @@ def convert_to_base_issues(self, inspection_result: model_pb2.InspectionResult, column_no=problem.offset, inspector_type=InspectorType.IJ_PYTHON, difficulty=IssueDifficulty.get_by_issue_type(issue_type), - ), - ) + ) + + issue = convert_base_issue(base_issue, issue_configs_handler) + if issue is None: + logger.error(f'{self.inspector_type.value}: an error occurred during converting a base issue.') + continue + + base_issues.append(base_issue) return base_issues diff --git a/hyperstyle/src/python/review/inspectors/ij_python/issue_configs.py b/hyperstyle/src/python/review/inspectors/ij_python/issue_configs.py new file mode 100644 index 00000000..89278d91 --- /dev/null +++ b/hyperstyle/src/python/review/inspectors/ij_python/issue_configs.py @@ -0,0 +1,8 @@ +from hyperstyle.src.python.review.inspectors.issue_configs import IssueConfig + +ISSUE_CONFIGS = [ + IssueConfig( + origin_class='E128', + new_description='Incorrect indent', + ), +] diff --git a/hyperstyle/src/python/review/inspectors/ij_python/issue_types.py b/hyperstyle/src/python/review/inspectors/ij_python/issue_types.py index 0cb4a873..0bb9e166 100644 --- a/hyperstyle/src/python/review/inspectors/ij_python/issue_types.py +++ b/hyperstyle/src/python/review/inspectors/ij_python/issue_types.py @@ -18,6 +18,9 @@ 'PyProtectedMemberInspection': IssueType.BEST_PRACTICES, 'PyMethodMayBeStaticInspection': IssueType.BEST_PRACTICES, 'PyChainedComparisonsInspection': IssueType.BEST_PRACTICES, + 'PyGlobalUndefinedInspection': IssueType.BEST_PRACTICES, + 'PyComparisonWithNoneInspection': IssueType.BEST_PRACTICES, + 'PyShadowingNamesInspection': IssueType.BEST_PRACTICES, # CODE_STYLE 'PyRedundantParenthesesInspection': IssueType.CODE_STYLE, @@ -36,11 +39,9 @@ 'PyAsyncCallInspection': IssueType.ERROR_PRONE, 'PyByteLiteralInspection': IssueType.ERROR_PRONE, 'PyCallingNonCallableInspection': IssueType.ERROR_PRONE, - 'PyComparisonWithNoneInspection': IssueType.ERROR_PRONE, 'PyDictDuplicateKeysInspection': IssueType.ERROR_PRONE, 'PyExceptClausesOrderInspection': IssueType.ERROR_PRONE, 'PyFinalInspection': IssueType.ERROR_PRONE, - 'PyGlobalUndefinedInspection': IssueType.ERROR_PRONE, 'PyArgumentListInspection': IssueType.ERROR_PRONE, 'PyMethodFirstArgAssignmentInspection': IssueType.ERROR_PRONE, 'PyStringFormatInspection': IssueType.ERROR_PRONE, @@ -56,7 +57,6 @@ 'PyDecoratorInspection': IssueType.ERROR_PRONE, 'PyTypeCheckerInspection': IssueType.ERROR_PRONE, 'PyNoneFunctionAssignmentInspection': IssueType.ERROR_PRONE, - 'PyShadowingNamesInspection': IssueType.ERROR_PRONE, 'PyAbstractClassInspection': IssueType.ERROR_PRONE, 'PyOverloadsInspection': IssueType.ERROR_PRONE, 'PyTypeHintsInspection': IssueType.ERROR_PRONE, diff --git a/hyperstyle/src/python/review/inspectors/inspector_type.py b/hyperstyle/src/python/review/inspectors/inspector_type.py index 88082ed4..6574aee4 100644 --- a/hyperstyle/src/python/review/inspectors/inspector_type.py +++ b/hyperstyle/src/python/review/inspectors/inspector_type.py @@ -26,6 +26,8 @@ class InspectorType(Enum): UNDEFINED = 'UNDEFINED' QODANA = 'QODANA' + # TODO: it is used on production for java inspections, remove in the future releases + IJ_OLD = 'INTELLIJ' @classmethod def available_values(cls) -> List[str]: @@ -49,4 +51,6 @@ def available_values(cls) -> List[str]: # Go language cls.GOLANG_LINT.value, + + cls.IJ_OLD.value, ]