是否可以从所有FxCop分析中排除完整的命名空间,同时仍然使用SuppressMessageAttribute?分析组件的其余部分?
在我目前的情况下,我有一堆由LINQ to SQL生成的类导致很多FxCop问题,显然,我不会修改所有这些以匹配FxCop标准,因为如果我有很多这些修改将会消失重新生成了类.
我知道FxCop有一个项目选项来禁止对生成的代码进行分析,但它似乎没有将LINQ 2 SQL创建的实体和上下文类识别为生成的代码.
我收到以下警告: " CA1824标记具有NeutralResourcesLanguageAttribute的程序集"
根据MSDN,原因是:程序集包含基于ResX的资源,但没有应用System.Resources.NeutralResourcesLanguageAttribute.
谁能解释一下这意味着什么?我不想定义具体的文化背景.我希望它们可以自定义.
我的前缀是说我理解Code Analysis和StyleCop都是指导原则,很多人选择忽略这些.但话说回来,我想看看这两条规则的普遍共识是什么.
规则CA1500表示不要使参数名称和私有字段名称相同.
另一方面,规则SA1309表示不要为成员添加下划线或"m_"作为前缀.
这使我们几乎没有选择区分私有支持字段与其相应的参数.拿这些例子.
SA1309抱怨:
class SomeClass
{
int _someField;
public SomeClass(int someField)
{
this._someField = someField;
}
}
Run Code Online (Sandbox Code Playgroud)
CA1500抱怨:
class SomeClass
{
int someField;
public SomeClass(int someField)
{
this.someField = someField;
}
}
Run Code Online (Sandbox Code Playgroud)
我有什么选择?我不想创建私有支持字段PascalCase,因为这是公共字段/属性的(我相信相当普遍的)约定.而且我不想重命名其中一个,只是为了解决歧义.
所以我留下了上面两个中的一个,这将要求我压制其中一个SA/CA规则.
你们通常做什么?更重要的是,这些规则的作者认为你应该做些什么(因为它们都没有在他们的文档中提供替代解决方案)?
我正在尝试使用Microsoft.Bcl.Async和代码分析,但是当我运行代码分析时,我得到一个或多个错误.
我正在使用Visual Studio 2012和Update 2.
这对我来说很容易重现:
.Net 4.References然后选择Manage NuGet Packages...Online并async在Search Online框中键入.Async for .Net Framework 4 ....点击Install并接受所有问题.Main()一行说:TaskEx.Delay(1000);和ausing System.Threading.Tasks;Enable Code Analysis on Build.我收到两个代码分析错误:
CA0052运行代码分析时出错CA0052:未选择任何目标.[错误和警告](全球)
CA0055运行代码分析CA0055时出错:无法加载ConsoleApplication2.exe.读取模块"ConsoleApplication2"时遇到以下错误:无法解析成员引用:[Microsoft.Threading.Tasks,Version = 1.0.12.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a] System.Threading.Tasks.TaskEx :: Delay.[错误和警告](全球)
我为其他测试程序得到了不同的代码分析错误.我试过的基本Windows窗体应用程序给了我:
CA0001错误运行代码分析CA0001:读取模块"AsyncForNet4"时遇到以下错误:无法解析成员引用:[Microsoft.Threading.Tasks,Version = 1.0.12.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a] System.Threading. Tasks.TaskEx ::延迟.[错误和警告](全球)
两个问题:
在我正在研究FxCop的项目中,我向Windows窗体设计器生成的InitializeComponent()方法显示了很多(我的意思是400多个)错误.大多数错误只是标签的Text属性的赋值.
我想在源代码中禁止这些方法,因此我将FxCop生成的抑制代码复制到AssemblyInfo.cs中,但它不起作用.
这是FxCop复制到剪贴板的属性.
[module: SuppressMessage("Microsoft.Globalization",
"CA1303:DoNotPassLiteralsAsLocalizedParameters",
Scope = "member",
Target = "WindowsClient.MainForm.InitializeComponent():System.Void",
MessageId = "System.Windows.Forms.Control.set_Text(System.String)")]
Run Code Online (Sandbox Code Playgroud)
任何人都知道正确的属性来压制这些消息?
PS:我使用的是Visual Studio 2005,C#,FxCop 1.36 beta.
code-analysis fxcop initializecomponent suppression visual-studio
我只是想下载FxCop 1.36但我在互联网上找不到它.几天前,FxCop 10出现在Windows 7上,但我需要旧版本.该文件在MS服务器上消失,每个人都链接它.
任何人都有旧的安装程序?
使用带有C#可选参数的代码分析(或fxCop)时,您可以收到CA1026的警告.对此的简短原因1不是使用默认值来提供所有参数.
下面的声明正确地生成了此警告
public Color GetColor(bool red, bool blue = true, bool green = true)
Run Code Online (Sandbox Code Playgroud)
但是,有一种情况是您无法使用默认值提供所有参数,这就是扩展方法.因此,下面的声明会因为第一个参数而生成警告:
public static bool ValidateRules(this string s, Rules rules = Rules.Default)
Run Code Online (Sandbox Code Playgroud)
编译器不允许您在this参数上指定默认值,因此只有两个解决方案是:
我正在浏览Stack Overflow和Google,了解有关自动编码风格练习工具的信息,并找到了FxCop.
但我没有找到微软最近关于FxCop的文章.所以,我想知道FxCop是否已经死了.
FxCop可以与Visual Studio 2015一起使用吗?它是否适用于执行C#设计指南?
我正在发布一个 ASP.NET Core MVC 3.0 网站,输出文件夹包含许多语言的库引用Microsoft.CodeAnalysis,有人知道为什么吗?
当然FxCopAnalyzers,项目中安装了Nuget 包,但它没有在项目的早期版本中发布,所以我不明白为什么现在它应该只在开发时有用,而不是在生产环境中使用。
我有代码捕获所有内容并记录它.我通常不会这样做,但我正在编写HTTP处理程序并希望返回适当的HTTP代码.无论如何,我在我的方法的顶部放置以下内容:
[SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes", Justification = "We just log the exception and return an HTTP code")]
FxCop似乎忽略了这一点,这非常令人沮丧.特别是因为它也忽略了我所有的复合词覆盖!
知道为什么这样做吗?我正在使用FxCop 10,它是Windows 7/.NET 4 SDK的一部分.
fxcop ×10
c# ×5
asp.net-core ×1
coding-style ×1
installer ×1
stylecop ×1
suppression ×1
warnings ×1