Статический анализ работает с моделью программы. В JLiSA Java-код разбирает Eclipse JDT, затем фронтенд строит графы потока управления для LiSA. Абстрактные домены, межпроцедурную стратегию и проверки можно выбирать независимо.
Например, интервальный домен описывает диапазоны значений. Проверяющий компонент использует результат анализа, чтобы искать нарушения свойств программы. Меняется домен — меняется точность модели.
Есть важная граница: поведение части стандартной библиотеки задано вручную через заглушки и семантику методов. Полного моделирования JDK здесь нет.
И не все режимы статические.
check анализирует программу, а validate и find-bug запускают её через JDI. Для этих команд нужны модули jdk.compiler и jdk.jdi.