在Roslyn Fixer中获取样式设置

时间:2018-08-21 18:16:34

标签: c# visual-studio roslyn

这时,我正在编写带有修复程序的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. 而且不应该从分析器/修复程序代码中获取这些设置。

0 个答案:

没有答案