Пример #1
0
    def _test_reporter(api, analyzers):
        # Always use the same setup, only varies the analyzers
        revision = PhabricatorRevision('PHID-DIFF-abcdef', api)
        revision.lines = {
            'test.cpp': [41, 42, 43],
        }
        reporter = PhabricatorReporter({'analyzers': analyzers}, api=api)

        issues = [
            ClangFormatIssue('test.cpp', 42, 1, revision),
            ClangTidyIssue(('test.cpp', '42', '51', 'error', 'dummy message', 'modernize-use-nullptr'), revision),
            InferIssue({
                'file': 'test.cpp',
                'line': 42,
                'column': 1,
                'bug_type': 'dummy',
                'kind': 'whatever',
                'qualifier': 'dummy message.',
            }, revision),
            MozLintIssue('test.cpp', 1, 'danger', 42, 'flake8', 'Python error', 'EXXX', revision),
        ]

        assert all(i.is_publishable() for i in issues)

        revision.improvement_patches = {
            'dummy': 'not gonna work',
            'clang-format': 'https://diff.url/clang-format',
            'clang-tidy': 'https://diff.url/clang-tidy',
            'mozlint': 'https://diff.url/mozlint',
            'infer': 'https://diff.url/infer',
        }

        return reporter.publish(issues, revision)
Пример #2
0
def test_as_markdown(mock_revision):
    '''
    Test markdown generation for InferIssue
    '''
    from static_analysis_bot.infer.infer import InferIssue
    parts = {
        'file': 'path/to/file.java',
        'line': 3,
        'column': -1,
        'bug_type': 'SOMETYPE',
        'kind': 'SomeKindOfBug',
        'qualifier': 'Error on this line'
    }
    issue = InferIssue(parts, mock_revision)
    issue.body = 'Dummy body'

    assert issue.as_markdown() == '''
Пример #3
0
def test_as_markdown(mock_revision):
    '''
    Test markdown generation for InferIssue
    '''
    from static_analysis_bot.infer.infer import InferIssue
    parts = {
        'file': 'path/to/file.java',
        'line': 3,
        'column': -1,
        'bug_type': 'SOMETYPE',
        'kind': 'SomeKindOfBug',
        'qualifier': 'Error on this line'
    }
    issue = InferIssue(parts, mock_revision)
    issue.body = 'Dummy body'

    assert issue.as_markdown() == '''
Пример #4
0
def test_as_text(mock_revision):
    '''
    Test text export for InferIssue
    '''
    from static_analysis_bot.infer.infer import InferIssue
    parts = {
        'file': 'path/to/file.java',
        'line': 3,
        'column': -1,
        'bug_type': 'SOMETYPE',
        'kind': 'SomeKindOfBug',
        'qualifier': 'Error on this line'
    }
    issue = InferIssue(parts, mock_revision)
    issue.body = 'Dummy body withUppercaseChars'

    expected = 'SomeKindOfBug: Error on this line [infer: SOMETYPE]'
    assert issue.as_text() == expected
Пример #5
0
def test_as_text(mock_revision):
    '''
    Test text export for InferIssue
    '''
    from static_analysis_bot.infer.infer import InferIssue
    parts = {
        'file': 'path/to/file.java',
        'line': 3,
        'column': -1,
        'bug_type': 'SOMETYPE',
        'kind': 'SomeKindOfBug',
        'qualifier': 'Error on this line'
    }
    issue = InferIssue(parts, mock_revision)
    issue.body = 'Dummy body withUppercaseChars'

    expected = 'SomeKindOfBug: Error on this line [infer: SOMETYPE]'
    assert issue.as_text() == expected
    def _test_reporter(api, analyzers):
        # Always use the same setup, only varies the analyzers
        revision = PhabricatorRevision(api, 'PHID-DIFF-abcdef')
        revision.lines = {
            'test.cpp': [0, 41, 42, 43],
            'dom/test.cpp': [
                42,
            ],
        }
        reporter = PhabricatorReporter({'analyzers': analyzers}, api=api)

        issues = [
            ClangFormatIssue('dom/test.cpp', 42, 1, revision),
            ClangTidyIssue(('test.cpp', '42', '51', 'error', 'dummy message',
                            'modernize-use-nullptr'), revision),
            InferIssue(
                {
                    'file': 'test.cpp',
                    'line': 42,
                    'column': 1,
                    'bug_type': 'dummy',
                    'kind': 'whatever',
                    'qualifier': 'dummy message.',
                }, revision),
            MozLintIssue('test.cpp', 1, 'danger', 42, 'flake8', 'Python error',
                         'EXXX', revision),
            CoverageIssue('test.cpp', 0, 'This file is uncovered', revision),
        ]

        assert all(i.is_publishable() for i in issues)

        revision.improvement_patches = [
            ImprovementPatch('dummy', repr(revision), 'Whatever'),
            ImprovementPatch('clang-tidy', repr(revision), 'Some C fixes'),
            ImprovementPatch('clang-format', repr(revision),
                             'Some lint fixes'),
            ImprovementPatch('infer', repr(revision), 'Some java fixes'),
            ImprovementPatch('mozlint', repr(revision), 'Some js fixes'),
        ]
        list(map(lambda p: p.write(),
                 revision.improvement_patches))  # trigger local write

        return reporter.publish(issues, revision)