我正在尝试修改stylecop目标,以支持仅对已更改的文件进行增量检查。
在调试时,我看到@(Compile)是要检查的文件的列表;但是,我想把这个列表只过滤到已经被更改的文件(即,那些时间戳晚于目标dll的文件,我知道我可以将其引用为$(TargetPath) )。
如何在创建项"StyleCopFiles“的输出上递归并删除那些未更改的文件?
下面是我想要添加筛选条件的目标:
<Target Name="SetUpStyleCopProperties">
<!-- Determine what files should be checked. Take all Compile items, but exclude those that have
set ExcludeFromStyleCop=true or ExcludeFromSourceAnalysis=true. -->
<CreateItem Include="@(Compile)" Condition="('%(Compile.ExcludeFromStyleCop)' != 'true') and ('%(Compile.ExcludeFromSourceAnalysis)' != 'true')">
<Output TaskParameter="Include" ItemName="StyleCopFiles"/>
</CreateItem>
<!-- Show list of what files should be excluded. checked. Take all Compile items, but exclude those that have
set ExcludeFromStyleCop=true or ExcludeFromSourceAnalysis=true. -->
<CreateItem Include="@(Compile)" Condition="('%(Compile.ExcludeFromStyleCop)' == 'true') or ('%(Compile.ExcludeFromSourceAnalysis)' == 'true')">
<Output TaskParameter="Include" ItemName="StyleCopExcludedFiles"/>
</CreateItem>
</Target>发布于 2013-09-12 22:34:56
您提出的建议可以通过使用自定义MSBuild任务来实现。但是,增量StyleCop分析可能不会像您预期的那样工作,因为失败的StyleCop分析不一定会阻止编译。想象一下您提议的增量分析下的以下事件序列:
修改
在#2处,您将在A.cs中看到该问题的StyleCop警告。然而,在#4中,您只会在B.cs中看到问题,而不会在A.cs中看到问题。这真的是你想要的吗?
如果您确实发现StyleCop在开发人员本地构建期间导致了有问题的延迟,那么还有另一个替代方案:创建一个忽略StyleCop的替代构建配置。例如,我经常创建一个省略StyleCop和FxCop分析的"DebugCompileOnly“解决方案配置。开发人员可以在本地机器上自由地使用它,但他们应该在提交之前在Debug配置(包括这两个工具)下进行编译。构建服务器上的持续集成构建使用Debug配置,从而确保快速识别任何失败。
https://stackoverflow.com/questions/18748589
复制相似问题