class ScanSpdx:
    spdx_file = None
    scan_results = None

    def __init__(self, spdx_file):
        """Initializes class variables"""
        self.spdx_file = spdx_file

    def scan(self):
        """Scans an spdx file by making good use of spdx_scanner.py file; then outputs the results in xml format."""
        spdx_file = self.spdx_file
        spdx_scan_result = local(
            'python -s spdx_scanner.py -s 10571 {spdx_file}'.format(
                spdx_file=spdx_file),
            capture=True)
        self.scan_results = XMLBuilder('spdx_file')
        with self.scan_results.data:
            for line in spdx_scan_result.splitlines():
                single_line = line.split(',')
                with self.scan_results.item:
                    self.scan_results.file(val=single_line[0])
                    self.scan_results.license_info(val=single_line[1])
                    self.scan_results.license_concluded(val=single_line[2])
                etree_node = ~self.scan_results
        # print(str(self.scan_results))
        return str(self.scan_results)
def build_xml(spdx_scan_result):
    x = XMLBuilder('spdx_file')
    with x.data:
        for line in spdx_scan_result.splitlines():
            single_line = line.split(',')
            with x.item:
                x.file(val=single_line[0])
                x.license_info(val=single_line[1])
                x.license_concluded(val=single_line[2])
            etree_node = ~x
    return x
def checkstyle_xml(diags_set):

    def converted_severity(fauxpas_severity):
        # checkstyle severities: ignore, info, warning, error
        if (9 <= fauxpas_severity):
            return 'error'
        elif (5 <= fauxpas_severity):
            return 'warning'
        return 'info'

    x = XMLBuilder('checkstyle')
    diags_by_file = diags_set.grouped_diagnostics(by_property='file')
    for filepath, diags in diags_by_file.items():
        with x.file(name=filepath or diags_set.pbxproj_path):
            for diag in diags:
                message = diag.info
                if 0 < len(message):
                    message += ' '
                message += '(%s - %s)' % (diag.ruleName, diag.ruleDescription)
                x.error(severity=converted_severity(diag.severity),
                        source=diag.ruleShortName,
                        message=message,
                        line=str(diag.extent.start.line),
                        column=str(diag.extent.start.utf16Column)
                        )
    return str(x)
Beispiel #4
0
def checkstyle_xml(diags_set):
    def converted_severity(fauxpas_severity):
        # checkstyle severities: ignore, info, warning, error
        if (9 <= fauxpas_severity):
            return 'error'
        elif (5 <= fauxpas_severity):
            return 'warning'
        return 'info'

    x = XMLBuilder('checkstyle')
    diags_by_file = diags_set.grouped_diagnostics(by_property='file')
    for filepath, diags in diags_by_file.items():
        with x.file(name=filepath or diags_set.pbxproj_path):
            for diag in diags:
                message = diag.info
                if 0 < len(message):
                    message += ' '
                message += '(%s - %s)' % (diag.ruleName, diag.ruleDescription)
                x.error(severity=converted_severity(diag.severity),
                        source=diag.ruleShortName,
                        message=message,
                        line=str(diag.extent.start.line),
                        column=str(diag.extent.start.utf16Column))
    return str(x)