如何从自定义代码分析规则中排除自动生成的文件以进行分析?

时间:2018-10-05 10:18:42

标签: c# code-analysis fxcop

嗨,我已经使用FxCop sdk api编写了自定义代码分析规则,并将其集成到我的测试项目中。它可以正确分析项目代码,但是还可以分析自动生成的文件。也就是说,在我的情况下,生成的文件扩展名为“ .g.i.cs”。

我已经尝试在项目的代码分析属性中检查“抑制生成的代码中的代码分析错误”的值,但是输出没有差异。

谁能告诉我如何从我的自定义规则中分析自动生成的代码?

编辑: 花了更多时间分析问题和实现之后,我得出的结论是,由于在自动生成的[GeneratedCodeAttribute]文件中的某些字段上缺少.g.i.cs,因此正在对自动生成的代码进行分析。

这是我自动生成的代码的示例:

#line 72 "..\..\..\..\Views\Screen.xaml"
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
internal System.Windows.Controls.TextBlock txtCopyright;

#line default
#line hidden

/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent() {
    if (_contentLoaded) {
        return;
    }
    _contentLoaded = true;

    #line default
    #line hidden
}

在此示例中,在代码分析期间对字段txtCopyright进行了分析,并跳过了方法InitializeComponent(),这与[GeneratedCodeAttribute]的存在相对应。

我找到了一个解决方案,方法是使用与自动生成的文件同名的局部类,然后在该类的顶部添加一个[GeneratedCodeAttribute]。 但这似乎不正确,因为它可能会跳过一些应该实际分析的代码。

有人可以帮助我知道在对代码进行代码分析时如何做以排除诸如txtCopyright之类的字段吗?

0 个答案:

没有答案