我需要帮助在解决方案中包含的所有cs文件上运行stylecop任务。 请告诉我它是否可能以及如何? 现在我可以在文件上运行它,但不能在解决方案上运行。
<CreateItem Include="$(RootPath)\**\*.cs">
<Output TaskParameter="Include" ItemName="StyleCopFiles"/>
</CreateItem>
<MSBuild.ExtensionPack.CodeQuality.StyleCop
TaskAction="Scan"
ShowOutput="true"
ForceFullAnalysis="true"
CacheResults="false"
SourceFiles="@(StyleCopFiles)"
logFile="$(OutDir)\StyleCopLog.txt"
SettingsFile="$(MSBuildStartupDirectory)\..\Settings.StyleCop"
ContinueOnError="false">
<Output TaskParameter="Succeeded" PropertyName="AllPassed"/>
<Output TaskParameter="ViolationCount" PropertyName="Violations"/>
<Output TaskParameter="FailedFiles" ItemName="Failures"/>
</MSBuild.ExtensionPack.CodeQuality.StyleCop>
答案 0 :(得分:3)
您是否考虑过自动运行StyleCop规则作为项目构建过程的一部分?这不会在解决方案级别运行所有规则,而是在项目级别运行。我更喜欢这种方法,因为规则将在您构建项目/解决方案时运行,并在“错误列表”面板中显示为“警告”(双击以导航到有问题的代码行)。在逐个项目的基础上对此进行配置可能看起来很痛苦,但我们的单元测试项目有一组不同的StyleCop规则,这使我们可以单独配置它们。
此外,您不必向构建脚本显式添加MSBuild任务,因为构建项目将自动执行StyleCop规则。
值得注意的是,我正在使用NuGet包:StyleCop.MSBuild(版本4.7.17.1)并使用相对路径从我的.csproj文件中引用包,如下所示:
<Project>
<Import Project="..\Packages\StyleCop.MSBuild.4.7.17.1\tools\StyleCop.targets" />
</Project>
您还可以在希望规则运行时设置条件。如果条件计算结果为假,则StyleCop将不会运行。我们在运行单元测试时使用条件来压缩StyleCop
<Project>
<Import Project="..\Packages\StyleCop.MSBuild.4.7.17.1\tools\StyleCop.targets" Condition="'$(NCrunch)'!='1'" />
</Project>
要配置StyleCop规则,您需要安装StyleCop_v4.7.17.0.msi。我们只为整个代码库定义了一个Settings.StyleCop文件(父设置文件)。