标签: fxcop

什么是StdAfx.h中的"Afx"?

我只是好奇Afx代表什么.那么FxCop中的Fx呢?

.net mfc fxcop stdafx.h

34
推荐指数
2
解决办法
8172
查看次数

FxCop:复合词应视为离散术语

FxCop希望我用大写字母N(即UserName)拼写用户名,因为它是一个复合词.但是,由于一致性的原因,我们需要使用小写n拼写它 - 所以用户名或用户名.

我已经尝试通过在以下部分添加以下部分来调整CodeAnalysisDictionary.xml:

<DiscreteExceptions>
  <Term>username</Term>
</DiscreteExceptions>
Run Code Online (Sandbox Code Playgroud)

根据我的理解自定义词典如何工作,这应该告诉FxCop将用户名视为一个离散的术语,并防止CompoundWordsShouldBeCasedCorrectly(CA1702)检查发出错误.

不幸的是,这不起作用.有没有人知道为什么会这样,以及如何解决这个问题?我不想添加抑制,因为这会严重混乱GlobalSuppressions文件,因为有很多事件发生.

编辑添加:目前我已经通过使用GlobalSuppressions解决了这个问题,但鉴于问题的性质,这似乎不是解决这个问题的理想方法.任何人都可以提示在哪里查找有关FxCop如何应用字典中定义的规则的更多信息?

c# fxcop

32
推荐指数
1
解决办法
6498
查看次数

是否有StyleCop/FxCop自动固定工具?

是否有一个工具可以自动修复StyleCop和FxCop规则,而不是手动修复数以千计的警告和错误?

必须有一个,这是一个很好的商机!

fxcop stylecop

30
推荐指数
3
解决办法
2万
查看次数

对于任何C#开发人员来说,哪些是"必须遵循"FxCop规则?

我打算在我们正在进行的一个项目中开始使用FxCop.但是,当我尝试选择所有可用规则时,看起来我必须在代码中进行大量更改.作为一个"团队成员",我不能马上开始进行这些更改,比如命名约定更改等.无论如何我想开始使用FxCop和最小规则集,并且随着我们的继续逐渐增加规则集.你能否建议我必须有FxCop规则我应该开始遵循.或者你建议任何更好的方法?

注意:我的大多数代码都在C#中.

.net c# fxcop

28
推荐指数
3
解决办法
1万
查看次数

FxCop警告CA1006有什么好的解决方法吗?

我遇到了FxCop警告CA1006,Microsoft.Design"DoNotNestGenericTypesInMemberSignatures"的问题.具体来说,我正在设计一个ReportCollection<T>继承自的类,ReadOnlyCollection<Report<T>>public构造函数将IList<Report<T>>一个参数作为参数.

修复此警告的建议不是很有用:

"要修复违反此规则的行为,请更改设计以删除嵌套类型参数." 到目前为止,我可以通过两种方式来改变设计:

  1. 制作构造函数internal.这在我的情况下不起作用.构造函数必须是public因为此集合类需要通过程序集外部的代码进行实例化.
  2. 使构造函数取代Report<T>[]而不是IList<Report<T>>.这是次优的,因为外部代码应该具有使用动态大小的数据结构的灵活性,List<T>而不是固定大小的数组.

在这一点上,我放弃并压制了这个警告.有更好的解决方案吗?

.net c# fxcop

25
推荐指数
3
解决办法
7133
查看次数

如何在Visual Studio 2010 Professional中启用代码分析?

我可以看到我们可以在Visual Studio Team Systems中启用代码分析.但我使用的是Visual Studio 2010 Professional.

我们是否有任何选项可以在此版本中启用代码分析,或者我们是否可以将任何工具(如FxCop和StyleCop)与此版本集成以验证代码.

我期待我的代码应该在我构建解决方案的那一刻进行分析.

如果有人意识到这一点,请与我分享一些解决方案.

code-analysis fxcop visual-studio

25
推荐指数
2
解决办法
3万
查看次数

嵌套使用语句和Microsoft代码分析

最近我开启了额外的代码分析规则.令我惊讶的是,我在一个我一直在考虑作为最佳实践的地方看到了违规行为.如果我有两个嵌套的一次性用品,我会使用两个这样的语句:

    using (StringReader strReader = new StringReader(xmlString))
    using (XmlReader xmlReader = XmlReader.Create(strReader))
    {
        result.ReadXml(xmlReader);
    }
Run Code Online (Sandbox Code Playgroud)

这也对应于C#中高评级的Q&A 嵌套使用语句

我得到的违规声明如下:

Warning 18  CA2202 : Microsoft.Usage : Object 'strReader' can be disposed more
than once in method '????'. To avoid generating a System.ObjectDisposedException
you should not call Dispose more than one time on an object.: Lines: ??
Run Code Online (Sandbox Code Playgroud)

我所做的是一个直观的尝试和错误,认为外部流的关闭也可能会处理内部的我快速修复我的代码,如下所示:

    using (XmlReader xmlReader = XmlReader.Create(new StringReader(xmlString)))
    {
        result.ReadXml(xmlReader);
    }
Run Code Online (Sandbox Code Playgroud)

胡拉!警告消失了.但是,田田!新的一个发生:

Warning 18  CA2000 : Microsoft.Reliability : In method '????????', object 
'new StringReader(xmlString)' is …
Run Code Online (Sandbox Code Playgroud)

.net c# code-analysis fxcop

25
推荐指数
1
解决办法
4559
查看次数

属性"ID"的正确命名约定是什么:ID或Id?

非常简单的问题:当我有一个可持久的对象时,它通常有一个名为ID的属性(用于抽象类).

那么..是命名约定ID还是Id?

例如.

public int ID { get; set; }
Run Code Online (Sandbox Code Playgroud)

要么

public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

欢呼:)

PS.这适用于.NET btw.FXCop conformat将是一个奖金.

.net fxcop naming-conventions

24
推荐指数
3
解决办法
3998
查看次数

为什么FxCop认为将字段初始化为默认值是不好的?

在为字段分配默认默认值时(此处为bool的false),FxCop说:

Resolution   : "'Bar.Bar()' initializes field 'Bar.foo' 
               of type 'bool' to false. Remove this initialization 
               because it will be done automatically by the runtime."
Run Code Online (Sandbox Code Playgroud)

现在,我知道代码是int a = 0bool ok = false正在引入一些冗余,但对我而言,它似乎是一个非常非常好的代码实践,我的老师在我看来坚持正确的代码实践.

不仅性能损失很小,更重要的是:依赖于默认值依赖于每个程序员的知识,使用一段代码,在默认的每种数据类型上.(约会时间?)

说真的,我觉得这很奇怪:应该保护你不要犯下太明显错误的程序,建议在这里制作一个,只是为了提高性能?(我们在这里讨论初始化代码,只执行一次!那些关心那么多的程序员当然可以省略初始化(并且应该使用C或汇编程序:-)).

FxCop在这里犯了一个明显的错误,还是有更多呢?

两个更新:

  1. 这不仅仅是我的观点,而是我在大学(比利时)教过的.并不是说我喜欢使用一个 论证广告verecundiam,而只是为了表明这不仅仅是我的观点.关于那个:

  2. 道歉,我刚刚发现了这个:

    我应该总是/永远/永远不会将对象字段初始化为默认值吗?

fxcop

24
推荐指数
3
解决办法
1521
查看次数

整个命名空间的'SuppressMessage'

我为我的测试方法使用下划线以获得更好的可读性,并且我希望抑制整个测试命名空间的FxCop错误/警告.

我怎样才能做到这一点?我玩过GlobalSuppressions.cs但没有任何效果:

[module: System.Diagnostics.CodeAnalysis.SuppressMessage(
    "Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
    Scope = "namespace", Target = "Company.Product.Tests")]

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage(
    "Microsoft.Naming", "CA1707:IdentifiersShouldNotContainUnderscores",
    Scope = "namespace", Target = "Company.Product.Tests")]
Run Code Online (Sandbox Code Playgroud)

.net c# code-analysis fxcop namespaces

22
推荐指数
3
解决办法
1万
查看次数