Поиск пустых методов

В настоящее время я работаю над проверкой безопасности / проверкой кода нашей системы. Это требует, чтобы я проверил все страницы в системе и удостоверился, что код содержит два метода, которые используются для проверки безопасности.

Иногда код в этих методах комментируется для облегчения тестирования.

Итак, мой вопрос: знает ли кто-нибудь простой способ поиска кода, чтобы убедиться, что методы присутствуют, и чтобы определить, какие из них не имеют кода или весь код закомментирован.

Это сделало бы мою работу намного проще, если бы я мог получить список вместо того, чтобы просматривать каждый файл...

Я уверен, что мог бы написать это сам, но я думал, что кто-то может знать о чем-то, что уже существует.

Спасибо!

3 ответа

Решение

В итоге я использовал NDepend и его CQL-функцию, чтобы найти эти методы. Я попробовал метод регулярных выражений, но через пару часов сдался (извините всех вас, мастеров регулярных выражений).

На каком языке написан код? для Java, возможно, checkstyle с пользовательским набором предпочтений может сделать эту работу.

для C++ вы можете запустить препроцессор для удаления всех комментариев, а затем grep для пустых методов (или комбинации sed/grep).

или используйте существующую грамматику для анализа вашей программы (взгляните на ANTLR) и добавьте правило для записи пустых функций / методов. это, вероятно, потребует некоторой работы, хотя.

Я не специалист по регулярным выражениям, но многие программы позволяют вам искать текст на основе регулярных выражений (notepad++, textpad, множество других, я готов поспорить) Возможно, вы могли бы сделать что-то вроде этого:

предположение: регулярное выражение (/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|(//.*) Я нашел на межсетях успешно совпадает комментарии

--start of method one time-- --match comments surrounded by white space 0 or more times-- --end of method one time--

так что моя дрянная попытка регулярных выражений, которая может потребовать настройки, потому что я не очень хорош в регулярных выражениях

{((\s*)(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|(//.*)))*(\s*)}

Я надеюсь, что это, по крайней мере, указывает вам правильное направление =)

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