From f44a0f9f2f1b31d51abca2c9c4df84fe1f9f5103 Mon Sep 17 00:00:00 2001 From: Daniel D'Avella Date: Wed, 26 Mar 2025 15:40:34 -0400 Subject: [PATCH 1/2] SarifResult class should not be abstract --- src/codemodder/result.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/codemodder/result.py b/src/codemodder/result.py index aeb97eee..bd9a7a53 100644 --- a/src/codemodder/result.py +++ b/src/codemodder/result.py @@ -96,7 +96,7 @@ class SASTResult(Result): @dataclass(frozen=True, kw_only=True) -class SarifResult(SASTResult, ABCDataclass): +class SarifResult(SASTResult): location_type: ClassVar[Type[SarifLocation]] @classmethod @@ -122,9 +122,9 @@ def from_sarif( ) @classmethod - @abstractmethod - def rule_url_from_id(cls, result: dict, run: dict, rule_id: str) -> str: - raise NotImplementedError + def rule_url_from_id(cls, result: dict, run: dict, rule_id: str) -> str | None: + del result, run, rule_id + return None @classmethod def extract_locations(cls, sarif_result) -> Sequence[Location]: From cd899da04ad69bcd8fcc1dfaad68a603d734b874 Mon Sep 17 00:00:00 2001 From: Daniel D'Avella Date: Thu, 27 Mar 2025 09:09:13 -0400 Subject: [PATCH 2/2] Add finding message extraction --- src/codemodder/result.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/codemodder/result.py b/src/codemodder/result.py index bd9a7a53..1c238e48 100644 --- a/src/codemodder/result.py +++ b/src/codemodder/result.py @@ -97,6 +97,7 @@ class SASTResult(Result): @dataclass(frozen=True, kw_only=True) class SarifResult(SASTResult): + finding_msg: str | None = None location_type: ClassVar[Type[SarifLocation]] @classmethod @@ -119,8 +120,13 @@ def from_sarif( url=cls.rule_url_from_id(sarif_result, sarif_run, rule_id), ), ), + finding_msg=cls.extract_finding_message(sarif_result, sarif_run), ) + @classmethod + def extract_finding_message(cls, sarif_result: dict, sarif_run: dict) -> str | None: + return sarif_result.get("message", {}).get("text", None) + @classmethod def rule_url_from_id(cls, result: dict, run: dict, rule_id: str) -> str | None: del result, run, rule_id