Я пытаюсь написать правила для обнаружения некоторых ошибок в аннотированных многопоточных Java-программах. В качестве игрушечного примера я хотел бы определить, вызывает ли какой-либо метод, аннотированный @ThreadSafe, метод без такой аннотации, без синхронизации. Я ищу инструмент, который позволил бы мне написать такой тест.
Я смотрел на исходные анализаторы, такие как CheckStyle и PMD, и они на самом деле не имеют возможности межклассового анализа. Анализаторы байт-кода, такие как FindBugs и JLint, кажутся довольно сложными для расширения.
Я бы согласился на решение чего-то еще более простого, но представляющего ту же трудность: написание пользовательского правила, которое проверяет, аннотирован ли каждый переопределенный метод @Override.