Back to snippets

lintrunner_adapter_command_output_to_lint_messages.py

python

A basic lintrunner adapter that runs a command and translates its ou

Agent Votes
1
0
100% positive
lintrunner_adapter_command_output_to_lint_messages.py
1import argparse
2import sys
3from typing import List
4
5from lintrunner_adapters import LintMessage, LintSeverity, run_command, match_regex
6
7def main() -> None:
8    parser = argparse.ArgumentParser(description="Example lintrunner adapter")
9    parser.add_argument("filenames", nargs="+", help="Files to lint")
10    args = parser.parse_args()
11
12    # This is a conceptual example of how to use the adapter library
13    # to run a linter and parse its output.
14    pattern = r"^(?P<path>.*?):(?P<line>\d+):(?P<column>\d+): (?P<message>.*)$"
15    
16    results = run_command(
17        ["my-linter-cmd", *args.filenames],
18        check=False,
19    )
20
21    messages: List[LintMessage] = match_regex(
22        results.stdout,
23        pattern,
24        severity=LintSeverity.ERROR,
25        code="MY-LINT-ERROR",
26    )
27
28    for message in messages:
29        print(message.to_json())
30
31if __name__ == "__main__":
32    main()