标签: fxcop

是否有自定义FxCop规则来检测未使用的PUBLIC方法?

我刚试过FxCop.它确实检测未使用的私有方法,但不检测未使用的公共 是否有可以下载的自定义规则,插件将检测未在同一程序集中调用的公共方法?

.net code-analysis fxcop public-method

9
推荐指数
3
解决办法
8338
查看次数

FxCop - 在适当的地方使用属性

我在服务层有接口,有几个方法,从Get和FxCop的Use属性开始,适当的规则抱怨我应该考虑使用属性.

我尝试使用SuppressMessageAttribute,但是当它在接口上定义时,它对成员方法没有影响.我是否需要将SuppressMessageAttribute放到每个方法中,还是有办法抑制整个类型的CA1024

[SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate"]
public interface IProjectService
{
    // Information and statistics about projects
    IList<ProjectInfo> GetProjects();
    ProjectsDashboard GetProjectsDashboard();

    // Project's settings
    ProjectSettings GetProjectSettings(Guid id);

    void SaveProjectSettings(ProjectSettings settings);
}
Run Code Online (Sandbox Code Playgroud)

c# code-analysis fxcop

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

你如何从遗留代码的FxCop开始?

有没有人有将FxCop引入遗留代码的经验?如果有人引入违反规则的代码,我们希望我们的构建失败.但就目前而言,这是不可能的,因为遗留代码有超过9000个违规行为.

抑制我所知错误的唯一方法是通过SuppressMessage属性,但这只适用于方法和GeneratedCodeAttribute.最后一个可以用于类和命名空间(如果我没记错的话),但不应该用于非生成的代码(参见这里).

现在,我们每天花一些时间来删除违规行为,但新的违规行为仍在继续,因为我们的构建不会失败.

有任何想法吗?

legacy fxcop legacy-code

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

fxcop是提高代码质量的宝贵/有效工具吗?

我有一个高质量的c#框架代码库,但我仍然希望尝试改进.

  1. fxcop是改进.NET框架的有效工具吗?我知道Microsoft在内部使用该工具,但外部用户如何找到它?值得吗?

  2. 我已经拥有数十亿行代码和完善的风格,能否适应我们的风格并仍能提供良好的指导?

  3. 粗略地说,设置需要多长时间?小时,天,周?我会尽快学到一些有用的东西吗?

c# fxcop

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

为什么"返回数组的属性容易出现代码效率低下"?

我有一段代码处理存储在数据库中的客户.有一个对象Customer,它有两个类型的属性byte[]:一个用于密码盐,另一个用于密码哈希.

使用FxCop检查代码,我看到它抱怨(CA1819,性能规则):

"返回数组的属性容易导致代码效率低下.考虑使用集合或将其作为方法.有关详细信息,请参阅设计指南."

并建议:

"更改'Customer.PasswordHash'以返回集合或使其成为方法."

我真的不明白,我正在做的代码效率低下是什么?

oop performance fxcop

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

如何实现通用的IEnumerable或IDictionary来避免CA1006?

出于好奇,我想知道如何最好地实现一个可用于避免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)

c# generics ienumerable fxcop dapper

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

FX COP无法解析类型引用:System.Windows.Input.ICommand

仅在我们的buildagent上使用FXCOP时遇到麻烦,并且只能通过命令行工具.

我正在使用Caliburn.Mirco框架并添加了自定义触发器,因此我可以使用删除按钮.此类实现ICommand接口

错误是:"读取模块'MyProject.UI'时遇到以下错误:无法解析类型引用:[System,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089] System.Windows.Input.ICommand"

完整的错误日志

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="C:\BuildAgent\work\program files\microsoft fxcop 1.36\Xml\FxCopReport.xsl"?>
<FxCopReport Version="10.0">
 <Localized>
  <String Key="Category">Category</String>
  <String Key="Certainty">Certainty</String>
  <String Key="CollapseAll">Collapse All</String>
  <String Key="CheckId">Check Id</String>
  <String Key="Error">Error</String>
  <String Key="Errors">error(s)</String>
  <String Key="ExpandAll">Expand All</String>
  <String Key="Help">Help</String>
  <String Key="Line">Line</String>
  <String Key="Messages">message(s)</String>
  <String Key="LocationNotStoredInPdb">[Location not stored in Pdb]</String>
  <String Key="Project">Project</String>
  <String Key="Resolution">Resolution</String>
  <String Key="Rule">Rule</String>
  <String Key="RuleFile">Rule File</String>
  <String Key="RuleDescription">Rule Description</String>
  <String Key="Source">Source</String>
  <String Key="Status">Status</String>
  <String Key="Target">Target</String>
  <String Key="Warning">Warning</String>
  <String Key="Warnings">warning(s)</String>
  <String Key="ReportTitle">Code Analysis Report</String>
 </Localized>
 <Exceptions> …
Run Code Online (Sandbox Code Playgroud)

c# wpf teamcity fxcop caliburn.micro

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

为什么 Microsoft 分析器找不到 Microsoft.CodeAnalysis?

我正在尝试将Microsoft.CodeAnalysis.FXCopAnalyzers(最新稳定版本)添加到我的 ASP.NET 项目中。当我通过 NuGet 安装它时,我收到了大量错误,例如:

无法从 \packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers.dll 创建分析器 Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AbstractTypesShouldNotHaveConstructorsAnalyzer 的实例:无法加载文件或程序集'Microsoft.CodeAnalysis, Version=2.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。系统找不到指定的文件。无法从 \packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers 创建分析器 Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.AvoidEmptyInterfacesAnalyzer 的实例.dll:无法加载文件或程序集“Microsoft.CodeAnalysis,版本=2.6.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。系统找不到指定的文件。无法从 \packages\Microsoft.CodeQuality.Analyzers.2.6.3\analyzers\dotnet\cs\Microsoft.CodeQuality.Analyzers 创建分析器 Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.CancellationTokenParametersMustComeLastAnalyzer 的实例.dll:无法加载文件或程序集“Microsoft.CodeAnalysis,版本=2.6.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件.. 版本=2.6.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。该系统找不到指定的文件.. 版本=2.6.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。该系统找不到指定的文件..

注意:为了简洁起见,我省略了 127 个错误。它们都非常相似。但需要注意的一件事是,并非所有分析器都在 Microsoft.CodeQuality 命名空间中。有些在 Microsoft.NetCore 中,有些在 Microsoft.NetFramework 中。

所以我说好的,我必须先安装Microsoft.CodeAnalysis v2.6.0.0。看起来很奇怪,这不是 NuGet 自动安装的依赖项,但无论如何。

所以我恢复了我在 Git 中的所有更改,重新打开解决方案,安装 Microsoft.CodeAnalysis v2.6.0.0,然后安装 Microsoft.CodeAnalysis.FXCopAnalyzers 的最新稳定版本。

同样的错误!

当我查看包/Microsoft.CodeAnalysis.2.6.0 时,我注意到那里没有 .dll 。安装它的正确方法是什么?安装 Microsoft.CodeAnalysis 甚至是正确的解决方案吗?为什么安装时没有自动安装Microsoft.CodeAnalysis.FXCopAnalyzers的依赖?这不是包管理器的全部意义吗?我的问题太多,答案太少。请帮忙。

c# code-analysis fxcop analyzer microsoft.codeanalysis

9
推荐指数
2
解决办法
9862
查看次数

我应该使用FxCop吗?为什么?

我正在使用C#.net和WPF开发一个项目.我们正在使用StyleCop来帮助为项目带来一致的风格,在禁用某些规则后,我们对它非常满意.但是,我听说人们谈论FxCop,这也会为项目带来价值.从我的理解,这更多的是在代码结构基础上..?

有人可以告诉我为什么我们应该开始使用FxCop吗?FxCop将确保我们做得正确的最重要的事情是什么?

.net c# fxcop

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

使用VS2010 Ultimate进行FxCop /代码分析

我已经得到了一些有关这方面的信息,但我仍然可以找到一个正确的答案,我最近在公司里被问到这个问题:"对该代码进行fxcop分析并告诉我结果".

好吧,我有VS2010旗舰版,它有代码分析,但在做任何评论之前,我在互联网上浏览它,因为我想实现最佳选择......

所以,假设我将在两个分析器上使用相同的规则:

  • 我应该推荐使用一个在另一个之上吗?
  • 我应该说"嘿,有点老了,让我们使用代码分析!"
  • 我应该在不同的计算机上获得相同的结果吗?(对于我所说的,fxcop给你一些"点",对于我所读到的,有时它会给你在差异计算机上的差异点,我不知道这与代码分析

谢谢,任何帮助将不胜感激

optimization code-analysis fxcop visual-studio-2010

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