Visual studio 我可以在自定义项目集上运行Visual Studio代码分析吗?
我正处于一个愉快的境地,Visual studio 我可以在自定义项目集上运行Visual Studio代码分析吗?,visual-studio,visual-studio-2012,Visual Studio,Visual Studio 2012,我正处于一个愉快的境地,()我在一个包含168个项目的VisualStudio2012解决方案上工作 我们在其中大约15个地方工作,其他地方我们不接触 当我们对整个解决方案运行代码分析时,它会运行23分钟,这有点长 但是,当我们必须在每次签入时弄清楚哪些项目被触及,这样我们就只能对这些项目运行代码分析时,这也是一种痛苦 所以问题是,是否可以创建一组自定义的项目来运行代码分析?简单地说,Visual Studio没有办法在解决方案中的项目子集上运行其代码分析工具 但是,你可以考虑一些可能的解决办法
(
)我在一个包含168个项目的VisualStudio2012解决方案上工作
我们在其中大约15个地方工作,其他地方我们不接触
当我们对整个解决方案运行代码分析时,它会运行23分钟,这有点长
但是,当我们必须在每次签入时弄清楚哪些项目被触及,这样我们就只能对这些项目运行代码分析时,这也是一种痛苦
所以问题是,是否可以创建一组自定义的项目来运行代码分析?简单地说,Visual Studio没有办法在解决方案中的项目子集上运行其代码分析工具 但是,你可以考虑一些可能的解决办法。
将活动项目提取到单独的解决方案中: 创建一个新的空白解决方案,向其中添加所有现有的活动项目,并对较小的解决方案运行代码分析。由于项目文件相同,解决方案将同步。如果这些项目依赖于非活动项目,则可能会提供虚假报告
对非活动项目使用空规则集: 添加“代码分析规则集”类型的新文件,编辑它,在其属性窗口中将其名称更改为“无规则”,然后取消选中所有规则(如果选中了任何规则) 然后转到解决方案属性,选择“公共属性->代码分析设置”,并将非活动项目的所有规则集更改为“无规则”。您可以在306次点击中完成此操作 这将为代码分析提供最佳的运行时,但也会使结果窗口充满
对非活动项目使用简单的规则集: 如上所述,但在“无规则”中添加任何一条您根本不希望看到的规则。这将使代码分析变慢(但仍比使用实际规则集快得多),并且您将不再收到警告CA0064
说实话,VisualStudio的内置代码分析有一些基本缺陷,我建议使用专业的外部工具,如ReSharper,或其他评论中建议的工具。使用一个空的/琐碎的规则集当然可以获得所需的结果,但它更多的是一种变通方法,而不是实际的解决方案。如果您不愿意重新使用您的解决方案方法(与其他方法一样,我强烈推荐),多个解决方案构建配置可能是在各种场景下启用不同程序集进行代码分析的最简单方法。例如,您可能希望考虑一组如下的解决方案配置(其中“核心”项目是您通常工作的15个项目):
- 所有项目:编译(调试配置)并运行静态分析(VS代码分析/FxCop、StyleCop、体系结构规则实施等)
- 核心项目:编译(调试配置)和运行静态分析
- 其他项目:不编译或运行静态分析
- 核心项目:编译(调试配置),但不运行静态分析
- 其他项目:不编译或运行静态分析
- 所有项目:不编译或运行静态分析
- 所有项目:编译(发布配置)并运行静态分析(如果您选择对发布配置执行此操作)
大多数开发人员可能会选择在DebugNoBuild或DebugCompileOnlyCore下进行大多数日常活动,并且可以选择Debug或DebugCore(视情况而定)进行提交前规则验证。通常,我建议对连续集成构建使用完全调试(以及所有相关的静态分析),但考虑到完整分析的持续时间,这在您的案例中可能不实用。如果您使用的是CI,最好使用DebugCore(或编译所有内容但仅对核心项目运行静态分析的变体)进行CI构建,然后添加一个定期安排的构建,该构建比每天运行的频率更高(例如每小时或两小时一次)运行使用完整调试配置的生成。您可以从外部生成文件(build.proj-在解决方案的目录中)轻松执行此操作:
希望这能有所帮助。您是否可以右键单击项目>属性>代码分析。取消选择“构建时的代码分析”?嗯,是的,但我们取消了所有项目的选择,只按需运行,因为它太慢了。那么您的建议是将“我们的”15个项目设置为“真”吗?这是每个用户的设置吗?对于不想分析的项目,为什么不将代码分析规则设置为“无”?停止这种疯狂行为:当您手动或在构建服务器上运行代码分析时,是否只想分析解决方案的一个子集?谢谢您的回答,尽管它仍然如您所说,这不是一件简单的事。触发我的是重新竖琴的使用。r#能帮我解决我的问题吗?在我看来,Resharper比块代码分析更好,因为它可以在编写代码时立即运行。例如,如果程序员键入冗余el
<?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>