任何人都可以告诉我如何从以下代码中删除所有CA2202警告?
public static byte[] Encrypt(string data, byte[] key, byte[] iv)
{
using(MemoryStream memoryStream = new MemoryStream())
{
using (DESCryptoServiceProvider cryptograph = new DESCryptoServiceProvider())
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptograph.CreateEncryptor(key, iv), CryptoStreamMode.Write))
{
using(StreamWriter streamWriter = new StreamWriter(cryptoStream))
{
streamWriter.Write(data);
}
}
}
return memoryStream.ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)
警告7 CA2202:Microsoft.Usage:对象'cryptoStream'可以在方法'CryptoServices.Encrypt(string,byte [],byte [])'中多次处理.为避免生成System.ObjectDisposedException,不应在对象上多次调用Dispose:Lines:34
警告8 CA2202:Microsoft.Usage:对象'memoryStream'可以在方法'CryptoServices.Encrypt(string,byte [],byte [])'中多次处理.为避免生成System.ObjectDisposedException,不应在对象上多次调用Dispose:Lines:34,37
您需要Visual Studio代码分析才能看到这些警告(这些不是c#编译器警告).
Stylecop取代了FXcop吗?我们应该在Visual Studio 2008中使用哪种产品?
在Kathleen Dollard最近的博客文章中,她提出了一个在.net中使用嵌套类的有趣理由.但是,她还提到FxCop不喜欢嵌套类.我假设编写FxCop规则的人并不愚蠢,所以必须在该位置背后有推理,但我无法找到它.
我在Visual Studio的项目中使用了以前的StyleCop + FxCop.但现在我正在测试Visual Studio代码分析工具,它更容易集成到MSBuild中,我发现这个工具分析了FxCop和StyleCop的一些规则.
这个工具是FxCop和StyleCop的完全替代品还是只是实现了一些规则?
我尝试在命名*中语法正确.我总是用filename
而不是fileName
.java约定似乎也使用它,但FxCop更喜欢fileName
.
有关WikiPedia的讨论.我读的越多,我就越觉得我是对的(这很常见!:)).有没有人有明确的答案或者这仅仅是主观的?
*我希望这篇文章中没有语法错误!
我从FxCop得到这个警告:
"'RestartForm'包含IDisposable类型的字段'RestartForm.done':'ManualResetEvent'.更改'RestartForm'上的Dispose方法以在此字段上调用Dispose或Close."
好的,我明白这意味着什么以及为什么这是需要做的...除了System.Windows.Forms.Form
不允许你覆盖.Close()
或者.Dispose()
,所以该怎么办?目前我正在运行此解决方案:
private void RestartForm_FormClosing(object sender, FormClosingEventArgs e)
{
done.Set();
done.Close();
}
Run Code Online (Sandbox Code Playgroud)
这适用于我的应用程序...但FxCop仍然显示此消息.我是否被覆盖,我可以安全地忽略它,还是我应该采取另一种方式做到这一点?
在FxCop 10之后,Microsoft停止为FxCop发布单独的安装程序.在安装Visual Studio 2013/2015/2017之后,官方目前只能运行代码分析(FxCop 12.0/14.0/15.0).但是,我们坚持不在构建代理上安装Visual Studio(安装需要保留在 - 与我们在开发者计算机上获得的内容同步等).
那么我将如何让FxCop 12.0/14.0/15.0在构建代理上工作,最好不要安装其他任何东西?不过,我会接受为源代码控制添加一些二进制文件和msbuild文件.否则:有没有办法只使用Visual Studio 2013/2015/2017安装程序安装FxCop的东西?
注意:我们使用Teamcity作为构建服务器.
由于特定环境和FxCop版本有多个有效答案,我可以自由地将它们链接到此处以便于访问:
如何使FxCop自定义词典正常工作?
我尝试在文件'CustomDictionary.xml'中添加要识别的单词,该文件与FxCop项目文件保存在同一文件夹中.这似乎不起作用,因为即使重新加载并重新运行FxCop,我仍然会得到'标识符拼写正确'的FxCop消息.使用版本1.36.
我知道Visual Studio 2010内置了一个新的代码分析工具,但这仅适用于高级版和终极版.从我可以看到最新的FxCop支持.NET 3.5 SP1.搜索我无法找到任何针对.NET 4.0的FxCop的引用.是否有计划继续提供FxCop并支持.NET 4.0?我在哪里可以找到有关它的更多信息并下载它?
fxcop ×10
.net ×4
c# ×4
stylecop ×2
.net-4.0 ×1
build-server ×1
class ×1
dictionary ×1
dispose ×1
localization ×1
msbuild ×1
naming ×1
nested ×1
winforms ×1