Если проблема заключается в том, чтобы найти закомментированный код, то нужен способ найти комментарии и решить, может ли комментарий содержать код.
Простой способ сделать это - поискдля комментариев, которые содержат похожие на код вещи.Я был бы склонен охотиться за комментариями, содержащими ";"символ (или какой-либо другой редкий индикатор, такой как "=");будет довольно сложно иметь какой-либо интересный закомментированный код, который не содержит этого, и по моему опыту с комментариями я не вижу многих, которые пишут люди, которые содержат это.Поиск в регулярном выражении должен быть довольно простым, даже если он обнаружил несколько дополнительных ложных срабатываний (например, // в строковом литерале).
Более сложный способ сделать это - использовать лексер или парсер Java.Если у вас есть лексер, который возвращает комментарии к токенам (не все это делают, компиляторы Java не заинтересованы в комментариях), то вы можете просто отсканировать лексемы для комментариев и выполнить проверку точки с запятой, которую я описал выше.При таком подходе вы не получите ложных срабатываний для комментариев, подобных вещам в строковых литералах.
Если у вас есть реинжиниринг парсера , который фиксирует комментарии как часть AST (например,как наш внешний интерфейс Java SD ), вы можете механически сканировать дерево разбора для комментариев, передавать контекст комментария обратно в синтаксический анализатор, чтобы увидеть, является ли контент похожим на код, и сообщать о любом, который проходит этот тест по модулю некоторогоРазмер ошибок в зависимости от размера (10 ошибок по 15 символов означают «действительно комментарий»).Теперь «подобный коду» тест требует, чтобы анализатор реинжиниринга был готов распознавать любую подстроку языка (Java).Наш инструментарий реинжиниринга программного обеспечения DMS , лежащий в основе внешнего интерфейса Java, фактически может сделать это, используя доступ к грамматике, скрытой во внешнем интерфейсе, так как он готов начать анализ для любого языкового (не) терминала, и этоВопрос в том, «можете ли вы найти последовательность (не) терминалов, которые потребляют строку?».
Подходы лексера и парсера - это маленькие и большие кувалды соответственно.Если OP собирается сделать это только один раз, он может придерживаться ручного поиска регулярных выражений.Если проблема состоит в том, чтобы повторно проверять базу кода (что необходимо в больших организациях), ему нужен инструмент, который можно запускать на регулярной основе.