TFS 构建忽略配置的代码分析规则集
TFS Build ignores configured Code Analysis ruleset
我有一个使用混合 .csproj 和 project.json 组合的解决方案(用于 nuget 管理目的)。所以基本上 "project.json" 文件作为具有浮动版本功能的 "packages.config" 文件工作。
此解决方案使用通过包分发并自动导入的自定义规则集。在开发机器上,没有问题。
在构建机器上(即在机器内部,以用户身份工作)解决方案也可以毫无问题地编译。
但是,当 vNext 构建(这是新构建系统的名称吗?)排队时,它会完全忽略自定义规则集,而只使用 StyleCop(也包括在内),这给出了一堆警告。不应出现上述警告,因为自定义规则集基本上会抑制这些警告(即:Warning SA1404: Code analysis suppression must have justification
、
Warning SA1124: Do not use regions
等)
据我检查,没有指定规则集的设置,这适用于 XAML 构建。导致这种情况的新构建系统有什么不同?有没有办法从定义中 force/specify 代码分析规则集?
在此先感谢您对此事的任何帮助或建议。
Update/Edit
在 jessehouwing 的大力帮助下来回调试后,我必须在我的初始报告中包含以下细节(我忽略了它,因为我不知道它有影响):
我在构建定义中使用 SonarQube Analysis。
我最初没有提到它,因为我不知道它会取代构建时的代码分析(而且不仅是 "analyzes",正如我所想的那样)。
如果您使用的是 SonarQube 任务
SonarQube 任务会即时生成一个新的代码分析规则集文件,并将覆盖为项目配置的文件。无论您之前指定了什么,都将使用这些规则集。
规则集的命名有一个技巧,您可以通过它来包含自己的覆盖。
有关该结构的更多信息可以在 blog post from the SonarQube/Visual Studio team 中找到。基本上,当您将解决方案绑定到 SonarQube 时,它将生成 2 个规则集文件。一个将在构建期间被覆盖,另一个包含您的自定义设置。
有一个 toolkit/SDK 到 generate a SonarQube plugin for custom analyzers 允许您将规则导入 SonarQube,因此它会知道为您的项目激活哪些规则。
如果您没有使用 SonarQube
是的,您可以指定要使用的规则集并强制代码分析 运行。它需要几个 MsBuild 参数:
/p:RunCodeAnalysis=true /p:CodeAnalysisRuleset="PathToRuleset"
或者你可以使用我的 MsBuild helper extension to configure these settings with the help of a UI template:
我有一个使用混合 .csproj 和 project.json 组合的解决方案(用于 nuget 管理目的)。所以基本上 "project.json" 文件作为具有浮动版本功能的 "packages.config" 文件工作。
此解决方案使用通过包分发并自动导入的自定义规则集。在开发机器上,没有问题。
在构建机器上(即在机器内部,以用户身份工作)解决方案也可以毫无问题地编译。
但是,当 vNext 构建(这是新构建系统的名称吗?)排队时,它会完全忽略自定义规则集,而只使用 StyleCop(也包括在内),这给出了一堆警告。不应出现上述警告,因为自定义规则集基本上会抑制这些警告(即:Warning SA1404: Code analysis suppression must have justification
、
Warning SA1124: Do not use regions
等)
据我检查,没有指定规则集的设置,这适用于 XAML 构建。导致这种情况的新构建系统有什么不同?有没有办法从定义中 force/specify 代码分析规则集?
在此先感谢您对此事的任何帮助或建议。
Update/Edit
在 jessehouwing 的大力帮助下来回调试后,我必须在我的初始报告中包含以下细节(我忽略了它,因为我不知道它有影响):
我在构建定义中使用 SonarQube Analysis。
我最初没有提到它,因为我不知道它会取代构建时的代码分析(而且不仅是 "analyzes",正如我所想的那样)。
如果您使用的是 SonarQube 任务
SonarQube 任务会即时生成一个新的代码分析规则集文件,并将覆盖为项目配置的文件。无论您之前指定了什么,都将使用这些规则集。
规则集的命名有一个技巧,您可以通过它来包含自己的覆盖。
有关该结构的更多信息可以在 blog post from the SonarQube/Visual Studio team 中找到。基本上,当您将解决方案绑定到 SonarQube 时,它将生成 2 个规则集文件。一个将在构建期间被覆盖,另一个包含您的自定义设置。
有一个 toolkit/SDK 到 generate a SonarQube plugin for custom analyzers 允许您将规则导入 SonarQube,因此它会知道为您的项目激活哪些规则。
如果您没有使用 SonarQube
是的,您可以指定要使用的规则集并强制代码分析 运行。它需要几个 MsBuild 参数:
/p:RunCodeAnalysis=true /p:CodeAnalysisRuleset="PathToRuleset"
或者你可以使用我的 MsBuild helper extension to configure these settings with the help of a UI template: