1. jQAssistant 1.3.0

  • Added a plugin for scanning JSON documents.

1.1. Changes to the Plugins

1.1.1. CDI Plugin 1.3

  • Only internal changes.

1.1.2. EJB 3 Plugin 1.3

  • Only internal changes.

1.1.3. GraphML Plugin 1.3

  • Added support for nested sub graphs

  • Refactoring of internal graph representation to enable compatibility with newer Neo4j versions

1.1.4. Java Plugin 1.3

  • Added firstLineNumber, lastLineNumber and effectiveLineCount attributes to :Method nodes

  • Deprecated concept classpath:ResolveDependency and replaced it by classpath:ResolveDependsOn

  • classpath:ResolveDependsOn propagates weight attribute of DEPENDS_ON relations

1.1.5. Java 8 Plugin 1.3

  • Fix for bug Concept java8:FunctionalInterface is not complete. Now the Java 8 plugin labels all Java interfaces with FunctionalInterface if it has exact on abstract method. Prior to that fix only Interfaces with the annotation @java.lang.FunctionalInterface where recognized as functional interface.

1.1.6. JPA 2 Plugin 1.3

  • Only internal changes.

1.1.7. JUnit Plugin 1.3

  • Only internal changes.

1.1.8. JAX RS Plugin 1.3

  • Only internal changes.

1.1.9. Java EE 6 Plugin 1.3

  • Only internal changes.

1.1.10. JSON Plugin 1.3

  • Initial release.

1.1.11. M2 Repository Plugin 1.3

  • Only internal changes.

1.1.12. Maven 3 Plugin 1.3

1.1.13. OSGi Plugin 1.3

  • Only internal changes.

1.1.14. RDBMS Plugin 1.3

  • Only internal changes.

1.1.15. TestNG Plugin 1.3

  • Only internal changes.

1.1.16. Tycho Plugin 1.3

  • Only internal changes.

1.1.17. XML Plugin 1.3

  • Only internal changes.

1.1.18. YAML Plugin 1.3

  • Only internal changes.

1.2. Changes to the Commandline Tool and Plugin for Maven

1.2.1. Plugin for Maven 1.3.0

  • Added initial support for remote Neo4j 3.x databases (embedded or using bolt protocol)

  • Allow switching to Neo4j 3 using property -Djqassistant.neo4jVersion=3 (experimental)

  • Added 'store' configuration section providing configuration options for remote database instances

  • Added 'rule' configuration section providing default severities for groups, concepts and constraints

  • Deprecated configuration attributes severity and failOnViolations and replaced them with warnOnSeverity and failOnSeverity

  • Fixed a problem where dependencies between types in different Maven modules have not been resolved

1.2.2. Commandline Tool 1.3.0

  • Maven coordinates changed from com.buschmais.jqassistant:commandline to com.buschmais.jqassistant:jqassistant-commandline. Therefore the name of the commandline distribution changed from commandline-1.3.0.zip to jqassistant-commandline-1.3.0.zip.

  • Renamed command line option severity to violationSeverity, i.e. the threshold for exiting with an error code after at lease one rule has failed

  • Added command line option warnSeverity to set the threshold for logging warnings about failed rules to the console

  • Added command line options defaultConceptSeverity, defaultConstraintSeverity and defaultGroupSeverity

  • Added command line options storeUri, storeUsername and storePassword for initial support of remote Neo4j 3.x databases

1.3. Changes to Common Modules

1.3.1. Common Plugin 1.3.0

  • Only internal changes.

1.3.2. Core Framework 1.3.0

  • Upgraded backend to support remote connections using Bolt protocol to existing Neo4j 3.x+ installations

  • Upgraded embedded Neo4j database to 2.3.10

  • Raised default severity for concepts to MINOR and constraints to MAJOR

  • Added support for default severities for groups, concepts and rules

  • Added min and max attributes to verification strategies for rule results

1.3.3. jQAssistant Neo4j Backend Version 1.3.0

  • Prepared support for Neo4j 3.x

2. jQAssistant 1.2.0

  • Improved the layout of the wording and the structure of the user manual of jQAssistant.

2.1. Changes to the Plugins

2.1.1. CDI Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.cdi to com.buschmais.jqassistant.plugin:cdi.

  • No functional changes to version 1.1.3.

2.1.2. EJB 3 Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.ejb3 to com.buschmais.jqassistant.plugin:ejb3.

  • No functional changes since version 1.1.3.

2.1.3. GraphML Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.graphml to com.buschmais.jqassistant.plugin:graphml.

  • Fixed a bug where sub graphs have not been evaluated properly.

2.1.4. Java Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.java to com.buschmais.jqassistant.plugin:java.

  • Added attribute weight to DEPENDS_ON relations between types

  • Fixed a bug where redundant and cyclic DECLARES relations have been created between outer and their inner classes.

  • Annotation nodes are now also labeled with Java.

  • Fixed a bug with where type resolution created multiple nodes when scanning directories with java:classpath scope.

  • Added constant values for fields.

  • Added DECLARES relations between methods and their declared anonymous inner classes: (:Method)-[:DECLARES]->(:Type).

2.1.5. Java 8 Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.java8 to com.buschmais.jqassistant.plugin:java8.

  • No functional changes since version 1.1.3.

2.1.6. JPA 2 Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.jpa2 to com.buschmais.jqassistant.plugin:jpa2.

  • No functional changes to version 1.1.3.

2.1.7. JUnit Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.junit to com.buschmais.jqassistant.plugin:junit.

  • No functional changes since version 1.1.3.

2.1.8. JAX RS Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.jaxrs to com.buschmais.jqassistant.plugin:jaxrs.

  • No functional changes to version 1.1.3.

2.1.9. Java EE 6 Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.javaee6 to com.buschmais.jqassistant.plugin:javaee6.

  • Minor bugfix to ensure the scanning of packages in the classes folder of a WAR file.

  • No functional changes since version 1.1.3.

2.1.10. M2 Repository Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.m2repo to com.buschmais.jqassistant.plugin:m2repo.

  • No functional changes since version 1.1.3.

2.1.11. Maven 3 Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.maven3 to com.buschmais.jqassistant.plugin:maven3.

  • No functional changes since version 1.1.3.

2.1.12. OSGi Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.osgi to com.buschmais.jqassistant.plugin:osgi.

  • No functional changes to version 1.1.3.

2.1.13. RDBMS Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.rdbms to com.buschmais.jqassistant.plugin:rdbms.

  • No functional changes since version 1.1.3.

2.1.14. TestNG Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.testng to com.buschmais.jqassistant.plugin:testng.

  • No functional changes since version 1.1.3.

2.1.15. Tycho Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.tycho to com.buschmais.jqassistant.plugin:tycho.

  • No functional changes since version 1.1.3.

2.1.16. XML Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.xml to com.buschmais.jqassistant.plugin:xml.

  • Added file pattern support (xml.file.include and xml.file.exclude) for specifying XML documents without a native scanner plugin.

2.1.17. YAML Plugin 1.2

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.yaml to com.buschmais.jqassistant.plugin:yaml.

  • No functional changes since version 1.1.3.

2.2. Changes to the Commandline Tool and Plugin for Maven

2.2.1. Plugin for Maven 1.2.0

  • Maven coordinates changed from com.buschmais.jqassistant.scm:jqassistant-maven-plugin to com.buschmais.jqassistant:jqassistant-maven-plugin.

  • Added support for rule parameters.

2.2.2. Commandline Tool 1.2.0

  • Added support for rule parameters.

2.3. Changes to Common Modules

2.3.1. Common Plugin 1.2.0

  • Maven coordinates changed from com.buschmais.jqassistant.plugin:jqassistant.plugin.common to com.buschmais.jqassistant.plugin:common.

  • Added support for using file patterns (file.include and file.exclude) for scanner plugins.

2.3.2. Core Framework 1.2.0

  • Upgraded to Neo4j 2.3.8.

  • Added support for array properties in reports (e.g. HTML).

  • Added support for rule parameters.

2.3.3. jQAssistant Neo4j Backend Version 1.2.0

  • Upgraded to Neo4j 2.3.8.

3. jQAssistant 1.1.3

3.1. Core

  • Upgraded to Neo4j 2.3.3

  • Added support for severity on groups

  • Upgraded the XML schema for rules and plugins to 1.1 keeping backward compatibility to their 1.0 versions

  • Added rule specific report properties

  • Allow selection of a specific report type per rule

3.2. Maven

  • Added configuration property 'useExecutionRootAsProjectRoot' for reactors with incomplete parent hierarchies

  • Added configuration property 'executeAppliedConcepts' for repeated execution of concepts that have already been applied before (to ease development of concepts)

  • Added configuration property 'continueOnError' to continue scanning even if a plugin fails with an unrecoverable error

3.3. CLI

  • Added command line switch '-executeAppliedConcepts' (same functionality as for Maven plugin)

  • Added command line switch '-continueOnError' to continue scanning even if a plugin fails with an unrecoverable error

3.4. Plugins

3.4.1. Java

  • Added an attribute 'sourceFileName' to Java types representing the name of the file the class has been compiled from.

  • Fixed a bug to add a label 'Java' to nodes representing Java packages (e.g. :Java:Package)

3.4.2. GraphML

  • Replaced report plugin property "graphml.report.yedgraphml" with "graphml.report.decorator" which specifies the name of a class implementing the 'GraphMLDecorator' interface for layouting a graph (default: YedGraphMLDecorator)

3.4.3. JPA2

  • Fixed concept "jpa2:NamedQuery" to also support @NamedQuery annotations which are directly applied to an entity (e.g. without surrounding @NamedQueries)

3.4.4. JUnit

  • Added label "JUnit" to all nodes created by the test report scanner (e.g. ":JUnit:TestSuite", ":JUnit:TestCase")

  • Test report scanner now creates (:JUnit:TestCase)-[:HAS_FAILURE]→(:JUnit:Failure) and (:JUnit:TestCase)-[:HAS_ERROR]→(:JUnit:Error) providing detail information for test cases that have a result "FAILURE" or "ERROR"

3.5. SonarQube

  • Split-up of provisioning of rules into two mutually exclusive plugins "projectrules" (rules are defined within the Maven project) and "sonarrules" (administration of rules within SonarQube)

  • Migrated jQAssistant SonarQube plugins to support SonarQube 4.x/5.1.x (Note: compatibility with 3.x has been dropped)

4. jQAssistant 1.1.2

4.1. Core

  • Upgraded to Neo4j 2.3.2

4.2. Integrated Server

  • do not create "neo4j-home" in working directory when starting the integrated server

4.3. Plugins

4.3.1. YAML

  • No :YAML:Value node created for non-existing value anymore.

4.3.2. Maven

  • added a relation HAS_EFFECTIVE_MODEL from :Maven:Project to :Maven:Pom nodes representing the effective (i.e. interpolated) model of a Maven project containing all resolved dependencies, plugins, etc. == jQAssistant 1.1.1

4.4. Core

  • Upgraded to Neo4j 2.3.1

  • If a rule could not be executed the file name containing it is now part of the error message

  • Fixed rendering of an overridden severity for reporting a violation

4.5. Maven

  • fixed a bug where analyze and server goals were not executed at the end of a multi-module reactor if one of the modules defined the property "jqassistant.skip"

4.6. Plugins

4.6.1. Common

  • Use Apache commons compress for handling ZIP files for more robust handling of different encodings

4.6.2. Java

  • If an artifact requires a Java type (i.e. an external class reference) then an existing node of that type which is already required by a dependency will be re-used to reduce the number of generated nodes and avoid duplicates

  • Fixed concept dependency:Artifact to create unique relations

  • Fixed a problem that occurred while scanning invalid class files

4.6.3. JPA2

  • added support for scanning persistence.xml v2.1 documents

4.6.4. Maven

  • Fixed a problem that occurred where while scanning a reduced pom.xml file generated by the Maven shade plugin

5. jQAssistant 1.1.0

5.1. Core

  • Groups may be defined in AsciiDoc documents

  • Make sure that ids used for concepts, constraints or groups are unique nevertheless if they have been defined in XML or AsciiDoc documents

  • Upgraded to Neo4j 2.2.7

  • For plugin developers: marked the descriptor com.buschmais.jqassistant.core.store.api.model.NamedDescriptor as deprecated and replaced it by com.buschmais.jqassistant.plugin.common.api.model.NamedDescriptor, plugin implementations should use this type

5.2. Maven

  • Reset store (i.e. database) while building the root module of a project (was: execution root of Maven reactor)

  • Added serverAddress and serverPort parameters to jqassistant:server goal

5.3. CLI

  • Added serverAddress and serverPort parameters to server task

  • Fixed a problem that .adoc files containing rules have not been evaluated

5.4. Plugins

5.4.1. Common

  • All ZIP archives (i.e. ZIP, JAR, WAR and EAR) are now labeled with "Zip"

5.4.2. GraphML

  • Added plugin which provides a GraphML export for the results of executed concepts, includes support for virtual elements (sub graphs, nodes, relationships)

5.4.3. JUnit

  • Fixed an exception which has been logged during Maven build while parsing surefire and failsafe reports

5.4.4. Maven Repository

  • Resolve the POM model to provide full information about dependencies, plugins, etc.

  • Added properties for filtering artifacts while scanning

  • Added a relation CONTAINS_POM from the repository to each contained POM model (:Maven:Pom:Xml)

5.4.5. Tycho

  • Upgraded scanner plugin to to Tycho 0.23.1 to fix compatibility issues

5.4.6. URL

5.4.7. YAML

  • Added plugin which provides a scanner for YAML files

5.5. Documentation

  • Added an example to demonstrate using rules in AsciiDoc documents == jQAssistant 1.0.0

5.6. Core

5.6.1. Store

  • Upgraded to Neo4j 2.2.1

5.6.2. Analysis

  • added explicit verification strategies for executable rules

  • clarified behavor of concepts and constraints regarding to configured severities

5.7. Maven

  • Fixed problems of report goal in site lifecycle

  • Allow Maven plugin to be configured as build extension

5.8. Plugins

5.8.1. Java

  • Scanner adds a property "md5" containing the hash sum to each scanned class.

  • Scanner adds a property "byteCodeVersion" to each scanned class and "cyclomaticComplexity" to each scanned method

  • Added a new concept "java:JavaVersion": Set a human readable property "javaVersion" on a class file based on its byte code version

  • Referenced types are now also resolved using the transitive dependencies of the containing artifact

5.8.2. RDBMS

  • Database schemas may be scanned from the command line without creating a specific property file

5.8.3. Plugin API

  • ReportPlugin#setResult now takes a 'Result<? extends ExecutableRule>' as parameter (instead of 'Result<? extends Rule>')

5.8.4. XML

  • Prevent online schema lookups for DTDs while parsing documents

6. jQAssistant 1.0.0-RC1

6.1. Core

6.1.1. General

  • reduced amount of log messages printed on the console while running

6.1.2. Scanner

  • introduced pluggable scopes for identifying file and url types, e.g. 'maven:repository' or 'java:classpath'

6.1.3. Rules

  • added support for writing rules using AsciiDoc

  • added support for rules written in script languages (e.g. Ruby, Groovy, JavaScript etc.) using the Java Scripting API (JSR-223)

6.2. Maven plugin

  • minimum requirement has been changed to Apache Maven 3.2.x

  • added support for scopes: scope element in scanIncludes and a new goal available-scopes

  • allow multi-threaded maven builds

6.3. Command line

  • added command line support for scopes, e.g. scan -f java:classpath::/My/ClassPath/

6.4. Plugins

6.4.1. Facelet

  • added facelet plugin providing a scanner for JSF 2.x XHTML based views

6.4.2. Java

  • scanner adds DEPENDS_ON relations between Java types during scan, the corresponding concepts have been removed

  • referenced Java types are only resolved within the same artifact or dependencies thereof, unresolvable types will be referenced by a REQUIRES relation from the artifact.

6.4.3. Java EE 6

  • added scanners for EAR archives and application.xml descriptors

  • added scanners for WAR archives and web.xml descriptors

6.4.4. JUnit

  • renamed JUnit4 plugin to JUnit as it also contains rules for JUnit3

  • added a concept 'junit4:SuiteClass'

  • added a group 'junit4:Default' including all defined constraints for JUnit4

6.4.5. Maven

  • added a plugin for scanning pom.xml files providing access to dependency management, plugins, profiles, etc.

6.4.6. Maven Repository

  • added Maven 2 Repository plugin (m2repo) containing a scanner for incremental scans of remote repositories

6.4.7. RDBMS

  • added RDBMS plugin containing a scanner to import schema metadata from relational databases

6.4.8. TestNG

  • added TestNG plugin containing concepts

6.4.9. XML

  • added XML plugin containing a generic scanner for XML files

6.5. Plugin API

  • added annotation @Requires for scanner plugins to build dependency chains

  • added mandatory "name" attribute to jqassistant-plugin element of jqassistant-plugin.xml descriptors

  • moved file related model classes from package 'c.b.j.core.store.api.model' to 'c.b.j.plugin.common.api.model' == jQAssistant 1.0.0-M4

6.6. General

  • license changed from ASL 2.0 to GPLv3 to solve compatibility issues with Neo4j community edition

6.7. Core

6.7.1. Scanner

  • major performance improvements, especially for larger projects

  • all scanned files are represented with a file label, even if no scanner actually accepts the file type

  • a public API for scanner plugins is now provided, an example for SCV files is available in the documentation

6.7.2. Analysis

  • constraints and concepts provide a severity

6.8. Maven plugin

  • added support for additional scan directories (scanDirectories) and rule directories (rulesDirectories)

  • added 'skip' property for excluding single modules from scan

  • renamed property 'failOnConstraintViolations' to 'failOnViolations'

  • include JUnit test reports in scan

  • better support for multi-module projects

6.9. Command line

  • added downloadable distribution providing a standalone CLI including shell scripts for Windows and Unix compatible systems

6.10. Sonar

  • provide all plugins of jQAssistant distribution in sonar plugin

6.11. Plugins

6.11.1. Java

  • added scanner support for Java 8 bytecode

  • new concepts for throwable types are now provided

6.11.2. Java 8

  • added concepts for functional interfaces and default methods

6.11.3. JUnit4

  • new concepts for lifecycle annotations (@Before, @After, @BeforeClass, @AfterClass)

  • new concepts for JUnit3 tests

  • split up of concept "junit4:TestClassOrMethod" into "junit4:TestClass" and "junit4:TestMethod"

  • added constraints for unit tests

6.11.4. CDI

  • new plugin containing a scanner for beans.xml descriptors, concepts and constrains

6.12. Documentation

  • explanation of rule types added (concepts, constraints, groups)

  • an example is provided for distributing plugins containing rules