我正在使用 T4 生成一些代码。代码将位于名为“MyClass.generated.cs”的类中,典型输出如下所示。
//<autogenerated/>
namespace MyNamespace
{
using System;
using System.CodeDom.Compiler;
[GeneratedCode("T4", "1.0.0.0")]
public partial class MyClass: SomeBaseClass
{
private SomeBaseClass myBackingField;
}
}
但是,即使该类使用GeneratedCodeAttribute进行修饰,我仍然会收到代码分析警告,如下所示:
字段“MyNamespace.MyClass.myBackingField”从未分配给,并且始终具有其默认值 null
我已确保选中项目属性→代码分析→“抑制生成代码的结果(仅限托管)”复选框。
请注意,我理解警告的含义 - 我只想知道如何抑制它:)
可能的解决方案 我可以修改我的生成器以使用 Suppressions 来抑制特定警告,但这是我不应该做的额外工作(因为生成的代码应该被代码分析忽略)。
相关问题
使用背景上下文编辑
实际生成的代码本质上是SomeBaseClass
. 命名空间中有 100 多种类型,我想更改其中一部分的行为。还有其他警告正在生成 - 我只是以这个为例。例如,如果有一个属性SomeBaseClass.MyObsoleteProperty
,它用ObsoleteAttribute
. 我的代码生成器仍会创建一个MyClass.MyObsoleteProperty
会引发代码分析警告的代码。
另一个示例是SomeBaseClass
(来自第 3 方)如果他们费心检查它们(例如,该类不符合 CLS),它本身会引发代码分析警告。我的包装器将重新创建它们所具有的任何错误(这实际上是所需的行为)。