Static Analysis Tools for Concurrency

  • FindBugs – works on Java. In the list of bugs detected all of the “Multithreaded correctness” bugs are relevant to concurrency. Command-line interface or eclipse plugin (eclipse plugin update site:http://findbugs.cs.umd.edu/eclipse/)
  • Lint – a UNIX tool for C
  • JLint – a Java version of Lint that is available as stand alone or eclipse plugin (eclipse plugin update site:http://www.jutils.com/eclipse-update)
  • Parasoft JTest – commercial tool that combines static analysis and testing. Has capability to check for thread safety in multithreaded Java programs.
  • Coverity Static Analysis and Static Analysis Custom Checkers – commercial tool that can be used to create custom static analyzers to find concurrency bugs in C/C++ programs.
  • GrammaTech’s CodeSonar – commercial tool that can detect a special case race condition and locking issues in C/C++ (see datasheet for list of all bugs detected).
  • Chord – static and dynamic analysis tool for Java (listed above as well).
  • JSure for Concurrency – a commercial tool from SureLogic that is currently available in early release.
  • ESC/Java 2 – can detect race conditions and deadlocks – requires annotation (more…)
  • Relay – static race detection
  • RacerX – uses flow-sensitive static analysis tool for detection race conditions and deadlocks in C [paper] [slides]
  • SyncChecker – a tool developed by F. Otto and T. Moschny for finding race conditions and deadlocks in Java. Reduce false positives by combining static analysis with points-to and may-happen-in-parallel (MHP) information.
  • Warlock – race detection tool for C – requires annotation.

Leave a Reply

Your email address will not be published. Required fields are marked *