Use a class for errors
This commit is contained in:
parent
beb4f1ae54
commit
2a4026212d
2 changed files with 36 additions and 10 deletions
22
main.py
22
main.py
|
@ -2,6 +2,8 @@ import re
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from src.errors import ClangError
|
||||||
|
|
||||||
|
|
||||||
def clang_format(file_path):
|
def clang_format(file_path):
|
||||||
command = ["clang-format", "--dry-run", file_path]
|
command = ["clang-format", "--dry-run", file_path]
|
||||||
|
@ -21,7 +23,7 @@ def clang_format(file_path):
|
||||||
return output
|
return output
|
||||||
|
|
||||||
|
|
||||||
def parse_clang_format_output(output):
|
def parse_clang_format_output(output) -> None | list[ClangError]:
|
||||||
error_pattern = (
|
error_pattern = (
|
||||||
r"(?P<filename>.+):(?P<line_number>\d+):(?P<column_number>\d+):"
|
r"(?P<filename>.+):(?P<line_number>\d+):(?P<column_number>\d+):"
|
||||||
+ r" warning: code should be clang-formatted \[(?P<warning_message>.+)\]"
|
+ r" warning: code should be clang-formatted \[(?P<warning_message>.+)\]"
|
||||||
|
@ -37,12 +39,12 @@ def parse_clang_format_output(output):
|
||||||
warning_message = error_match.group("warning_message")
|
warning_message = error_match.group("warning_message")
|
||||||
|
|
||||||
errors.append(
|
errors.append(
|
||||||
{
|
ClangError(
|
||||||
"filename": filename,
|
filename,
|
||||||
"line_number": line_number,
|
line_number,
|
||||||
"column_number": column_number,
|
column_number,
|
||||||
"warning_message": warning_message[1:],
|
warning_message[1:],
|
||||||
}
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
return errors
|
return errors
|
||||||
|
@ -57,8 +59,8 @@ if __name__ == "__main__":
|
||||||
if parsed_output:
|
if parsed_output:
|
||||||
for error in parsed_output:
|
for error in parsed_output:
|
||||||
print(
|
print(
|
||||||
f"Warning dans {error['filename']} à la ligne {error['line_number']},"
|
f"Avertissement dans {error.filename} à la ligne {error.line_number},"
|
||||||
+ f" caractère {error['column_number']} : {error['warning_message']}"
|
+ f" caractère {error.column_number} : {error.warning_message}"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
print("No warnings found.")
|
print("Aucun avertissement trouvé.")
|
||||||
|
|
24
src/errors.py
Normal file
24
src/errors.py
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
class ClangError:
|
||||||
|
def __init__(
|
||||||
|
self, filename: str, line_number: int, column_number: int, warning_message: str
|
||||||
|
) -> None:
|
||||||
|
self._filename = filename
|
||||||
|
self._line_number = line_number
|
||||||
|
self._column_number = column_number
|
||||||
|
self._warning_message = warning_message
|
||||||
|
|
||||||
|
@property
|
||||||
|
def filename(self) -> str:
|
||||||
|
return self._filename
|
||||||
|
|
||||||
|
@property
|
||||||
|
def line_number(self) -> int:
|
||||||
|
return self._line_number
|
||||||
|
|
||||||
|
@property
|
||||||
|
def column_number(self) -> int:
|
||||||
|
return self._column_number
|
||||||
|
|
||||||
|
@property
|
||||||
|
def warning_message(self) -> str:
|
||||||
|
return self._warning_message
|
Reference in a new issue