Я пытаюсь применить определенный стиль кода C# для операторов if-else в моей команде, сотрудники которой используют разные IDE (например, Visual Studio, Rider и т. д.). Этот стиль может показаться немного странным, но он уже распространился по кодовой базе и вызывает много шума в PR от членов команды, у которых в своих IDE включено автоформатирование.
По сути, я ищу следующее:
if (condition)
{
SomeLongMultilineMethodCall(
param1,
param2,
...);
}
else
SomeShortMethodCall();
Здесь многострочный оператор if
(даже если это одно выражение) заключен в фигурные скобки, но для оставшегося оператора else фигурные скобки не используются, поскольку он состоит из одной строки.
Я просмотрел все популярные библиотеки анализаторов roslyn, включая StyleCop.Analyzers , Roslynator с его правилом RCS1002 и даже ReSharper, но ни одна из них не показалась мне достаточно гибкой. Кто-нибудь знает, как автоматизировать этот стиль кода, или я что-то упускаю?
Честно говоря, это одна из причин, по которой я выступаю за отключение большей части автоматического форматирования (при сохранении) в больших командах. Количество «шума», которое он вызывает в системе управления версиями, отвлекает больше, чем работа с немного другим форматированием кода или странными вариациями. Если кто-то пишет так, что его трудно читать, обсудите это с ним или внутри команды, чтобы достичь консенсуса. Я бы предпочел увидеть странное (незначительное) несоответствие, чем анализировать изменения форматирования в наборах изменений. Желаем удачи в поиске чего-то, что работает со всеми инструментами.
@Fildor, я хочу, чтобы он был оформлен в таком стиле, а все остальные варианты должны быть выделены как недействительные с помощью анализатора roslyn или какого-либо другого инструмента анализа кода.
@StevePy Я согласен с вами в этом, но мне не нужно что-то, что работает во всех инструментах, если я могу принудительно проверить этот стиль в конвейере CI/CD и отклонить PR с непоследовательным форматированием.
«И отвергать пиар с непоследовательным форматированием» — вы будете героем команды — НЕТ. Не делайте этого. Это плохая идея. Формат может быть вопросом мнения (и я бы никогда с этим не согласился), но принудительное его применение в CI/CD с автоматическим отклонением поставит вам крест на спине.
Анализаторы Roslyn — лучший способ оставаться независимым от IDE и интегрировать эту проверку в свой конвейер CI/CD. Я не думаю, что вы сможете полностью удовлетворить свои требования, поэтому самое близкое решение, которое вы можете получить, — это использовать Roslynator. Попробуйте установить серьезность = предупреждение для следующих правил:
Вы имеете в виду, что хотите, чтобы это было оформлено так, или вы хотите, чтобы это нашли и изменили?