首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SonarQube与C#插件与MSBuild运行器不采取排除

SonarQube与C#插件与MSBuild运行器不采取排除
EN

Stack Overflow用户
提问于 2016-02-26 15:53:09
回答 1查看 7.7K关注 0票数 7

目前,我有一个SonarQube 5.1.2的实例,它使用C#插件和MSBuild运行程序来分析一个1.200.000 LOC项目。我打算减少分析的类,我用行创建了一个sonar.properties文件

代码语言:javascript
运行
复制
sonar.exclusions=**/Databases/**/*.*

但是从分析中读取日志后,数据库文件夹中的文件就会被分析。按照埃里克·斯塔尔的说明,我在运行程序的调用中设置了这个简单的排除规则:

代码语言:javascript
运行
复制
"C:\sonarqube-5.1.2\bin\MSBuild.SonarQube.Runner.exe" begin /k:MyProject /n:MyProject /v:2 /d:sonar.exclusions="file:C:\codesource\Databases/**/*.*" /d:sonar.scm.provider=tfvc /d:sonar.tfvc.username=*************  /d:sonar.tfvc.password.secured={aes}*************************** "/d:sonar.cs.vscoveragexml.reportsPaths=C:\codesource\CodeCoverage\Results.coveragexml"

我发现运行程序创建了一个sonar-project.properties文件,它包含了许多位于数据库文件夹中的文件:

代码语言:javascript
运行
复制
BC78C8C4-8ECD-47CB-9781-F621AE109FE4.sonar.projectName=myDatabase
BC78C8C4-8ECD-47CB-9781-F621AE109FE4.sonar.projectBaseDir=BC78C8C4-8ECD-47CB-9781-F621AE109FE4.sonar.projectName=myDatabase
BC78C8C4-8ECD-47CB-9781-F621AE109FE4.sonar.projectBaseDir=C:\\codesource\\Databases\\myDatabase
BC78C8C4-8ECD-47CB-9781-F621AE109FE4.sonar.sources=\
C:\\codesource\\Databases\\myDatabase\\Scripts\\PreDeployment\\PATCH_20150527_01.sql,\
C:\\codesource\\Databases\\myDatabase\\Scripts\\PreDeployment\\ROCOMMON.DBVERSION.sql,\
,\.....

据我所知,数据库文件夹中不应该有任何文件。我说错了吗?

EN

回答 1

Stack Overflow用户

发布于 2016-03-01 11:45:46

您使用的是SonarQube MSBuild扫描仪,它与用于所有其他语言的常规SonarQube扫描仪非常不同。

您试图使用的sonar.exclude行只有在使用常规的SonarQube扫描器时才能工作,因为这将接受Sonar-project.properties文件。SonarQube MSBuild扫描程序只有一个SonarQube.Analysis.Xml文件,其中包含可以调整的与项目相关的设置。

您可以对SonarQube.Analysis.Xml文件使用两种覆盖策略:

  • 在MSBuild *.*proj文件中定义的特定于项目的属性(对应于SonarQube模块)可以覆盖:
  • 命令行(/d:propertyName=value)中定义的属性可以覆盖:
  • 在SonarQube.Analysis.xml配置文件中定义的属性
  • 在项目级别的SonarQube用户界面中定义的属性,它可以覆盖所有内容
  • SonarQube用户界面中在全局级别定义的属性,不能覆盖任何内容

从解决方案中排除特定文件夹或扩展:

您需要将排除项添加到每个项目的.csproj文件中。下面是您应该在主根节点(称为<Project...> )中使用的语法,并将其转换为目标之一,最好是<Target Name="BeforeBuild">。希望下面的语法是足够的自我解释,但如果不是,请在这个答案下留下评论,我会立即更新它。

代码语言:javascript
运行
复制
<Target Name="BeforeBuild">
    <ItemGroup>
          <SonarQubeSetting Include="sonar.exclusions">
              <Value>**/Databases/**/*</Value>
          </SonarQubeSetting>
      </ItemGroup>
  </Target>

希望能帮上忙!

来源

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35656157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档