jQAssistant 1.0.0-RC1 released
A release candidate of jQAssistant is now available – and it brings lots of new and interesting features!
Try them and provide feedback!
Scanners for Java application archives
The Java EE 6 plugin now provides plugins for scanning application containers like WAR or EAR files:
jqassistant.sh scan -f my-library.jar jqassistant.sh scan -f my-web-app.war jqassistant.sh scan -f my-enterprise-app.ear
This allows artifact related queries, e.g.
MATCH (war:Web:Application)-[:CONTAINS]->(artifact:Artifact) RETURN war.fileName, collect(artifact.fqn)
MATCH (war:Web:Application)-[:CONTAINS]->(:Web:Xml)-[:HAS_SESSION_CONFIG]->(config) RETURN war.fileName, config.sessionTimeout
MATCH (ear:Enterprise:Application)-[:CONTAINS]->(:Application:Xml)-[:HAS_MODULE]->(module:Module) RETURN ear.fileName, collect(module.path)
Improved Java classes scanner
It is now possible to find out which Java types are required by files representing an artifact (e.g. JAR files):
MATCH (artifact:Artifact)-[:REQUIRES]->(requiredType:Type) RETURN artifact.fqn, collect(requiredType.fqn)
The scanner now also adds a DEPENDS_ON relation between Java types, e.g. for analyis of allowed/forbidden dependencies or for creating metrics:
MATCH (type:Type)-[:DEPENDS_ON]->(otherType:Type) RETURN type.fqn, count(type) as Dependencies ORDER BY Dependencies desc
Scanner for pom.xml files
The Maven plugin has been extended to allow access to the model of a pom.xml file which is either part of a Maven project or an already packaged artifact (e.g. JAR file):
MATCH (pom:Pom:Xml)-[:MANAGES_DEPENDENCY]->(dependency:Artifact) RETURN pom.fqn, collect(dependency.fqn)
Maven Repository Plugin
There is another new plugin providing a scanner which allows analyis of Maven 2 repositories that are accessible via HTTP and provide an index (e.g. Nexus or Artifactory):
jqassistant.sh scan -u maven:repository::http://my-repository-host/releases
Note that this command will fetch and scan the whole content of the repository which may cause lots of traffic if it represents a proxy or cache for other repositories (e.g. Maven central).
This new plugin comes with a scanner that accepts property files following the name pattern „jqassistant.plugin.rdbms_*.properties“. It is assumed that these files contain JDBC connection data for relational databases:
## Required configuration properties driver=org.hsqldb.jdbc.JDBCDriver url=jdbc:hsqldb:file:target/myDatabase user=SA password=
jqassistant.sh scan -f jqassistant.plugin.rdbms_MyDB.properties
The scanner will use this information to retrieve the available metadata, e.g. schemas, tables, columns, primary and foreign key, indices, stored procedures, etc.:
MATCH (schema:Schema)-[:HAS_TABLE]->(table:Table) RETURN schema.name, collect(table.name)
Concepts and constraints can now be written using AsciiDoc:
= Rules == Backend The backend is based on services which are available to the UI and REST layers. A service class is identifed by the annotation @Service. [[my-rules:MyConcept]] .Label all classes annotated with @Service as "Service". [source,cypher,role=concept] ---- MATCH (type:Type)-[:ANNOTATED_BY]->()-[:OF_TYPE]->(serviceType:Type) WHERE serviceType.fqn="org.jqassistant.demo.Service" SET type:Service RETURN type as Service ----
These documents are accepted by jQAssistant and can also be rendered to HTML – rules are documentation and documentation are rules.
Express rules using script languages
The documentation provides a detailed example.
jQAssistant is available as a downloadable distribution or as Maven plugin:
<dependency> <groupId>com.buschmais.jqassistant.scm</groupId> <artifactId>jqassistant-maven-plugin</artifactId> <version>1.0.0-RC1</version> </dependency>
The Get Started page provides information for doing first steps in scanning an application or running an analysis.
An important feature is missing? The documentation lacks relevant information? There is a bug preventing scans or analysis? An interesting use case needs to be discussed?
Help us to improve jQAssistant!