我已经使用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。)如果我的方法看起来不错,那么有人可以告诉我如何获取在特定区域中声明的所有变量吗?
答案 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
}