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