TFS Build忽略已配置的代码分析规则集

时间:2016-06-27 09:37:45

标签: msbuild tfsbuild code-analysis tfs2015 sonar-runner

我有一个使用混合.csproj和project.json组合的解决方案(用于nuget管理)。所以基本上是" project.json"文件作为" packages.config"具有浮动版本功能的文件。

此解决方案使用通过Package分发的自定义RuleSet,并自动导入。在开发机器上,没有问题。

在构建机器上(即在机器内部,以用户身份工作),解决方案也可以毫无问题地编译。

但是,当vNext构建(这是新构建系统的名称吗?)排队时,它会完全忽略自定义规则集,只使用StyleCop(也包括在内),这会产生一堆警告。所述警告不应出现,因为自定义规则集基本上会抑制这些警告(即:Warning SA1404: Code analysis suppression must have justification Warning SA1124: Do not use regions等)

据我所知,没有设置来指定规则集,这适用于XAML Builds。这个新构建系统有什么不同呢?有没有办法从定义强制/指定代码分析规则集?

提前感谢您就此事提供任何帮助或建议。

更新/修改

在jessehouwing的精彩帮助下来回调试后,我必须在我的初始报告中包含以下细节(我忽略了,因为我不知道它有影响力):

我在构建定义中使用SonarQube Analysis。

我最初没有提及它,因为我不知道它会在构建时取代代码分析(而不仅仅是它"分析",正如我所想的那样)。

1 个答案:

答案 0 :(得分:1)

如果您正在使用SonarQube任务

SonarQube任务会动态生成新的代码分析规则集文件,并将覆盖为项目配置的文件。无论您之前指定了什么,都将使用这些规则集。

命名规则集有一个技巧,您可以通过它来包含自己的覆盖。

有关结构的更多信息,请参阅blog post from the SonarQube/Visual Studio team。基本上,当您将解决方案绑定到SonarQube时,它将生成2个规则集文件。一个将在构建期间被覆盖,另一个包含您的自定义。

有一个generate a SonarQube plugin for custom analyzers工具包/ SDK,允许您将规则导入SonarQube,因此它将知道要为您的项目激活哪些规则。

如果您没有使用SonarQube

是的,您可以指定要使用的规则集并强制运行代码分析。它需要几个MsBuild参数:

/p:RunCodeAnalysis=true /p:CodeAnalysisRuleset="PathToRuleset"

或者您可以使用我的MsBuild helper extension to configure these settings with the help of a UI template

enter image description here