Правило FxCop, которое проверяет исключения NotImplementedExceptions - PullRequest
2 голосов
/ 06 января 2009

Я бы хотел проверить каждую ночь на предмет того, сколько NotImplementedExeptions есть в моем .NET-коде, так что, надеюсь, мы сможем удалить их все до выпуска. Сначала я подумал, что FxCop может быть хорошим инструментом для этого. У кого-нибудь есть собственное правило FxCop для этого? Как бы я занялся его созданием?

Ответы [ 4 ]

4 голосов
/ 06 января 2009

Подобный модульный тест завершится неудачей, если более 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 .

3 голосов
/ 07 ноября 2009

Я на самом деле реализовал один и показал код в этот ответ .

1 голос
/ 06 января 2009

В сети куча ресурсов о том, как создать собственное правило FxCop, но поскольку NotImplementedException - это такое уникальное имя, вы, вероятно, можете просто подсчитать его вхождение в тексте файлов. Создайте ItemGroup для всех файлов .cs, а затем используйте соответствующую команду DOS (например, «find / c») и получите счетчик в качестве выходных данных с помощью задачи EXEC.

0 голосов
/ 06 января 2009

Бывают случаи, когда NotImplementedExeption должен быть брошен - один пример, если у вас есть частичная реализация IBindingList.

Есть множество из ресурсов там для создания пользовательских правил fxCop . Тем не менее, «найти в решении» может быть подходящим подходом (при условии, что вам не нужно это в автоматической сборке)

...