这时,我正在编写带有修复程序的Roslyn分析器,该程序检查是否检查构造函数参数是否为null。如果没有,修复程序将添加该检查。 所以,基本上是代码
public Foo(string param1)
{
}
它应该产生
public Foo(string param1)
{
if (param1 == null)
throw new ArumentNullException(nameof(param1));
}
但是在某些情况下,代码样式可能会有所不同,因此希望使用大括号之类的“ if”
public Foo(string param1)
{
if (param1 == null)
{
throw new ArumentNullException(nameof(param1));
}
}
,甚至(不确定是否有任何设置,也许我会为其添加单独的修复程序):
public Foo(string param1)
{
this.param1 = param1 ?? throw new ArumentNullException(nameof(param1));
}
因此,有许多可能的修复程序的选项,我想知道-是否可以读取修复程序内部的代码样式设置?我已经检查了
DocumentOptionSet options = context.Document.GetOptionsAsync()
,但是没有找到如何正确使用它,甚至不确定我是否需要它。 将不胜感激任何提示和想法
更新1 因此,似乎我发现了它应该如何工作:
options.GetOption(CodeStyleOptions.QualifyFieldAccess);
我可以看到(CSharpCodeStyleOptions.cs)带有所需的选项 PreferBraces 。但是,此类是内部的,我不能在修复程序中使用它。
更新2
我尝试了Simplifier.ReduceAsync()
方法,但似乎无法满足我的需要。
更新3 因此,似乎由于名称的原因,我们所有人都将该属性视为错误。 Here is my issue in Roslyn github。主要思想-“首选括号”选项应命名为“需要括号”。 New issue for this change. 而且不应该从分析器/修复程序代码中获取这些设置。