我个人还没有使用FxCop.我们希望在进行代码分析之前先完成单元测试.但是,你会永久停用哪些规则?您会暂时停用哪些规则以及在哪种情况下停用?
我通常m_在private田野和s_前面的static成员面前添加一个.
用像这样的代码
protected static readonly Random s_Random = new Random ();
Run Code Online (Sandbox Code Playgroud)
我通过VS2008的代码分析得到以下警告:
CA1709:Microsoft.Naming:通过将其更改为"S"来更正成员名称"Bar.s_Random"中's'的大小写.CA1707:Microsoft.Naming:从成员名称"Bar.s_Random"中删除下划线.如何解决这个问题?我应该简单地删除s_?或者为此警告添加全局抑制?
编辑:我的公司缺乏编码标准,所以我可以为我的代码定义它们.(是的我懂...)
如果你认为s_一般应该删除,我很高兴你能提供官方消息来源.
c# code-analysis fxcop naming-conventions visual-studio-2008
我想测试我的自定义fxrules.
我看过这篇文章:http://weblogs.asp.net/rosherove/archive/2007/02/24/writing-real-unit-tests-for-your-custom-fxcop-rules.aspx
但它不适用于最后一个版本的fxcop.Microsoft.Cci.Method.GetMethod不存在,我找不到替代方案.
你知道如何获得Microsoft.FxCop.Sdk.Method对象吗?
在此先感谢您的帮助.最好的祝福,
我们在C#组件中定义了CODE_ANALYSIS,以便FxCop在我们的开发盒上构建它们时对它们进行分析.我希望FxCop在运行我们的构建系统时关闭.构建系统显然使用msbuild.exe命令行命令.有没有办法从这个可执行文件修改条件编译符号?如果没有,有没有人知道我的问题的任何其他可能的解决方案(除了手动关闭)?
谢谢.
我尝试在我们的产品的几个程序集上运行FxCop,并且我获得了许多匹配"Specify IFormatProvider"规则.
碰巧,其中一些是合法的,但它也匹配这样的代码:
Logger.DebugFormat("Appending file {0}", fileName);
Run Code Online (Sandbox Code Playgroud)
哪个可以写成
Logger.DebugFormat(CultureInfo.InvariantCulture, "Appending file {0}", fileName);
Run Code Online (Sandbox Code Playgroud)
第二种变体更难阅读.
那么,它是否真的建议始终指定IFormatProvider或者"仅仅"是规则中使用的启发式的限制?
我想分析一个解决方案,其中包含针对.NET 3.5 SP1的项目以及一些针对.NET 4的项目,这些项目依赖于.NET 3.5库.
当我尝试添加两个程序集时,一个用于.NET 3.5,另一个用于.NET 4,FxCop会抛出异常:
AssemblyLoadException
Conflicting target platforms
'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' vs
'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉FxCop只使用版本4.0.0.0?
我想知道是否有任何替代代码分析.我想可以从头开始创建一个代码分析器,虽然这是一项繁琐的工作,但我不确定它是否值得.还有其他非特定于网络的分析仪吗?
谢谢,孙
我是代码分析的新手,在这里我不知道vs2012中的代码分析工具和Fxcop工具之间的区别和用法.
请提供一些细节.
我正在使用构建定义构建项目.执行此操作时,还会执行代码分析.代码分析输出各种文件,包括:
ConsoleApplication2.exe.CodeAnalysisLog.xml
ConsoleApplication2.exe.lastcodeanalysissucceeded
Run Code Online (Sandbox Code Playgroud)
有没有办法在我的构建定义中禁用此输出,例如通过参数或类似的东西?
我在TeamCity 8.0.6(build 27767)中添加了一个Build Step,以针对特定的c#项目程序集执行FxCop.
当使用MinimumRecommendedRules设置从VS 2013中运行FxCop时,我没有得到任何错误或警告(我将它们全部修复).
现在我想在TeamCity中进行连接.要限制规则,我将指定命令行属性,如下所示:
/ruleSet:=MinimumRecommendedRules.ruleset /rulesetdirectory:'FxCop\Rule Sets'
Run Code Online (Sandbox Code Playgroud)
(rulesetdirectory参数指向源树中包含标准规则集文件夹的完整内容的位置)
但是,这没有所需的行为,运行FULL规则集,我得到如下错误:
FxCop警告:关键字= CA0063种类=引擎类型= Microsoft.FxCop.Sdk.FxCopException*无法加载规则集文件"MinimumRecommendedRules.ruleset"或其依赖规则集文件之一.
这是TeamCity生成的命令行:
[17:32:29]开始:"C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\FxCopCmd.exe"/ forceoutput/ignoregeneratedcode /ruleSet:=MinimumRecommendedRules.ruleset"/ rulesetdirectory:'FxCop\Rule Sets'"/ f:dal\bin\release\MyDAL.dll /out:C:\TeamCity\buildAgent\temp\buildTmp\fxcop-output-1891867450083417003\fxcop-result.xml
谁能发现什么是错的?
fxcop ×10
c# ×4
.net ×3
msbuild ×2
.net-3.5 ×1
.net-4.0 ×1
fxcopcmd ×1
rules ×1
teamcity-8.0 ×1
unit-testing ×1