Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 静态代码分析-首先打开哪些?_C#_Visual Studio 2008_Code Analysis_Static Analysis - Fatal编程技术网

C# 静态代码分析-首先打开哪些?

C# 静态代码分析-首先打开哪些?,c#,visual-studio-2008,code-analysis,static-analysis,C#,Visual Studio 2008,Code Analysis,Static Analysis,我们将VS2008与内置的静态代码分析规则集一起使用。 我们有一个相对较大的C#解决方案(150多个项目),虽然一些项目(

我们将VS2008与内置的静态代码分析规则集一起使用。
我们有一个相对较大的C#解决方案(150多个项目),虽然一些项目(<20个)虔诚地使用静态代码分析,但大多数都不是。我们希望开始在所有项目上强制执行静态代码分析,但启用所有规则将极大地分散我们当前项目的注意力。我们应该首先启用可用的许多静态代码分析规则中的哪一个?哪些规则对金钱的影响最大?如果您能给我列出前20名的优先顺序,我将不胜感激。
提前感谢,

--Ed.S.

如果你要本地化你的项目/它将在不同的国家使用,那么一定要启用本地化规则。它将查找对所有未指定CultureInfo的格式化/解析函数的调用。在测试中很难找到涉及未指定CultureInfo的bug,但当您的法国客户会问:为什么您的程序不能使用“,”作为小数分隔符时会崩溃。

根据我的经验,所有类型的代码分析警告都会显示代码中的“隐藏”bug或缺陷。解决这些问题可以解决一些实际问题。我没有找到要禁用的警告列表

相反,我会一次打开一个项目,并在转到下一个项目之前修复该项目中的所有警告


如果你想把事情搞定,我会考虑不检查命名规则(除非你正在运送一个库、API或其他外部暴露的方法)和全球化规则。(除非您的应用程序积极利用全球化)。这取决于你的情况,这是有道理的

鉴于Studio的规则与FxCop的规则相似,我可以告诉您我最后会打开哪些规则

如果国际化尚未出现,请关闭全球化规则

最初关闭性能规则。在需要时进行优化

让其他人适合你的团队和项目。关闭不适用的单个规则。具体而言,可能需要调整命名规则

编辑:最重要的是减少噪音。如果每个项目都有200条警告,并且持续几个月,那么每个人都会忽略它们。打开对您的团队重要的规则,清理代码以获得100%的通过率(或者抑制异常——会有异常;这些是指导原则),然后强制保持代码干净。

我有点同意

我会打开你认为项目应该遵循的所有规则,并尽快修复它们。您现在不必全部修复它们,但是当您在一个模块中经历并修复缺陷或重构一个方法时,您总是可以清理通过静态分析在该方法或模块中发现的问题。新代码应该遵守您的规则,现有代码应该尽快转换为遵守规则,但您不需要放弃所有东西来实现这一点


您的开发团队还可以查看项目的问题并对其进行优先级排序,也许在问题跟踪系统中为最关键的问题归档缺陷,以便由适当的开发人员快速解决这些问题。

您应该为项目激活的第一条规则是那些您在该项目中尚未违反的规则。这将允许您避免引入新问题,而无需花费任何额外的清理工作

至于其他项目,考虑到您已经在其他项目上使用代码分析,您最有可能违反规则并造成严重后果的最佳输入可能是在这些项目上工作的开发人员。如果在项目之间没有足够的重叠来获得来自开发者的有意义的反馈,那么您可能需要考虑从VisualStudio 2010中的规则集中包含的规则开始。


如果您计划实际清理任何给定项目中的现有违规行为,您可能希望在清理完成之前进行清理。这将允许您立即激活规则,同时保留对源代码之外现有违规行为的“清理”排除。

无需“编程”标签。如果你想在这里问一个不符合该标签要求的问题,就不要问我很好奇为什么这被否决了。我就是这样开始静态分析的。。。