This is a presentation of the approach behind the open source software analytics tool jQAssistant: It can be plugged into the build process and allows scanning of relevant structural information like Java packages, classes and Maven descriptors into a Neo4j graph database and applying rules to them. These rules are written as developer documentation in Asciidoc containing queries which may enrich the data by common technical or user defined concepts from the design or architecture language of the project, e.g. Entity, Repository, Module, Layer etc. Based on these abstractions constraints can be expressed like ‘all JPA entities must be located in packages named model’ or ‘service layers must only depend on repositories but not on UI controllers’.
Static code analysis tools provide very fast and valuable feedback on potential bugs or violations of coding guidelines. The latter often include rules on the level of design and architecture but tools often operate on a lower level of abstraction as needed, i.e. language elements like Java packages or classes. Furthermore it is often quite difficult to express individual rules which are only valid for a certain project.
Video producer: http://geecon.org/