[Checkers] Thoughts on Type Inference: Part 1 (what framework to use)
Michael Ernst
mernst at csail.mit.edu
Thu Sep 11 07:57:15 EDT 2008
Mahmood-
Thanks for investigating what existing tools can serve as the framework for
your type inference.
> There are many static analysis frameworks for bytecode analysis: WALA,
> Soot, ASM, etc.
> ...
> Some frameworks do not support generics.
I'm not aware of any bytecode framework that fully supports generics.
> We desire two main features in a framework:
> - AST, type and symbol information about the java code.
> - A rewriting engine to manipulate java code (mainly add annotations).
The rewriting engine seems secondary to me -- or rather, we can get away
with less support. For example, if we know the extent (beginning and end
line and column) of each AST node, then we can probably determine enough to
do a purely textual rewriting.
An alternative that's a bit cleaner, and that you may have had in mind, is
modifying the AST, then just printing it. Even that has potential problems
such as the possible need to re-adjust the column or line numbers of every
following AST node, and ensuring that the AST is lossless (retains all
source code information, including whether particular whitespace is spaces
or tabs).
The main issue is which tool will be the most work overall, which includes
the analysis (especially) and also the code rewriting.
I guess you've looked at
http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java
http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java_2
http://java-source.net/open-source/code-analyzers
Most of these look completely inappropriate
There are others that aren't listed, such as
http://www.edg.com/index.php?location=java_frontend
but I haven't ever tried to use it.
-Mike
More information about the checkers
mailing list