35 lines
1.5 KiB
Python
35 lines
1.5 KiB
Python
from joj3_config_generator.models.result import Stage as ResultStage
|
|
from joj3_config_generator.models.task import Stage as TaskStage
|
|
|
|
|
|
def fix_keyword(task_stage: TaskStage, conf_stage: ResultStage) -> ResultStage:
|
|
keyword_parser = ["clangtidy", "keyword", "cppcheck"] # TODO: may add cpplint
|
|
for parser in task_stage.parsers:
|
|
if parser in keyword_parser:
|
|
keyword_parser_ = next(p for p in conf_stage.parsers if p.name == parser)
|
|
keyword_weight = []
|
|
if getattr(task_stage, parser, None) is not None:
|
|
for _, keyword in enumerate(getattr(task_stage, parser).keyword):
|
|
keyword_weight.append({"keyword": [keyword], "score": 0})
|
|
for idx, weight in enumerate(getattr(task_stage, parser).weight):
|
|
keyword_weight[idx]["score"] = weight
|
|
|
|
keyword_parser_.with_.update({"match": keyword_weight})
|
|
else:
|
|
continue
|
|
return conf_stage
|
|
|
|
|
|
def fix_comment(task_stage: TaskStage, conf_stage: ResultStage) -> ResultStage:
|
|
comment_parser = ["dummy", "result-status"]
|
|
for parser in task_stage.parsers:
|
|
if parser in comment_parser:
|
|
comment_parser_ = next(p for p in conf_stage.parsers if p.name == parser)
|
|
if getattr(task_stage, parser.replace("-", "_"), None) is not None:
|
|
comment_parser_.with_.update(
|
|
getattr(task_stage, parser.replace("-", "_"))
|
|
)
|
|
else:
|
|
continue
|
|
return conf_stage
|