Re[2]: Вывод NotNull-аннотаций по байткоду Java
От: lambdamix http://pat.keldysh.ru/~ilya/
Дата: 03.11.14 13:16
Оценка: 9 (1)
Здравствуйте, Blazkowicz, Вы писали:

B>Что слышно про аналогичные решения? http://aprove.informatik.rwth-aachen.de/eval/JBC-Nonterm/


Есть множество инструментов для Java, которые находят ошибки в программах, связанные с использованием null. Конечная цель Kanva-micro, описанного в статье, и автоматического вывода аннотаций в IntelliJ IDEA — та же самая: находить ошибки в коде. Только в этом случае нахождение ошибок разделено на две стадии (застадировано). Вначале выводятся свойства того, как библиотеки, используемые в проекте, работают с null — эти свойства выводятся в форме аннотаций (форма здесь не так важна). А затем эти выведенные свойства используются при проверке кода, который пишет программист (когда он использует методы из библиотек). В IDEA принято, что большинство анализов (code inspections) могут показать ошибку/предупреждение почти моментально (за исключением некоторого количества глобальных анализов по всему проекту) — программист печатает код и сразу же видит ошибки. Отдельное аннотирование библиотек и использование этой информации в редакторе позволяют делать в том числе и inspection того, как программист работает с библиотечными методами на предмет NPE сразу же в редакторе. А dataflow analysis в IDEA очень мощный. Собственно говоря, вывод аннотаций сам по себе не пытается искать никаких ошибок в анализируемом коде, он собирает информацию, которая окажется полезной потом — при анализе (другого!) кода в редакторе.

Все известные мне другие инструменты (находящие NPE) не ориентированы на такой сценарий интеграции с IDE — их основной сценарий: человек нажимает кнопку, ждет (как правило, достаточно долго) и получает какие-то ошибки. Наш же подход — отдельное аннотирование библиотек + отдельный анализ исходников, в которых используются библиотеки — позволяет добиться интерактивности.

А так, да — существуют инструменты, находящие NPE — FindBugs, PMD, Julia Analyzer и т.д. Что-то они делают лучше, что-то хуже) Из тех инструментов, в которых я копался, разбираясь с их внутренним устройством, только FindBugs в некоторой степени выводит в явном виде nulllability параметров для библиотек, но делает он это очень поверхностно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.