标签: fxcop

命名:价目表与PriceList

哪个更正确,"PriceList"还是"Pricelist"?

FxCop说:CA1702:Microsoft.Naming:类型名称'PriceList'中的复合词'PriceList'作为离散术语存在.如果您的用法是单字,请将其称为"价目表".

编辑:这是一个标题,开始/结束日期等对象.

.net naming code-analysis fxcop naming-conventions

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

当属性getter/setter需要LinkDemand时,如何安抚FxCop?

我在班级酒吧有一个房产Foo:

public int Foo
{
   get
   {
      return GetFoo();
   }
   set
   {
      SetFoo(value);
   }
}
Run Code Online (Sandbox Code Playgroud)

双方GetFooSetFoo都装饰有:

[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
Run Code Online (Sandbox Code Playgroud)

结果,FxCop正确地抱怨Foo属性(或者更确切地说是它的隐式getter和setter方法)没有相同的LinkDemand:

CA2122:Microsoft.Security:'Bar.Foo.get()'调用具有LinkDemand的'Bar.GetFoo()'.通过进行此调用,'Bar.GetFoo()'间接暴露给用户代码.查看以下可能提供绕过安全保护的方法的调用堆栈:

但是,当我尝试将相同的SecurityPermission属性应用于属性以修复此警告时,事实证明属性不是此属性的有效目标.

如何正确修复此FxCop警告?


编辑:回应Eric Lippert的评论"为什么在地球上的LinkDemand"?

  1. 我使用Marshal.GetIUnknownForObject编写了一个函数,它具有用于非托管代码权限的LinkDemand.
  2. 我跑了FxCop,抱怨CA2122
  3. 我用谷歌搜索CA2122寻找有关错误意味着什么以及如何解决它的提示
  4. 在第一次谷歌热播中,我看到了Micheal Fanning建议使用LinkDemand解决错误

在阅读了你的反应之后,我很快就猜到了范宁的建议并不适用于我的情况.我现在看一下Demand vs. LinkDemand文章,并尝试使用Demand.

c# permissions fxcop

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

具有许多条件返回语句的重构方法

我有一个验证方法,有许多条件语句.基本上就是这样

If Check1 = false 
  return false
If Check2 = false
  return false
etc
Run Code Online (Sandbox Code Playgroud)

FxCop抱怨说圈复杂度太高了.我知道在函数中间使用return语句不是最佳实践,但与此同时,我看到的唯一替代方法是一个丑陋的If-else语句列表.解决这个问题的最佳方法是什么?

提前致谢.

.net refactoring code-analysis fxcop

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

FxCop讨厌我对MVVM的使用

我刚刚开始使用FxCop来查看我的代码对其完整规则的影响有多么糟糕.我开始使用"Breaking"规则,我遇到的第一个是CA2227,它基本上说你应该只读取一个collection属性的setter,这样你就不会意外地改变收集数据.

由于我使用MVVM,我发现使用带有get/set属性的ObservableCollection非常方便,因为它使我的GUI更新在代码隐藏中变得简单和简洁.但是,我也可以看到FxCop在抱怨什么.

我遇到的另一种情况是使用WF,我需要在创建工作流时设置参数,我不得不围绕我正在使用的集合编写一个包装类,以避免出现这种特殊的错误消息.

例如,这是我在readonly创建属性时获得的示例运行时错误消息:

The activity 'MyWorkflow' has no public writable property named 'MyCollectionOfStuff'
Run Code Online (Sandbox Code Playgroud)

你对此有何看法?我可以忽略这个特定的错误,但这可能并不好,因为我可以想象在MVVM不适用的代码中的其他地方违反了这个规则(例如,仅建模代码).我我也可以通过操作底层集合的方法将它从属性更改为类,然后从setter方法引发必要的通知.我有点困惑......任何人都可以对此有所了解吗?

c# data-binding fxcop observablecollection mvvm

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

代码分析警告CA2000:对对象'new ContainerControlledLifetimeManager()'调用Dispose

我在一些单元测试中收到代码分析警告:

WidgetManagerTests.cs(40):CA2000:Microsoft.Reliability:在方法'WidgetManagerTests.TestInitialize()'中,在对所有引用超出范围之前,在对象'new ContainerControlledLifetimeManager()'上调用System.IDisposable.Dispose.

我正在使用Unity和Moq,这是违规行:

var loggingServiceMock = new Mock<ILoggingService>();
            this.unityContainer.RegisterInstance<ILoggingService>(loggingServiceMock.Object, new ContainerControlledLifetimeManager());
Run Code Online (Sandbox Code Playgroud)

code-analysis fxcop unity-container

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

FXCop抑制警告CA1800(不必要的演员)

我有以下代码:

[SuppressMessage( "Microsoft.Performance", "CA1800:DoNotCastUnnecessarily" )]
private static void SetTestConnectionString( Component table )
{
    if( table is Object1 )
    {
        fn1( (Object1)table );
    }
    // ... a few more if statements for different Classes
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行FxCop此类/函数时,它仍会生成警告

警告:CA1800:Microsoft.Performance:'table',一个参数,在方法'ccc.SetTestConnectionString(Component)'中多次强制输入'xxx'.缓存'as'运算符或直接强制转换的结果,以消除冗余的castclass指令.

我知道我可以重构此代码以删除警告,但是它会降低代码的可读性.在这个例子中,我想在这一个函数上抑制这一条消息.

我究竟做错了什么?

c# fxcop suppression

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

TeamCity和FXCop版本10

我们正在努力让我们的TeamCity 5.1安装使用我们的FXCop项目文件.它显然不喜欢最新版本V10:

[08:26:33]: Failed loading FxCop project.
[08:26:33]: Error text: This project file is version 10.0 but the current application version is 1.36. Please download a more recent version of FxCop to open this file..
[08:26:33]: Process exited with code 1
Run Code Online (Sandbox Code Playgroud)

有没有办法升级TeamCity使用的版本,还是我需要降级我们在工作站上使用的版本?

有谁知道TeamCity 6是否支持FXCop 10?

teamcity fxcop

3
推荐指数
2
解决办法
2892
查看次数

.NET语言中的error关键字

哪种.NET语言error作为关键字?

我有一个名为的类Error,FxCop说这是一个保留的语言关键字.

.net fxcop

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

CA2227 With Dictionary有什么问题?

public Dictionary<string, string> Data { get; set; }
Run Code Online (Sandbox Code Playgroud)

使用上面的代码行我得到样式警察错误,CA2227集合属性应该是只读的.

有没有什么方法可以在不添加Stylecop抑制或必须创建自己的只读字典类的情况下移过此错误?

c# dictionary fxcop asp.net-mvc-3

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

Gendarme vs FxCop

GendarmeFxCop看起来非常相似,似乎解决了同样的问题.对于一个主要从事具有大量业务逻辑的Web应用程序的开发人员团队(3-5),您会建议哪一个?为什么?

asp.net fxcop gendarme

3
推荐指数
2
解决办法
4095
查看次数