Skip to content

Commit e035f69

Browse files
committed
add rule metadata to results set
1 parent a91d084 commit e035f69

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

src/codemodder/result.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
from libcst._position import CodeRange
1212
from typing_extensions import Self
1313

14-
from codemodder.codetf import Finding, Rule
14+
from codemodder.codetf import Finding
15+
from codemodder.codetf import Rule as CodetfRule
1516

1617
from .utils.abc_dataclass import ABCDataclass
1718

@@ -176,18 +177,33 @@ def fuzzy_column_match(pos: CodeRange, location: Location) -> bool:
176177
)
177178

178179

179-
class ResultSet(dict[str, dict[Path, list[Result]]]):
180-
results_for_rule: dict[str, list[Result]]
180+
class Rule(CodetfRule):
181+
short_description: str = ""
182+
full_description: str = ""
183+
help: str = ""
184+
181185

182-
def __init__(self, *args, **kwargs):
183-
super().__init__(*args, **kwargs)
184-
self.results_for_rule = {}
186+
class ResultSet(dict[str, dict[Path, list[Result]]]):
187+
results_for_rule: dict[str, list[Result]] = {}
188+
metadata_for_rule: dict[str, list[Rule]] = {}
185189

186190
def add_result(self, result: Result):
187191
self.results_for_rule.setdefault(result.rule_id, []).append(result)
188192
for loc in result.locations:
189193
self.setdefault(result.rule_id, {}).setdefault(loc.file, []).append(result)
190194

195+
def add_rule_metadata(self, rule_data: dict):
196+
if (rule_id := rule_data["id"]) not in self.metadata_for_rule:
197+
rule = Rule(
198+
id=rule_id,
199+
name=rule_data["name"],
200+
short_description=rule_data.get("shortDescription", {}).get("text", ""),
201+
full_description=rule_data.get("fullDescription", {}).get("text", ""),
202+
help=rule_data.get("help", {}).get("text", "")
203+
or rule_data.get("help", {}).get("markdown", ""),
204+
)
205+
self.metadata_for_rule[rule_id] = rule
206+
191207
def results_for_rule_and_file(
192208
self, context: CodemodExecutionContext, rule_id: str, file: Path
193209
) -> list[Result]:

0 commit comments

Comments
 (0)