Source code for flakeheaven.formatters._gitlab
# built-in
import json
from pathlib import Path
# external
from flake8.formatting.base import BaseFormatter
# app
from .._logic import make_baseline
[docs]class GitlabFormatter(BaseFormatter):
error_format = '{code} {text}'
[docs] def handle(self, error):
# redefined to never output source
line = self.format(error)
self._write(line)
[docs] def format(self, error):
filename = error.filename
digest = make_baseline(
path=Path(filename),
code=error.code,
line=error.line_number,
context=error.physical_line,
)
text = self.error_format.format(code=error.code, text=error.text)
# docs.gitlab.com/ee/user/project/merge_requests/code_quality.html
result = json.dumps(dict(
description=text,
fingerprint=digest,
severity='info',
location={
'path': filename,
'lines': dict(begin=error.line_number),
},
))
if self._first_line:
self._first_line = False
else:
result = ',\n' + result
return result