Как сделать так, чтобы предложения C# (анализатора) были видны в командной строке?
Что мне нравится в
dotnet
CLI - это то, что вы можете запускать, и вы всегда получаете список всех предупреждений в вашем проекте. Я использую это для радикальных изменений и тому подобного в проектах. Вывод этого может быть передан в инструменты unix для дальнейшей обработки.
Я также хотел бы получить это для «предложений», которые вы получаете в Visual Studio. Возможно ли это и как?
Предложения?
Под предложениями я подразумеваю «сообщения», которые вы получаете в «Списке ошибок ...» в Visual Studio (см. Ниже). Компилятор называет это «Информация, не указывающая на проблему» (DiagnosticSeverity.Info
), EditorConfig вызывает эти предложения (EditorConfigSeverityStrings.Suggestion
).
Как воспроизвести?
Минимальное воспроизведение для этого - создать новое консольное приложение и добавить новый класс с частным полем, но не делать это
readonly
(см. ниже)! Это вызовет
IDE044
(как на скриншоте), но он не отображается при запуске
$ dotnet build --no-incremental
. Если вы переопределите серьезность через файл, тогда предложение появится, но, очевидно, как предупреждение.
Класс1:
public class Class1
{
private string Foo = "bar";
}
.editorconfig
[*.cs]
# IDE0044: Add readonly modifier
dotnet_diagnostic.IDE0044.severity = warning
Боковая панель: что я ищу?
Ищу что-то "нестандартное", так что-то вроде
$ dotnet build ...
. Однако, если это невозможно, я мог бы использовать сторонний глобальный инструмент, например интерфейс командной строки Roslynator (я пробовал этот путь, но не смог заставить его работать).
Мне хорошо известно, что вы можете написать собственный инструмент поверх Roslyn API, но я думаю, что это довольно хрупко, поскольку вам нужно учитывать все тонкости восстановления пакетов, поиска MSBuild и т. Д. Я думаю, что это действительно то, что должно быть доступно из коробки, или иначе заслуживает проблем в проекте вверх по течению.
1 ответ
Я не знаю, что вам подходит, но вы можете использовать ErrorLog
недвижимость на проект , чтобы вывести все диагностики в виде Sarif файл.