Jlint
Home PageCategories: Code analysis - Standards verifiers
Latest version: 3.0
Added 2005-02-06
Checks Java code and find bugs, inconsistencies and synchronization problems by doing data flow analysis and building lock graph.
Jlint consists of two separate programs performing syntax and semantic verification.
- AntiC fixes problems with C, C++, Objective C and Java grammars, which can cause dangerous programmer's bugs, undetected by compiler. It uses hand-written scanner and simple top-down parser, to detect such bugs as suspicious use of operators priorities, absence of break in switch code, wrong assumption about constructions bodies...
- The Semantic verifier Jlint extracts information from Java class files. By using debugging information Jlint can associate reported messages with Java sources. Jlint performs local and global data flow analyses, calculating possible values of local variables and catching redundant and suspicious calculations. Jlint is able to detect invocation of method with possible "null" value of formal parameter and using of this parameter in method without check for "null". Jlint also builds lock dependency graph for classes dependencies and uses this graph to detect situations, which can cause deadlock during multithreaded program execution. Jlint is also able to detect possible race condition problem, when different threads can concurrently access the same variables.
All messages reported by Jlint are grouped in categories, and it is possible to enable or disable reporting messages of specific category as well as concrete messages.
Built for Java |
Free or free version available |
Source code provided |