Я заметил, что некоторые статические анализаторы работают с исходным кодом, а другие - с байт-кодом (например, FindBugs). Я уверен, что есть даже такие, которые работают с объектным кодом.
У меня простой вопрос: каковы преимущества и недостатки написания разных видов статических анализаторов для разных уровней анализа?
Под «статическими анализаторами» я включаю линтеры, средства поиска ошибок и даже полноценные верификаторы. А по уровням анализа я бы включил исходный код, IR высокого уровня, IR низкого уровня, байт-код, объектный код и плагины компилятора, которые имеют доступ ко всем фазам.