def METHOD_NAME(lines):
    def bold(s):
        return '\x1b[1m{}\x1b[0m'.format(s)
    def red(s):
        return '\x1b[31m{}\x1b[0m'.format(s)
    def green(s):
        return '\x1b[32m{}\x1b[0m'.format(s)
    def yellow(s):
        return '\x1b[33m{}\x1b[0m'.format(s)
    def blue(s):
        return '\x1b[34m{}\x1b[0m'.format(s)
    def magenta(s):  # purple
        return '\x1b[35m{}\x1b[0m'.format(s)
    def cyan(s):
        return '\x1b[36m{}\x1b[0m'.format(s)
    def format_severity(txt, severity):
        """
        http://cppcheck.sourceforge.net/devinfo/doxyoutput/classSeverity.html
        enum:
            none, error, warning, style, performance,
            portability, information, debug
        """
        if severity == "none":
            return txt
        if severity == "error":
            return red(txt)
        if severity == "warning":
            return yellow(txt)
        if severity == 'style':
            return blue(txt)
        if severity == "performance":
            return cyan(txt)
        if severity == "portability":
            return magenta(txt)
        if severity == "information":
            return green(txt)
        if severity == "debug":
            return txt
        return txt
    re_message = re.compile(r'\[(?P<file>.*):(?P<line>.*?)\]:'
                            r'\((?P<severity>.*?)\),\[(?P<id>.*?)\],'
                            r'(?P<message>.*)')
    colored_lines = []
    matched_messages = []
    colored_lines = []
    matched_messages = []
    for line in lines:
        m = re_message.match(line)
        if m:
            d = m.groupdict()
            matched_messages.append(d)
        else:
            colored_lines.append(red(line))
    severity_order = ['error', 'warning', 'performance', 'portability',
                      'style', 'information', 'debug', 'none']
    counter = Counter(d['severity'] for d in matched_messages)
    summary_line = "\n\n==========================================\n"
    summary_line += "             {}:\n".format(bold(red("CPPCHECK Summary")))
    summary_line += "------------------------------------------"
    for severity in severity_order:
        n_severity = counter[severity]
        summary_line += "\n * "
        if n_severity:
            summary_line += format_severity(n_severity, severity)
        else:
            # summary_line += green("No {}(s)".format(severity))
            summary_line += green("No")
        summary_line += " {}(s)".format(format_severity(severity, severity))
    summary_line += "\n==========================================\n\n"
    n_errors = counter['error']
    # if n_errors:
    #     summary_line += red("{} Errors".format(n_errors))
    # else:
    #     summary_line = green("No Errors")
    n_warnings = counter['warning']
    # if n_warnings:
    #     summary_line += yellow("{} Warnings".format(n_warnings))
    # else:
    #     summary_line = green("No Warnings")
    n_styles = counter['style']
    n_performances = counter['performance']
    n_portabilities = counter['portability']
    # n_informations = counter['information']
    # n_debugs = counter['debug']
    # Start by sorting by filename
    matched_messages.sort(key=lambda d: d['file'])
    matched_messages.sort(key=lambda d: severity_order.index(d['severity']))
    # Now sort by the severity we cared about
    for d in matched_messages:
        f = d['file']
        line = d['line']
        severity = d['severity']
        iid = d['id']
        message = d['message']
        colored_lines.append(
            "[{f}:{line}]:({severity}),[{i}],{message}"
            .format(f=magenta(f),  # format_severity(f, severity),
                    line=green(line),
                    severity=format_severity(severity, severity),
                    i=bold(iid),
                    message=message))
    return (colored_lines, summary_line, n_errors, n_warnings,
            n_performances, n_portabilities, n_styles)