C # - Проверить, что все вызовы .Single (), .First () и т. Д. Соответствуют стандартам кодирования - PullRequest
0 голосов
/ 13 ноября 2018

Мы используем некоторые методы расширения, которые позволяют нам писать что-то вроде:

.Single(e => $"{nameof(SomeParameter)}: {SomeParameter}, ...")

вместо просто

.Single()

, где e является исключением.

Это значительно увеличивает опыт ведения журнала, потому что верхний вариант записывает все параметры вместо бесполезного «Последовательность не содержит элементов», который генерирует нижний.

Мне нужно написатьтест, который найдет весь несовместимый код, например, вызовы .Single().

Конечно, я могу использовать поиск по регулярному выражению или просто простой текстовый поиск, чтобы просмотреть все файлы CS, начиная с решенияroot и возможно это путь.Мне просто интересно, есть ли уже простое и известное решение для этого.

Вот что мне нужно:

  1. Легко добавлять / удалять правила: например, найти все файлы, которые имеют .Single(), найти все, которые имеют .Single(, но которыене в форме .Single(e => $" - это для учета комбинированного кода Where + Single и т. д. ...

  2. Тесты должны выполняться из xUnit.

Большое спасибо!

1 Ответ

0 голосов
/ 13 ноября 2018

Вы должны написать анализатор Roslyn, который будет работать как часть вашей сборки (и при вводе в Visual Studio) и сообщать об ошибках компиляции (или предупреждениях) по своему усмотрению.

Анализатор имеет полный доступк синтаксическому дереву и семантической модели, сгенерированным в компиляторе, и может проверять доступ к определенным методам.

Getting Started

...