2010-02-16 25 views
7

您希望添加到FxCop和/或Gendarme中的什么可定义的静态代码检查规则?你希望FxCop/Gendarme有什么规则?

为什么你希望看到添加的规则,例如什么是好处等?

您的规则如何实施?

+0

FXCop不执行静态代码检查,它检查编译程序集(IL)。 静态代码分析通过StyleCop完成。 –

+0

@BeowulfOF,我会说FXCop做了静态代码检查,它只是不检查你在“=”的每一边有多少空格。 id不跟踪方法之间的控制流程等。 –

+0

Microsoft声明只有程序集是由FXCop分析的,而不是源代码。 http://msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx –

回答

1

就个人而言,我宁愿在using声明中看到不使用IDisposable实现。

所以,如果你有这样的代码:

var fs = new FileStream(...); 

// Other code. 

fs.Dispose(); 

它会告诉你在一个using语句中使用它。

好处是,它会提醒您,您可能不知道应该处理的物品没有及时处理的情况。

但是,有足够的时间在有效的情况下,不要在using语句中声明IDisposable实现,因为这样的规则很快就会变成一种痛苦。大多数情况下,这种情况下将一个IDisposable实现作为方法的参数。

我做什么的意思是哪里的实施细则删除需要调用Dispose类,(例如MemoryStreamDataContext)用途;那些实施IDisposable和应该始终有Dispose调用他们,无论执行细节,因为它总是更好的代码违反合同暴露。

+0

@ Ian Ringrose:更新我的回复以澄清。 – casperOne

+0

VS2010代码分析有一个非破坏规则:http://msdn.microsoft.com/en-us/library/ms182289%28VS.100%29.aspx –

2

我想快速定义和实施我自己的规则。我曾经为FxCop尝试过一次,但是我发现这个API不太清楚 - 并且没有太多的文档。我用的FxCop 1.36,也许事情发生了变化......

所以我希望看到有一个清晰和易于FxCop的使用界面...这将是巨大的:)

我试图执行的规则分别为:

  • DocumentInternalMethods
  • DocumentInternalTypes
  • ...

巴斯我想对非公开成员执行xml注释。

+1

为此使用StyleCop,它对该内建有一个规则。无论如何,XML注释都不会被编译到程序集中,所以FXCop无法看到这些是否被定义,因为它只分析编译后的程序集。 –

+1

我对StyleCop有所了解,但是现在我想在FxCop中实现它 - 我做到了。你是对的,你必须单独加载xml文件。 – tanascius

1

我真的很喜欢二进制分析足够聪明,以识别接口的可能性。

如果可以通过接近定义的类型及其成员来确定是否存在可以插入接口的公共元素。

显然,这不应该只是一个警告,因为它有时希望明确不使用接口。

1

想到这一点,我也希望看到二进制分析足够聪明,以检查可能的访问修饰符的降级。

不应该很难确定一个类,属性或方法是否会受到更多限制。

相关问题