(</sarcasm>),在这里,我正在开发一个包含168个项目的Visual 2012解决方案。
我们正在其中大约15个工作,而其他的我们没有接触。
当我们对整个解决方案运行代码分析时,它运行了23分钟,这有点长……
但是,当我们必须在每个签入中找出哪些项目被访问时,这也是一个痛苦的问题,这样我们就可以只对那些项目进行代码分析。
那么问题是,是否可以创建一组自定义的项目来运行代码分析?
发布于 2013-11-01 11:55:39
简单地说,Visual没有在解决方案中的项目子集上运行其代码分析工具的方法。
但是,您可以考虑一些可能的解决办法。
将活动项目提取到单独的解决方案中:
创建一个新的空白解决方案,向其添加所有现有的活动项目,并在较小的解决方案上运行代码分析。解决方案将同步,因为项目文件是相同的。如果项目依赖于不活动的项目,则可能会提供虚假报告。
对非活动项目使用空规则集:
添加“代码分析规则集”类型的新文件,编辑该文件,将其名称更改为“属性”窗口中的“无规则”,并取消选中所有规则(如果选中任何规则的话)。
然后转到您的解决方案属性,选择“公共属性->代码分析设置”,并将不活动项目的所有规则集更改为“无规则”。你可以在306次点击中做到这一点。
这将为代码分析提供最佳运行时,但也将使用CA0064:没有执行分析,因为指定的规则集不包含任何FxCop规则。淹没结果窗口。
对不活动的项目使用一个简单的规则集:
如上所示,然后将任何一条规则添加到“无规则”中,而您根本不希望看到这些规则。这将使代码分析更慢(但仍然比使用实际规则集快得多),您将不再收到警告CA0064。
老实说,Visual内置的代码分析存在一些根本缺陷,我建议您使用专业的外部工具(如ReSharper )或其他注释中建议的工具。当然,使用一个空的/琐碎的规则集可以达到所需的结果,但它更像是一种解决方案,而不是一个实际的解决方案。
发布于 2013-11-01 13:00:42
如果您不愿意重新讨论您的解决方案方法(与其他解决方案一样,我强烈推荐),那么多个解决方案构建配置可能是在各种情况下启用不同的程序集进行代码分析的最简单方法。例如,您可能希望考虑一组解决方案配置,如以下所示(其中“核心”项目是您通常从事的15个项目):
(如果您愿意在项目配置上有点花哨,那么将项目级配置的相关部分外部化到导入的MSBuild .targets文件中,将使所有这一切的管理更加简单,特别是考虑到受影响项目的数量。)
大多数开发人员可能会在日常活动中选择在DebugNoBuild或DebugCompileOnlyCore下工作,并且可以选择Debug或DebugCore (根据您认为合适的方式)进行预提交规则验证。通常,我建议使用完全调试(与所有相关的静态分析)进行持续集成构建,但考虑到完整分析的持续时间,这在您的情况下可能不实用。如果您正在使用CI,最好对CI构建使用DebugCore (或编译所有内容但只对核心项目运行静态分析的变体),然后添加一个比每天运行频率更高的定期生成(比如每隔一两个小时)来运行使用完整调试配置的构建。
发布于 2013-11-02 13:57:17
您可以通过外部构建文件(build.proj - on解决方案的目录)轻松地完成此任务:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build">
<MSBuild Projects="TestSolution.sln" Properties="RunCodeAnalysis=false"></MSBuild>
<MSBuild Projects="ClassLibrary1\ClassLibrary1.csproj" Targets="RunCodeAnalysis"></MSBuild>
<MSBuild Projects="ClassLibrary2\ClassLibrary2.csproj" Targets="RunCodeAnalysis"></MSBuild>
</Target>
</Project>可以使用外部工具从visual studio内部运行脚本(如果您的团队不喜欢shell)。
希望这能有所帮助。
https://stackoverflow.com/questions/19562625
复制相似问题