标签: fxcop

FXCop投射警告

运行FXCop时出现以下错误:

CA1800:Microsoft.Performance:'obj',一个变量,在方法'ProductsController.Details(int,int)'中被多次强制输入'Job'.缓存'as'运算符或直接强制转换的结果,以消除冗余的castclass指令

码:

        object obj = repository.GetJobOrPlace(jobId);//Returns  (object) place or (object) product

        if (obj != null)
        {
            if (obj is Job)
            {
                Job j = (Job) obj;
                Debug.WriteLine(j.Title);
            }
            else if (obj is Place)
            {
                Place p = (Place) obj;
                Debug.WriteLine(p.Title);
            }
        }
Run Code Online (Sandbox Code Playgroud)

这有什么问题?我只能看到一个演员阵容:Job j =(Job)obj.

c# fxcop

2
推荐指数
1
解决办法
812
查看次数

FXCop违规CA1716 IdentifiersShouldNotMatchKeyword

我们最近开始在代码库中使用FxCop,我正在评估问题.一个是IdentifiersShouldNotMatchKeywords问题.这适用于命名空间company.blah.Event,它希望我将其更改为其他内容,因为event是关键字. 文档说:

何时禁止警告请勿禁止此规则发出警告.该库可能无法在.NET Framework中的所有可用语言中使用.

在什么情况下可能无法获得?我需要更改吗?我想它不会很受欢迎.

c# fxcop identifier

2
推荐指数
1
解决办法
1100
查看次数

为什么FXCop在禁用运行时检查时会违反Contract类?

一旦在项目的属性中禁用运行时合同检查,就会为合同类抛出FxCop违规(假设您通过接口实现合同,然后在抽象类中定义合同).

重新启用运行时合同检查,所有违规都会消失.

这是什么原因?

违规行为:

CA1811 ObjectInvariant似乎没有上游调用者

CA1033使MyClassContract密封

这是没有意义的,因为合同类必须是抽象的.

c# fxcop code-contracts

2
推荐指数
1
解决办法
427
查看次数

我应该对Visual Studio中的代码分析合规性有多严格?

在为我正在开展的一个小项目中使用Code Analysis之后,我想知道在解析代码符合分析时我应该有多严重.

我知道我可以为此禁止警告,但对我来说,在某种程度上抑制警告是一个警告(没有双关语意图......"FXCop").

示例警告:

不要在意外位置引发异常'CustomObject.Equals(object)'会创建类型为'ArgumentException'的异常.在这种方法中不应该提出例外.如果可能引发此异常实例,请更改此方法的逻辑,以便不再引发异常.

扔这个的原因......

CustomObject.Equals(object)可能会尝试比较CustomObject和FooBarObject ...它们甚至不是同一类型,所以在这个实例中,我应该抛出异常,还是只返回false?


一般来说,我是否应该真正肛门(因为想要一个更好的词)使我的代码绝对合规,或者我会遇到需要警告抑制的情况?

warnings code-analysis fxcop standards-compliance visual-studio

2
推荐指数
1
解决办法
373
查看次数

我们可以使用C#创建一个FxCop自定义规则来检查类文件中的Comments Ratio

我知道FxCOP自定义规则适用于IL代码.还已经创建了一个自定义规则来检查方法的输入参数数量.现在,我想知道我们是否可以创建自定义规则以在类文件中实现评论比率(即1:15).请告诉我你的看法.

c# fxcop

2
推荐指数
1
解决办法
676
查看次数

从缓存中获取对象时,代码是启发式无法访问的

我有以下代码,如果对象在缓存中获取它的想法很简单,如果没有然后从数据源检索它并将其保存到缓存中,我使用resharper我得到了这个警告但是无法理解为什么

 public static ModulosPorUsuario GetModulesForUser(string identityname)
        {
            // It needs to be cached for every user because every user can have different modules enabled.
            var cachekeyname = "ApplicationModulesPerUser|" + identityname;

            var cache = CacheConnectionHelper.Connection.GetDatabase();
            ModulosPorUsuario modulosUsuario;

            //get object from cache
            string modulosUsuariosString = cache.StringGet(cachekeyname);

            // ReSharper disable once ConditionIsAlwaysTrueOrFalse
            if (modulosUsuariosString != null)
            {
                //conver string to our object
                modulosUsuario = JsonConvert.DeserializeObject<ModulosPorUsuario>(modulosUsuariosString);
                return modulosUsuario;
            }
            // ReSharper disable once HeuristicUnreachableCode
            modulosUsuario = DbApp.ModulosPorUsuario.Where(p => p.Email == identityname).FirstOrDefault();

            //convert object to …
Run Code Online (Sandbox Code Playgroud)

c# resharper fxcop

2
推荐指数
1
解决办法
483
查看次数

CA2000:Microsoft.Reliability对象未沿所有异常路径放置

我在下面的方法中得到代码分析错误.

    public static OracleCommand CreateStoredProcedureCommand(string name,
                                                             OracleConnection connection)
    {
        return new OracleCommand(name, connection) { CommandType = CommandType.StoredProcedure };
    }
Run Code Online (Sandbox Code Playgroud)

CA2000:Microsoft.Reliability:在方法'StoredProcedureHelper.CreateStoredProcedureCommand(string,OracleConnection)'中,对象'command'未沿所有异常路径放置.在对所有引用超出范围之前,调用System.IDisposable.Dispose对象'command'

如何在不压制这个的情况下解决这个问题?

c# fxcop visual-studio-2010

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

MsBuild和FxCop问题

我正在尝试使用cmd或jenkins构建作业使用msbuild运行构建文件.

该项目的结构是

项目结构

演示在这里:www.saramgsilva.com/wp7/sarasilvademo.rar

现在我有3种不同的方式来运行fxcop,但我总是有问题.

1)在cmd中转到根文件然后运行

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe  .\SaraSilva.WP7.build /target:FxCop
Run Code Online (Sandbox Code Playgroud)

这显示错误:退出代码128

2)在cmd中转到根文件然后运行

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe  .\SaraSilva.WP7C.build /target:FxCop
Run Code Online (Sandbox Code Playgroud)

这不会创建buildartifacts\FxCop\FxCopAnalysis.xml文件.

3)在cmd中转到根文件然后运行

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe  .\SaraSilva.WP7.build /target:TestWithCoverage
Run Code Online (Sandbox Code Playgroud)

C:\SaraSilvaDemo\tools\FxCop-1.36\FxCopCmd.exe /file:C:\SaraSilvaDemo\buildartifacts /directory:C:\SaraSilvaDemo\buildartifacts\ /rule:C:\SaraSilvaDemo\tools\FxCop-1.36\Rules /out:C:\SaraSilvaDemo\buildartifacts\fxcop-result.xml
Run Code Online (Sandbox Code Playgroud)

结果是:

Microsoft(R)FxCop命令行工具,版本1.36(9.0.30729.1)版权所有(C)2007 Microsoft Corporation.版权所有.

加载DesignRules.dll ...加载GlobalizationRules.dll ...加载InteroperabilityRules.dll ...加载MobilityRules.dll ...加载NamingRules.dll ...加载PerformanceRules.dll ...加载PortabilityRules.dll ...加载SecurityRules.dll ...已加载UsageRules.dll ...无法加载Cimbalino.Phone.Toolkit.dll.无法加载GalaSoft.MvvmLight.Extras.WP71.dll.无法加载GalaSoft.MvvmLight.WP71.dll.无法加载Microsoft.Phone.Controls.dll.无法加载Microsoft.Practices.ServiceLocation.dll.无法加载mscorlib.Extensions.dll.无法加载NLog.dll.已加载nunit.framework.dll ...已加载SaraSilva.WP7.AllTests.dll ...无法加载SaraSilva.WP7.App.dll.无法加载SaraSilva.WP7.Model.dll.无法加载SaraSilva.WP7.SampleData.dll.无法加载SaraSilva.WP7.SchedTask.dll.无法加载SaraSilva.WP7.Service.dll.加载System.Core.dll ...无法加载System.dll.无法加载System.Windows.Browser.dll.加载System.Windows.dll ...无法加载System.Windows.Interactivity.dll.无法加载System.Xml.dll.无法加载TombstoneHelper.dll.初始化Introspection引擎...无法解析对System.Net的引用.分析完成.

注意:找不到一个或多个引用的程序集.使用'/ directory'开关指定其他程序集引用搜索路径.

  • 没有进行分析; 必须至少指定一个有效的规则程序集和一个有效的目标文件.
  • 2总分析引擎异常.将报告写入C:\ SaraSilvaDemo\buildartifacts\fxcop-result.xml ...完成.

我不知道该怎么办 :(

msbuild fxcop

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

Stylecop抑制Reference.cs文件的错误

我刚才问过类似的问题,关于从自动生成的代码Service ReferencesXml summary errors.发布了一个答案,建议我可以将Service Reference其添加到自己的项目中,然后它可以完全避免Xml摘要警告和Stylecop错误.

但我意识到我能够Xml通过设置Service Reference来解决问题,Internal现在我已经陷入了StyleCop错误.

我使用的是FxCop10.0版.

在我的项目的属性中,在"代码分析"选项卡中,我检查了选项

从生成的代码中抑制结果(仅限托管)

另外,通过查看Reference.cs文件中生成的代码,我看到代码使用以下属性进行修饰:

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
Run Code Online (Sandbox Code Playgroud)

.. Stylecop然后应该跳过,对吗?虽然这不起作用,但我仍然会StyleCop为生成的代码收到错误.

编辑:在生成的代码中也可以找到以下标题:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.18033
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

那为什么不被忽视呢? …

fxcop stylecop suppress-warnings service-reference

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

CA1008:枚举应具有零值和标志枚举

即使我完全知道CA1008警告存在的原因,我也不知道在下列情况下如何避免它.我有一个具有以下含义的Flag枚举:

ValidValue = 0x01
WrittenValue = 0x02
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下,0表示InvalidValueNonWritten而不是None.规则

除了先前已发布的标记属性枚举之外,请勿禁止此规则发出警告.

在这种情况下,我没有发送枚举,所以如何防止此警告?

编辑:

警告明确说:

警告86 CA1008:Microsoft.Design:在枚举"XXX"中,将"XXX.InvalidValueNonWritten"的名称更改为"无".

编辑2:

枚举的更多状态:

CommandValue = 0x04 // Otherwise it is DataValue
InmediateValue = 0x08 // Otherwise it is Deferred
Run Code Online (Sandbox Code Playgroud)

.net c# enums fxcop enum-flags

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