2013-08-19 3 views
3

Я не уверен, что это подходящее место для вас, любая помощь будет оценена по достоинству. Я хочу создать статический инструмент анализа taint для Java. Я понимаю, что инструмент сканирует все java-файлы, начиная с основной точки входа. И для каждой строки исходного кода он будет декодировать его и выполнить требуемое действие.Статический анализ taint для программ Java

Например,

1- Boolean x=false; 
2- String s = x.toString(); 

Линия-1 объявляет одну логическую переменную и линию-2 преобразует его в строку. Строка-1 будет отмечать, что логическая переменная «x» была объявлена, и она преобразуется в строку в строке-2. И мой инструмент только поймет это, если я поставлю чек для функции toString() и выполнит требуемое действие.

Мой вопрос в том, что мне нужно написать проверки для всех функций, определенных для булевого типа в Java? Как насчет других типов данных и других функций библиотеки?

Например, некоторые другие функции, доступные для булевого типа;

toString(boolean value) 
compareTo(Boolean that) 
etc. 
+0

А что, если я использую StringUtils или гуавы строк? Или десятичный форматтер? У вас есть множество треков для покрытия и больше времени тратить на эту тему. Не упоминание типов для конверсий объектов и кастинг .... Может быть, лучше проанализировать байт-код или провести динамический анализ? – fatfredyy

+0

Согласовано. Вот почему мне было интересно, как это делают другие инструменты для анализа статичных пятен? И все ли другие инструменты работают только на уровне байтового кода? – Junaid

ответ

3

Зачем изобретать велосипед? Вы посмотрели findbugs? Если вы знаете какой-то шаблон ошибки, напишите свой собственный детектор ошибок с помощью findbugs, и все будет готово. Here, here, here и here некоторые отправные точки ...