Основываясь на ваших примерах, вы в основном хотят, чтобы диагностировать функции, которые производят выход, вход которого не каким-то образом интернационализированы.
Так что для случая оповещения вы хотите найти любой вызов печати , который приобретает строку, которая не создается одной из, возможно, нескольких хорошо знакомых процедур перевода.
Для случая jdbc вы хотите определить ограничения порядка , которые не являются языковыми.
Для различных дат, вы хотите, чтобы подпрограммы даты, которые , как известно, создают ответы на конкретные запросы.
Проверка javascript сложнее догадываться о намерениях; Предположите, что вы хотите диагностировать функции, которые известны для подключения к определенной локали; это похоже на дата. Для проверок диапазона вы хотите убрать что-либо , которое сравнивает символ с другим при меньшем или большем.
Для функций проводной-локали, это, кажется, только зная их имя будет достаточно (хотя, возможно, там должен быть какой-то разрешение перегрузки, например, по количеству аргументов), так NumberFormat (?,?) Плохо , и NumberFormat (?,?,?) В порядке.
Почему вы не можете написать регулярное выражение для поиска (hueristically) для плохих случаев?
Для случая диапазона, вам просто нужно признать выражения в виде [ехр] < [буквальный символа] или [ехр] < [буквальной струны]. Регулярное выражение для поиска только "< '.+», Казалось бы адекватным
Есть ли общие случаи, что они пропустили бы
EDIT (от комментариев ниже:.?„Я использую регулярное выражение, но ...“) Если вы хотите инструмент, который глубже, чем regexp, вам довольно много нужно перейти к разбору языка, разрешению имени/типа и иметь анализ потока данных. Было бы полезно, поскольку вы хотите обрабатывать многочисленные (компьютерные) языки, инструмент должен быть многоязычным И, похоже, вы хотите настроить его для проверки на наличие конкретных случаев, касающихся вашей заявки.
DMS Software Reengineering Toolkit имеет все эти свойства, включая парсеры для Java, JavaScript и SQL. Он предназначен для настройки, , поэтому вам нужно сделать это заранее, чтобы использовать его.
Можете ли вы привести конкретный пример проверки для каждой из четырех категорий? –
Я добавил несколько примеров с головы. Надеюсь, это поможет –