1

I'm trying to find a way to check my classes for references of methods with a particular annotation (think "Deprecated").

As far as i see it, analysing byte code won't work because it doesn't contain any annotations.
Using APT doesn't really help because i need the references to the methods, not the annotated methods themselves.

So, what options do i have?

The best i can come up with is compiling a list of the annotated methods followed by a full code analysis, checking every method call against the list.
Is there a way to do that efficiently in an eclipse plug-in or an ant task?

Stroboskop
  • 4,327
  • 5
  • 35
  • 52

3 Answers3

2

In another question I asked for a Java parser of the Java language. For my analysis of code I use this one. Perhaps it's good for you, too.

Community
  • 1
  • 1
tangens
  • 39,095
  • 19
  • 120
  • 139
  • Frankly i can't remember what i needed this for. But i believe i built it into our Eclipse plugin and Eclipse will do the parsing for me. – Stroboskop Apr 19 '13 at 09:01
2

Analysing bytecode will works! ASM for an example is handling annotation very well.

palacsint
  • 28,416
  • 10
  • 82
  • 109
Olivier
  • 3,465
  • 2
  • 23
  • 26
1

Using the Reflections library, it's simple as:

Reflections reflections = new Reflections("my.package", new MethodAnnotationsScanner());
Set<Method> deprecated = reflections.getMethodsAnnotatedWith(Deprecated.class);
zapp
  • 1,533
  • 1
  • 14
  • 18