Найти полностью закомментированные файлы
В решении с большим количеством файлов и проектов - как найти все полностью закомментированные файлы? Я предполагаю, что каждая строка кода начинается с // (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, чтобы получить файлы и строковые функции для поиска символов, которые вы ищете. Это должно покрыть это.