如何在命令行上显示 C#(分析器)建议?

How to get C# (analyzer) suggestions visible on the commandline?

我喜欢 dotnet CLI 的一点是,您可以 运行 $ dotnet build --no-incremental,并且您总能得到项目中所有警告的列表。我用它来对项目进行彻底的改变等等。其输出可以通过管道传输到 unix 工具,以供进一步处理。

我也想为您在 Visual Studio 中获得的 'suggestions' 获得它。这可能吗?如何实现?

建议?

我所说的建议是指您在 Visual Studio 的“错误列表...”中获得的“消息”(见下文)。编译器将此称为“未指示问题的信息”(DiagnosticSeverity.Info), EditorConfig calls these suggestions (EditorConfigSeverityStrings.Suggestion)。

如何重现?

对此的最小复制是创建一个新的控制台应用程序,并添加一个带有私有字段的新 class,但不要这样做 readonly(见下文)!这会触发IDE044(如截图所示),但不会在运行宁$ dotnet build --no-incremental时出现。如果您通过 .editorconfig 文件覆盖严重性,则建议会显示,但显然是警告。

第 1 类:

public class Class1
{
    private string Foo = "bar";
}

.editorconfig

[*.cs]

# IDE0044: Add readonly modifier
dotnet_diagnostic.IDE0044.severity = warning

边栏:我在寻找什么?

我正在寻找“开箱即用”的东西,比如 $ dotnet build ...。但是,如果那不可能,我可以使用第 3 方全局工具,例如 Roslynator Command-Line Interface(我确实尝试过该路径,但未能成功)。

我很清楚您 可以 在 Roslyn API 之上编写自定义工具,但我认为这很脆弱,因为您需要满足包还原、查找 MSBuild 等所有复杂问题。我认为这确实是开箱即用的东西,否则就应该在上游项目中提出问题。

我不知道它是否适合你,但你可以使用 ErrorLog property on the project to output all diagnostics to a SARIF 文件。