Подтвердить что ты не робот

Существуют ли какие-либо инструменты, которые могут сообщать о комментированном .NET-коде?

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

//var foo = "This is dead";

и

/*
var foo = "This is dead";
*/

Это не будет найдено с помощью таких инструментов, как ReSharper или FxCop, которые ищут код без ссылок. Есть очевидные последствия для выделения кода с комментариями из комментария, но это не похоже на слишком большую задачу.

Есть ли какой-нибудь существующий инструмент, который может его поднять? Даже если это просто сообщение о событиях по файлу, а не полная интеграция с IDE.

Изменить 1: Я также зарегистрировал это как запрос функции StyleCop. Кажется, что это хорошо подходит для инструмента.

Изменить 2: Да, есть веская причина, по которой я хотел бы сделать это, и это связано с качеством кода. См. Мой комментарий ниже.

4b9b3361

Ответ 2

Я поехал по этой дороге по той же причине. Я более или менее сделал предложение Иры Бакстер (хотя я сосредоточился на переменной variable_type variable = value и специально искал строки, состоящие из 0 или более пробелов в начале, за которыми следует //, за которым следует код (и для обработки /* */, я написал препроцессор, который преобразовал его в //. Я настроил reg exp, чтобы сократить ложные срабатывания, а также сделал ручную проверку только для того, чтобы быть в безопасности, к счастью, было очень мало случаев, когда комментарий делал псевдокод, как вещи как предлагает drachenstern, YMMV. Мне бы хотелось найти инструмент, который мог бы это сделать, но некоторые ложные срабатывания от действительного, но, возможно, слишком подробного псевдокода, действительно будут исключать, особенно если они используют грамотные методы программирования для сделать код "читаемым" как псевдокод.

(Я также сделал это для кода VB6, с одной стороны, отсутствие, затрудняло правильное "легкое" reg exp, с другой стороны, в коде использовалось намного меньше классов, поэтому было легче сопоставить на переменные типы, которые, как правило, не относятся к псевдокоду)

Еще один вариант, на который я смотрел, но не имевший доступ, - это посмотреть журналы контроля версий для строк, которые были кодом в версии X, а затем//той же строкой в ​​версии Y... это из курсов предполагает, что A) они используют контроль версий B) вы можете просмотреть его, а C) они не пишут код и не комментируют его в той же ревизии. (И получает немного сложнее, если они используют /* */comments

Ответ 3

Для этого есть другой вариант, Sonar. Это на самом деле Java-ориентированное приложение, но есть plugin, который может обрабатывать код С#. В настоящее время он может отчитываться:

  • Ошибки StyleCop
  • Ошибки FxCop
  • Ошибки жандарма
  • Дублированный код
  • Комментируемый код
  • Unit test Результаты
  • Покрытие кода (с использованием NCover, OpenCover)

Требуется некоторое время для сканирования в основном из-за проверки дублирования (AFAIK использует текстовое сопоставление, а не синтаксические деревья С#), и если вы используете внутреннюю базу данных derby по умолчанию, она может не работать на больших базовых кодах. Однако это очень полезно для показателей кодовой базы, которые вы получаете, и у него есть функции моментальных снимков, которые позволяют вам видеть, как все изменилось и (надеюсь) со временем улучшилось.

Ответ 4

StyleCop поймает первый шаблон. Он предлагает использовать //// как комментарий для кода, чтобы он игнорировал правило.

Ответ 5

Увидев, как вы упомянули NDepends, он также может сказать вам Процент, прокомментированный http://www.ndepend.com/Metrics.aspx#PercentageComment. Это определено для приложений, сборок, пространств имен, типов и методов.