Настраиваемые предупреждения компилятора в Visual Studio 2008

Настраиваемые предупреждения компилятора и
C #: создайте настраиваемое предупреждение в Visual Studio, если определенный метод, используемый в исходном коде
, не помог, поскольку он работает с кодом, который находится под контролем автора.

Мы используем сторонний набор элементов управления пользовательским интерфейсом (DevExpress) в нашем программном обеспечении, и я хочу создать предупреждение, когда кто-то использует MessageBox.Show("blah");вместоXtraMessageBox.Show("blah");

Есть способ сделать это?

13.10.2009 14:04:47
3 ОТВЕТА
РЕШЕНИЕ

С такими вещами можно относительно легко справиться с помощью специального правила для анализа кода FxCop / Visual Studio. Если вы используете Visual Studio Developer Edition, вы даже увидите ошибки правил, отображаемые рядом с вашими предупреждениями компиляции и ошибками в IDE.

5
13.10.2009 14:43:17
Спасибо за информацию о FXCop Николь. Кажется, это то, чем я буду заниматься.
AndrewJacksonZA 14.10.2009 07:00:15

Нет прямого пути нет. Если вы думаете об этом, вы ищете предупреждение компилятора для некоторого кода, который вы даже не компилируете.

Если вы действительно этого хотите, вы можете использовать методы Reflection в ВАШЕЙ скомпилированной сборке, чтобы проверить, были ли вызваны какие-либо методы / сборки, которые вам не нужны. Сесил обладает множеством необходимых вам функций. Затем вы можете сделать эту часть вашего процесса сборки.

1
13.10.2009 14:19:22
Спасибо за ссылку на Сесил. Интересный проект.
AndrewJacksonZA 14.10.2009 06:59:42

Несмотря на то, что вы не можете сделать настоящую пользовательскую ошибку во время компиляции в .NET, есть ряд сторонних инструментов (как бесплатных, так и коммерческих), которые могут внедрить свою логику проверки в процесс сборки, обычно после компиляции.

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

  1. Resharper 5.0 ($) будет поддерживать пользовательские правила / предупреждения.
  2. В PostSharp (бесплатно) вы можете определить аспект OnMethodBoundary , перезаписать его метод CompileTimeValidate и выдать из него ошибку [post] во время компиляции.
  3. NDepend может быть интегрирован с вашим процессом сборки ($) для реализации политик кодирования, подобных этой
2
13.10.2009 14:50:05