SonarQube MSBuild无法排除文件

时间:2018-02-08 12:27:08

标签: c# sonarqube sonarqube-scan

我在debian上使用msbuild运行分析,使用以下命令:

 mono /msbuild/SonarQube.Scanner.MSBuild.exe begin /d:sonar.login=<sonarqubetoken> /d:sonar.host.url=https://<my-server> /d:sonar.exclusions=test/**/* /k:<my-project-key>
end命令中的

然而

INFO: Index files
INFO: Excluded sources: 
INFO:   test/**/*
INFO: 17 files indexed
INFO: 0 files ignored because of inclusion/exclusion patterns
INFO: Quality profile for cs: Sonar way
INFO: Excluded sources for coverage: 
INFO:   test/**

并且我的服务器的UI分析包括来自test/文件夹的文件。

为什么它无法忽略特定文件?

使用SonarQube 6.7sonar-scanner:3.3

3 个答案:

答案 0 :(得分:1)

排除很难从分析方面正确设置,正如您的尝试所证明的那样。您最好的选择是从UI中设置这些。

答案 1 :(得分:0)

我设法解决这种情况的唯一方法是将以下行添加到我想要排除的项目的.csproj文件中

<!-- Exclude the project from SonarQube analysis -->
<SonarQubeExclude>true</SonarQubeExclude>

答案 2 :(得分:0)

升级到SonarQube Scanner for MSBuild 4.0.2后,我遇到了同样的问题

正如pkaramol所述并通过查看文档[12]这似乎是唯一的解决方案,因为sonar.exclusions仅匹配每个项目文件夹中的文件而不匹配解决方案文件夹。我为我的CI编写了一个python(&gt; = 3.5)脚本,它将这些行添加到我想要排除的项目中。

import os
import glob
import shutil

SOURCEDIR_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

SQ_EXCLUDE_TAG = """
    <PropertyGroup>
        <!-- Exclude the project from analysis -->
        <SonarQubeExclude>true</SonarQubeExclude>
    </PropertyGroup>
"""

def add_sq_exclude_tag(project_name):
    search_path = os.path.join(SOURCEDIR_PATH, '**', '{}.csproj'.format(project_name))
    for file_path in glob.iglob(search_path, recursive=True):
        with open(file_path, 'r', encoding='utf8') as outfile:
            lines = outfile.readlines()
            project_end_tag = lines[-1]
            lines[-1] = SQ_EXCLUDE_TAG
            lines.append(project_end_tag)
        with open(file_path, 'w', encoding='utf8') as outfile:
            outfile.writelines(lines)
        print('Added sonarqube exclude tag to {}'.format(file_path))


if __name__ == '__main__':
    add_sq_exclude_tag('*csprojFileConatainsThisString*')
    add_sq_exclude_tag('exactCsprojFileNameWithoutFileEnding')