Найти полностью закомментированные файлы

В решении с большим количеством файлов и проектов - как найти все полностью закомментированные файлы? Я предполагаю, что каждая строка кода начинается с // (EDIT: или является пустой) в таких файлах.

Я использую VS 2008, C#, ReSharper доступен.
Я знаю, что обычно такие файлы не должны существовать - вот для чего нужен безопасный источник...

4 ответа

Решение

Чтобы найти все файлы в текущем каталоге и под ним, в котором все строки начинаются с '//':

находить. -type f -exec sh -c 'grep -vq "^//" {} || echo {}' \;

Обратите внимание, что это сообщит о пустых файлах.

Аргумент для grep может быть легко расширен для учета пробелов или обобщен для соответствия произвольному регулярному выражению.

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

Похоже, вы ищете файлы без кода или файлы со всеми комментариями. Например, если есть 1000 строк, из которых 900 прокомментированы, а 100 не заполнены, кажется, что он соответствует вашим критериям.

Сценарий должен быть довольно простым для написания, но вам нужно будет обратить внимание на следующие странные случаи

  • Блокировать комментарии
  • если блоки, которые всегда ложны. Например #if 0

  • Пустые строки

Это должно быть близко к тому, что вы ищете: http://www.codeproject.com/KB/cs/csharplinecounter.aspx

Ищите в проекте метод, который определяет, закомментирована ли строка или нет, и вы можете использовать его для построения счетчика и т. Д.

Ну, вы могли бы написать программу (вероятно, консольное приложение) для рекурсивного обхода каталога и дерева файлов. Прочитайте все файлы.cs и проверьте каждую строку, чтобы увидеть, являются ли ее первые символы без пробелов и символов табуляции "//". Если вы хотите по-настоящему вычурно, вы можете посчитать итоговые строки и строки с помощью "//" и отобразить проценты, чтобы вы могли отлавливать файлы, в которых не было закомментировано абсолютно всех строк. Вам просто нужно немного разобраться в System.IO, чтобы получить файлы и строковые функции для поиска символов, которые вы ищете. Это должно покрыть это.

Другие вопросы по тегам