Правило FxCop, которое проверяет исключения NotImplementedExceptions
-
03-07-2019 - |
Вопрос
Я хотел бы проверить каждую ночь на наличие количества NotImplementedExeptions в моем .NET-коде, так что, надеюсь, мы сможем удалить их все перед выпуском. Сначала я подумал, что FxCop может быть хорошим инструментом для этого. У кого-нибудь есть собственное правило FxCop для этого? Как бы я занялся его созданием?
Решение
Я действительно реализовал один и показал код в этом ответе а>. р>
Другие советы
Подобный модульный тест завершится неудачей, если более 10 методов создадут исключение NotImplementedException. При сбое он сообщит обо всех методах, которые создают это исключение.
var throwingMethods = codebase.Methods
.Where(m => m
.GetInstructions()
.Exists(i => i.Creates<NotImplementedException>()))
.ToArray();
if (throwingMethods.Length > 10)
CollectionAssert.IsEmpty(throwingMethods);
Где кодовая база создается следующим образом:
var codebase = new Codebase("Assembly1.dll","Assembly2.dll");
Snippet использует Lokad.Quality.dll из общих библиотек Lokad . р>
В сети множество ресурсов о том, как создать собственное правило FxCop, но поскольку NotImplementedException - это такое уникальное имя, вы, вероятно, можете просто подсчитать его вхождение в тексте файлов. Создайте ItemGroup для всех файлов .cs, а затем используйте соответствующую команду DOS (например, " find / c ") и получите счетчик в качестве выходных данных через задачу EXEC.
Бывают случаи, когда должно быть выброшено NotImplementedExeption
- один пример, если у вас есть частичная реализация IBindingList
. р>
Существует множество ресурсы там для создание пользовательского правила fxCop . Тем не менее, «найти в решении» может быть подходящим подходом (при условии, что вам не нужно это в автоматической сборке)