嗨,我已经使用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
之类的字段吗?