Tag: fxcop

为什么FxCop警告此C#代码中的溢出(CA2233)?

我有以下函数从高字节和低字节获取一个int: public static int FromBytes(byte high, byte low) { return high * (byte.MaxValue + 1) + low; } 当我使用FxCop分析程序集时,我收到以下严重警告: CA2233:OperationsShouldNotOverflow 如果没有首先validation操作数以防止溢出,则不应进行算术运算。 我无法看到这可能会溢出,所以我只是假设FxCop过于热心。 我错过了什么吗? 我可以采取哪些步骤来纠正我所拥有的(或至少使FxCop警告消失!)?

CS8019临时文件MSBuild Server上的Assemblyinfo出错

我的构建服务器上出现代码分析错误,错误是 … NETFramework,Version = v4.6.AssemblyAttributes.cs(3,1):错误CS8019:不必要的using指令。 这是Visual Studio创建的Temp文件。 在我的项目中,我有“ 从生成的代码中抑制结果(仅限管理) ”。 我原以为这就足够了。 但我仍然得到服务器上的错误,本地我没有。 有任何想法吗?

“CA2000:在丢失范围之前处置对象”构建Unity容器

我正在使用以下代码,我得到fxCop voilation CA2000:在丢失范围之前处置对象: private static IUnityContainer BuildContainer() { var container = new UnityContainer().LoadConfiguration(); return container; } 删除此违规我使用以下代码: private static IUntyContainer BuildContainer() { using(var container = new UnityContainer()) { return container.LoadConfiguration(); } } 但是这段代码在解析依赖项时开始抛出exception。 有人可以帮我弄这个吗?

FXCop自定义规则不会显示在RuleSet中

我按照此处的步骤创建了一个新的自定义规则,并将其添加到VSStudio 2013中的规则集: http://blog.tatham.oddie.com.au/2010/01/06/custom-code-analysis-rules-in-vs2010-and-how-to-make-them-run-in-fxcop-and- VS2008太/ 但是,尽管我付出了很多努力,但自定义规则并未显示在规则集文件中。 如果我在FXCop编辑器中添加规则,它会显示并正确分析目标项目。 这是规则文件,它是项目中的嵌入式资源 : Enforce Hungarian Notation Checks fields for compliance with Hungarian notation. Field {0} is not in Hungarian notation. Field name should be prefixed with ‘{1}’. Error Breaking 这是我的RuleSet: C:\App\PSI\Development\Source\JHA.ProfitStars.PSI\JHA.ProfitStars .PSI.FxCop\bin\Debug 我甚至尝试添加下面的行,但现在它在规则集中显示了一条未知规则: 有人可以帮我理解我在这里做错了什么吗? 编辑: 规则的BaseClass: internal abstract class BaseFxCopRule : BaseIntrospectionRule { protected BaseFxCopRule(string ruleName) : base(ruleName, “JHA.ProfitStars.PSI.FxCop.Rules”, typeof(BaseFxCopRule).Assembly) […]

没有.pdb文件的C#分析失败

我正在尝试使用SonarQube 4.2的新C#插件v3.0。 根据插件文档,我需要.pdb文件来运行包含FxCop规则的分析,如果输出文件夹中没有所说的.pdb文件,我确实在执行sonar-runner时会收到失败消息。 FxCop以代码1536退出。 问题是,分析似乎需要所有二进制文件的.pdb文件,输出文件夹除了我自己编译的代码外还包含几个依赖项。 这些是NuGet包,我找不到所有这些包的符号文件。 那么,有没有什么办法可以让你的分析跳过没有调试符号的文件? 常规SonarQube文件排除列表似乎仅适用于源代码文件(例如* .designer.cs)而不适用于二进制文件。

如何通过命令行在MSBuild中指定CodeAnalysisRules

我希望能够在命令行MSBuild中指定Code AnalysisRules(用于代码分析/ FXCOP)。 项目文件中会包含以下内容: -Microsoft.Globalization#CA1301;-Microsoft.Globalization#CA1302 所以我假设我使用这样的东西: MSBuild.exe /property:RunCodeAnalysis=true /property:CodeAnalysisRules=-Microsoft.Globalization#CA1301 哪个工作正常, 但是当我想添加另一个规则时,它不喜欢半冒号: MSBuild.exe /property:RunCodeAnalysis=true /property:CodeAnalysisRules=-Microsoft.Globalization#CA1301;-Microsoft.Globalization#CA1302 MSBUILD : error MSB1006: Property is not valid. Switch: -Microsoft.Globalization#CA1302 如何指定多个规则? 我很乐意引用一个文件,但我不想只更改项目文件。 Backgroud :我想为持续集成服务器创建一组规则(在我的例子中是Hudson)。 注意:我正在运行Visual Studio 2005

FxCop中的自定义规则仅适用于特定类型方法调用的方法

我想创建一个应用方法的FxRule,只有在从特定类调用该方法时才会这样做。 注意:我不想只是将规则应用于特定类的方法,我希望能够处理调用其他方法调用其他方法进行装箱的方法。 我想让FxCop报告与拳击方法相关的问题。 以下是我到目前为止的代码: using System; using System.Linq; using Microsoft.FxCop.Sdk; using System.Collections.Generic; class CheckUpdatableComponents : BaseIntrospectionRule { private string[] MethodsToCheck = new string[] { “BeginDraw”, “BeginRun”, “Draw”, “EndRun”, “EndDraw”, “Update” }; /// Gets the base class hooked up. public CheckUpdatableComponents() : base(“CheckUpdatableComponents”, “FxCopRules.Rules”, typeof(CheckUpdatableComponents).Assembly) { } public override ProblemCollection Check(string namespaceName, TypeNodeCollection types) { foreach […]

FxCop死了吗? 可以和VS2015一起使用吗?

我正在浏览Stack Overflow和Google,了解有关自动编码风格练习工具的信息,并找到了FxCop。 但是我没有找到微软最近关于FxCop的文章。 所以,我想知道FxCop是否已经死了。 FxCop可以与Visual Studio 2015一起使用吗? 它是否适用于执行C#设计指南?

分析FxCop /代码分析警告CA1506:avoidExcessiveClassCoupling

我正在为C#类获取Visual Studio代码分析警告CA1506。 它说,”FormMain’与来自25个不同命名空间的93种不同(非IComponent)类型相结合。重写或重构此类的方法以减少其类耦合,或考虑将某些类的方法移动到其他一些类型高于95的类耦合表明可维护性差,95到80之间的类耦合表明适度的可维护性,低于80的类耦合表明良好的可维护性。 我的问题很简单,我在哪里可以看到FormMain所有类型的列表,所以我可以更好地了解情况? 谢谢。

在具有13个事件处理程序订阅的方法中,圈复杂度如何才能成为27?

我们有这个代码,排序: private void InitializeEvents() { this.Event1 += (s,e) => { }; this.Event2 += (s,e) => { }; this.Event3 += (s,e) => { }; this.Event4 += (s,e) => { }; this.Event5 += (s,e) => { }; this.Event6 += (s,e) => { }; this.Event7 += (s,e) => { }; this.Event8 += (s,e) => { }; this.Event9 += […]