如何确保Roslyn Analyzer在某些特殊情况下不会运行

时间:2018-08-01 13:15:53

标签: roslyn roslyn-code-analysis

我已经使用Roslyn API编写了代码分析器。分析器在代码中搜索硬编码的Urls,但代码编译失败。

例如:

public class{

    public static string demo = "https://demo.com"; 
}

我的分析器将无法编译上面的代码,说它在代码中找到了硬编码的网址。

在某些情况下,我希望分析器忽略硬编码的url错误(以防用户完全强制使用它)。

无论如何,我是否有机会向分析仪提供忽略硬编码网址的信号。

我想使用这样的东西:

public class{
    #region IGNORE HARDCODED URLS
    public static string demo = "https://demo.com"; 
    #endregion
}

但是这种方法的问题是我无法获取在IGNORE HARDCODED URLS区域内声明的所有变量。

问题:

1。)这种使用区域的方法是否对我要解决的用例有用?你们还有其他更好的解决方案可以想到并提供吗?

2。)如果我的方法看起来不错,那么有人可以告诉我如何获取在特定区域中声明的所有变量吗?

1 个答案:

答案 0 :(得分:1)

您可以使用#pragma warning指令为代码的特定部分禁用(并重新启用)分析器。由#pragma warning disable指令禁用的所有分析器诊断将被忽略,直到文件结束或使用#pragma warning restore重新启用它为止。

假设您的分析仪具有ID AA0001,则在此示例中将不会为Demo发出诊断信息:

public class C
{
    #pragma warning disable AA0001

    public static string Demo = "https://example.com/";

    #pragma warning restore AA0001
}