如何抑制整个类型的FxCop警告?
namespace ConsoleApplication1
{
public static class Serializer<T>
{
public static string Serialize(T obj)
{
return string.Empty;
}
public static T Deserialize(string str)
{
return default(T);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过这个,但它对我不起作用:
[assembly: SuppressMessage("Microsoft.Design",
"CA1000:DoNotDeclareStaticMembersOnGenericTypes", Scope = "Type",
Target = "ConsoleApplication1.Serializer'1")]
Run Code Online (Sandbox Code Playgroud) FxCop 10抱怨以下内容:
using XYZ.Blah; //CA1709 - "XYZ"
using Xyz.Blah; //No complaint.
using XylophoneSuperDuperLongFullName.Blah; //I don't want to have a long full name for my company name.
Run Code Online (Sandbox Code Playgroud)
问题是......我希望我的公司名称显示在所有大写字母中,因为XYZ是缩写.该名称的长版本太长,无法成为有用的命名空间.微软逃脱了这种东西,因为他们的首字母缩写只有两个字母.
using MS.Something; //No Complaint.
using Microsoft.SomethingElse; //No Complaint.
Run Code Online (Sandbox Code Playgroud)
所以,我正在考虑添加一个SuppressMessageAttribute来抑制此警告.但是,我不确定如何恰当地这样做(或者甚至在哪里坚持它),以便它只影响这一个实例.我不想在该命名空间中抑制任何内容,因为我想抓住我犯的任何其他错误.我确实看过msdn和谷歌搜索但我找不到任何显示如何专门针对这个实例.我发现最接近的是Scope ="namespace",但我不确定这是否意味着它会影响实际的命名空间名称,或者它是否会影响该命名空间中的所有内容.
我最近开始使用它.然而,在针对我公司最大的一个项目运行之后.它引发了大量的问题.
问题列表如此庞大,如果不是所有的东西,需要花费数天的时间来找到并修复一些问题.
现在,我知道解决FxCop告诉你解决的所有问题并不是很实际.但由于我是这个小工具的新手...
有效使用FxCop有哪些好的提示和技巧?
在新项目和现有项目上?
如果还提供我公司的程序员一般写好代码?
如果我的所有方法都需要公开一个集合,那么我需要使用Linq扩展.ToList(),几乎我需要在所有代码中使用列表或用户集合.
如果是这种情况,.ToList()忽略规则吧?或者是否有一种技术,如复制列表,以修复违规并仍然返回列表?
我们使用FxCop的全局抑制来抑制旧代码中发现的规则违规.旧代码我的意思是在我们开启代码分析之前几年编写的代码.我们修复了新代码中的违规行为 我们无法一次性修复旧代码中的违规行为,因此我们使用了抑制.
随着时间的推移,我们的全局抑制文件变得臃肿 通常,当签名在旧方法上发生更改时,先前的抑制将变为无效,因为它不再与代码匹配.我们创建了新的抑制来忽略旧的违规,但通常会留下旧的SuppressMessage属性.
有人知道如何识别与代码不匹配的SupressMessage声明吗?对于这个问题,是否有人知道如何识别无效的SuppressMessage属性,因为没有违反的压力?
我想可能存在可能识别未使用的抑制的编译器或FxCopCmd警告或日志消息.如果没有,那么有人知道脚本或VS扩展吗?
谢谢.
FxCop(静态代码分析工具)在检查.edmx模型后面的代码时给出了错误.如何防止FxCop分析自动生成的代码(或至少是Entity Framework生成的类)?
.net code-analysis entity-framework fxcop visual-studio-2010
在重构时,在一些程序集周围移动等等.我在Visual Studio中编译了一个解决方案并找回了一条错误消息:"FxCop退出时出现错误代码512".除了这个错误之外,构建似乎很好.
有谁知道这实际上意味着什么?我可以从哪里开始寻找解决方法?将FailOnError设置为false不是我想要关闭的路径.
我想获得最新版本的FxCop.我使用的是不包含代码分析的Visual Studio 2010专业版,因此我尝试使用FxCop进行设置.
在http://www.microsoft.com/en-us/download/details.aspx?id=6544上有自述文件说安装包含最新FxCop的Windows SDK.我从这里安装了Windows SDK http://www.microsoft.com/en-us/download/details.aspx?id=8442,它根本不包括FxCop,我检查了x86和x64版本.
知道我在哪里可以找到它吗?FxCop是否已被Microsoft支持?
编辑: 我完全安装了Windows SDK.我在Windows 7 x86上安装x86版本.我只在x64 Windows SDK ISO中搜索FxCop,只能将其解压缩到文件夹中.
我找到FxCop 10的唯一地方是回答/sf/answers/500638701/
我目前使用Managed Binary Analysis,看起来nuget添加了相同的规则(可能更少).
我也使用这个SonarQube插件:https://github.com/SonarQubeCommunity/sonar-fxcop.
准确的是什么?
出于好奇,我想知道如何最好地实现一个可用于避免CA1006警告的类
CA1006:Microsoft.Design:考虑一种设计,其中'IReader.Query(String,String)'不嵌套泛型类型'IList(Of IDictionary(Of String,Object))'.
这是返回泛型类型的方法
public virtual IList<IDictionary<string, object>> Query(
string fullFileName,
string sheetName)
{
using (var connection = new OdbcConnection(
this.GetOdbcConnectionString(fullFileName)))
{
connection.Open();
return connection
.Query(string.Format(
CultureInfo.InvariantCulture,
SystemResources.ExcelReader_Query_select_top_128___from__0_,
sheetName))
.Cast<IDictionary<string, object>>()
.ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
就像是
SourceData<T, U> Query(string fullFileName, string sheetName)
SourceData Query(string fullFileName, string sheetName)
Run Code Online (Sandbox Code Playgroud)
编辑:
根据Marc的建议,我在这个类中封装了嵌套泛型
public class QueryRow : List<KeyValuePair<string, object>>
{
protected internal QueryRow(IEnumerable<KeyValuePair<string, object>> dictionary)
{
this.AddRange(dictionary.Select(kvp => kvp));
}
}
Run Code Online (Sandbox Code Playgroud) fxcop ×10
.net ×5
c# ×5
analyzer ×1
coding-style ×1
dapper ×1
generics ×1
ienumerable ×1
linq ×1
namespaces ×1
stylecop ×1
winapi ×1
windows-7 ×1