Files
2013-04-04 08:54:25 -04:00

38 lines
1.3 KiB
Python

# -*- coding: utf-8 -*-
# cpp.py - sublimelint package for checking C++ files
import re
from base_linter import BaseLinter, INPUT_METHOD_TEMP_FILE
CONFIG = {
'language': 'C',
'executable': 'cppcheck',
'lint_args': ['--enable=style', '--quiet', '{filename}'],
'input_method': INPUT_METHOD_TEMP_FILE
}
class Linter(BaseLinter):
CPPCHECK_RE = re.compile(r'\[.+?:(\d+?)\](.+)')
def __init__(self, config):
super(Linter, self).__init__(config)
def parse_errors(self, view, errors, lines, errorUnderlines,
violationUnderlines, warningUnderlines,
errorMessages, violationMessages,
warningMessages):
# Go through each line in the output of cppcheck
for line in errors.splitlines():
match = self.CPPCHECK_RE.match(line)
if match:
# The regular expression matches the line number and
# the message as its two groups.
lineno, message = match.group(1), match.group(2)
# Remove the colon at the beginning of the message
if len(message) > 0 and message[0] == ':':
message = message[1:].strip()
lineno = int(lineno)
self.add_message(lineno, lines, message, errorMessages)