What is it?

REFLECTK is a collection of software development tools that inspect and check your application's source code, bytecode and classpath. It is flexible, powerful and completely written in Java. It can be used to search for Java language elements that fulfill a specified condition, e.g. list all classes that implement a certain interface or list all methods that have references to a certain class.

Because of it's flexible design it is suitable for different usages. Used as a framework inside an application it can provide additional code reflection capabilities, e.g. for plugin mechanisms. Used as development tool it can be used to enforce architectural rules for your application code. To fit into nearly all Java-based development processes it is perfectly integrated into Eclipse, Netbeans and Ant. But it can also be used as stand-alone development tool.

REFLECTK provides a highly configurable and fast search engine, a feature-rich and expandable set of filters and a powerful but intuitive query language (Code Query Language, CQL). To specify all kind of search criteria, concepts similar to propositional logic and first-order logic can be used.

Usage examples:

  • Consistency check your application's classpath even if source code of some third-party library is missing
  • Monitor or apply design rules like naming conventions or layer access restrictions to your projects
  • Support a developer when refactoring a project or migrating to another JDK version
  • Improve code quality and discover potential programming errors

Key Features:

  • Bytecode and source code parsing
  • Simple API that allows extensions of third-party developers
  • Small footprint (core package ~155 kB)
  • No need to learn another tool, simply phrase your thoughts as CQL statements

Differences to other Static Code Analysis Tools

  • Each query is live that means it's directly evaluating against the actual source- and/or bytecode
  • It comes with client (Eclipse-Plugins, CQLConsole,...) and server parts (AntTask)
  • It has no setting-up-time (just specify the classpath), therefore it can be used as a firefighter to solve express production problems (no stockpiling for maybe queries)
  • Because it has a high learning curve nearly everybody that is involved in the development process can/should use it. Developers use it to do their daily work. Architects express and enforce architecture rules and project conventions. Quality managers use it to monitor and track code quality.
  • REFLECTK spots on code queries the actual code base regardless of if you want to search for errors or other code characteristics while other static code analysis tools focus on errors only
  • Using context switches you are able to investigate a class considering it's package or even attributes of it's superclass fields!

System Requirements

Since REFLECTK is completely written in Java (and without any native components) it will run on every plattform with an installation of JRE1.5+.

When using the CQL AntTask there also has to be Apache Ant 1.6+ available.

The plugin for the Eclipse IDE work with any release 3.2+.

The plugin for the Netbeans IDE work with any release 6.0+.

CQLConsole requires JRE1.6+