首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为StyleCop增量检查筛选Msbuild CreateItem的输出

为StyleCop增量检查筛选Msbuild CreateItem的输出
EN

Stack Overflow用户
提问于 2013-09-12 02:25:36
回答 1查看 371关注 0票数 0

我正在尝试修改stylecop目标,以支持仅对已更改的文件进行增量检查。

在调试时,我看到@(Compile)是要检查的文件的列表;但是,我想把这个列表只过滤到已经被更改的文件(即,那些时间戳晚于目标dll的文件,我知道我可以将其引用为$(TargetPath) )。

如何在创建项"StyleCopFiles“的输出上递归并删除那些未更改的文件?

下面是我想要添加筛选条件的目标:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2013-09-12 22:34:56

您提出的建议可以通过使用自定义MSBuild任务来实现。但是,增量StyleCop分析可能不会像您预期的那样工作,因为失败的StyleCop分析不一定会阻止编译。想象一下您提议的增量分析下的以下事件序列:

修改

  1. 文件A.cs,包括引入可能导致StyleCop警告的问题。
  2. 项目已生成。修改
  3. 文件B.cs,包括引入可能导致StyleCop警告的问题。(未修改文件A.cs。)
  4. 项目已生成。

在#2处,您将在A.cs中看到该问题的StyleCop警告。然而,在#4中,您只会在B.cs中看到问题,而不会在A.cs中看到问题。这真的是你想要的吗?

如果您确实发现StyleCop在开发人员本地构建期间导致了有问题的延迟,那么还有另一个替代方案:创建一个忽略StyleCop的替代构建配置。例如,我经常创建一个省略StyleCop和FxCop分析的"DebugCompileOnly“解决方案配置。开发人员可以在本地机器上自由地使用它,但他们应该在提交之前在Debug配置(包括这两个工具)下进行编译。构建服务器上的持续集成构建使用Debug配置,从而确保快速识别任何失败。

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

https://stackoverflow.com/questions/18748589

复制
相关文章

相似问题

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