diff --git a/bears/configfiles/GixyBear.py b/bears/configfiles/GixyBear.py new file mode 100644 index 0000000000..d177da6339 --- /dev/null +++ b/bears/configfiles/GixyBear.py @@ -0,0 +1,32 @@ +import json + +from coalib.bearlib.abstractions.Linter import linter +from dependency_management.requirements.PipRequirement import PipRequirement +from coalib.results.RESULT_SEVERITY import RESULT_SEVERITY +from coalib.results.Result import Result + + +@linter(executable='gixy') +class GixyBear: + """ + A wrapper for coala around Gixy + + see for more information about the tool + """ + REQUIREMENTS={PipRequirement('gixy', '0.1.*')} + + severity_map = {'HIGH': RESULT_SEVERITY.MAJOR, + 'MEDIUM': RESULT_SEVERITY.NORMAL, + 'LOW': RESULT_SEVERITY.INFO} + + @staticmethod + def create_arguments(filename, file, config_file): + return ('--format=json', filename) + + def process_output(self, output, filename, file): + output = json.loads(output) if output else [] + for issue in output: + yield Result.from_values(origin=self, + message=issue['summary'], + severity=self.severity_map[issue['severity']], + file=filename) diff --git a/tests/configfiles/GixyBearTest.py b/tests/configfiles/GixyBearTest.py new file mode 100644 index 0000000000..e76281a948 --- /dev/null +++ b/tests/configfiles/GixyBearTest.py @@ -0,0 +1,26 @@ +import os + +from bears.configfiles.GixyBear import GixyBear +from coalib.testing.LocalBearTestHelper import verify_local_bear + +good_file = """ +server { + location ~ \.(gif|jpg|png)$ { + root /data/images; + } +} +""" + +bad_file = """ +http{ + server{ + location ~ /proxy/(.*)/(.*)/(.*)$ { + proxy_pass $1://$2/$3; + } + } +} +""" + +GixyBearTest = verify_local_bear(GixyBear, + valid_files = (good_file, ), + invalid_files = (bad_file, ))