Настраиваемые предупреждения компилятора в Visual Studio 2008 - PullRequest
3 голосов
/ 13 октября 2009

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

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

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

Ответы [ 3 ]

5 голосов
/ 13 октября 2009

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

2 голосов
/ 13 октября 2009

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

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

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

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

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

...