AdLint was designed as an open source and accessible source code static analyzer.
AdLint can point out insecure or nonportable code fragments, and can measure various quality metrics of the source code.
It (currently) can analyze source code compliant with ANSI C89 / ISO C90 and partly ISO C99. AdLint is written in Ruby and can run on all the platforms supported by Ruby.
What's New in This Release:
· Add missing comment handling in the initial state of the preprocessing lexer.
· Fix incomplete identifier to typedef name translation when the declaring enumerator name is conflicting with the prior typedef name.
· Fix evaluation of the global constant variable definition in order not to ignore value of the initializer.
· Revise pointer dereferencing behavior to successfully dereference a pointer only when the value of pointer variable is definite.
· Improve heuristics of array subscript evaluation with indefinite subscript.
· Fix controlling-expression deduction of iteration-statements in order to adopt the ordinary expression when no control breaking condition is found in the iteration body.
· Remove unnecessary controlling expression evaluation at entering a do-statement.
· Fix value-domain thinning condition to thin domains discarded by a break-statement in the iteration.
· Fix bypassing inner-variable's value mutation in order to correctly propagate mutation to the outer-variable.