1. jQAssistant 1.8.0

1.1. Changes to the Plugins

1.1.1. Asciidoc Report Plugin 1.8.0

  • Include Asciidoc Report plugin into jQAssistant main project. Note that for upgrading to 1.8 any existing dependency to the Asciidoc Report plugin from the contrib area must be removed

  • Renamed properties asciidoc.report.plantuml.format & asciidoc.report.plantuml.rendermode to plantuml.report.format & plantuml.report.rendermode

1.1.2. CDI Plugin 1.8.0

No changes.

1.1.3. EJB 3 Plugin 1.8.0

No changes.

1.1.4. GraphML Plugin 1.8.0

No changes.

1.1.5. Java Plugin 1.8.0

  • Added concept java:VirtualDependsOn providing VIRTUAL_DEPENDS_ON relations based on DEPENDS_ON relations to super classes

  • Added concept java:VirtualInvokes providing VIRTUAL_INVOKES relations representing virtual invocations

  • Deprecated concept java:InvokesOverriddenMethod as it creates`INVOKES` relations that may be ambiguous (replaced by VIRTUAL_INVOKES)

  • Type members (i.e. fields and methods) are now reported only using their signature. Example: com.acme.Foo#void doSomething() is now reported as void doSomething()

  • Migrated the following concepts from the Java 8 plugin into this plugin:

    • java8:FunctionalInterfacejava:FunctionalInterface

    • java8:DefaultMethodjava:DefaultMethod

    • java8:LambdaMethodjava:LambdaMethod

1.1.6. Java 8 Plugin 1.8.0

  • This plugin has been deprecated, the concepts have been migrated to the Java plugin:

    • java8:FunctionalInterfacejava:FunctionalInterface

    • java8:DefaultMethodjava:DefaultMethod

    • java8:LambdaMethodjava:LambdaMethod

1.1.7. JPA 2 Plugin 1.8.0

No changes.

1.1.8. JUnit Plugin 1.8.0

No changes.

1.1.9. JAX RS Plugin 1.8.0

No changes.

1.1.10. Java EE 6 Plugin 1.8.0

No changes.

1.1.11. JSON Plugin 1.8.0

No changes.

1.1.12. M2 Repository Plugin 1.8.0

No changes.

1.1.13. Maven 3 Plugin 1.8.0

  • Added plugin configuration options for scanning artifacts that are declared as dependencies to a Maven project (issue)

    • maven3.dependencies.scan for enabling scanning dependencies

    • maven3.dependencies.includes and maven3.dependencies.excludes taking Maven artifact filters to control which artifact should be scanned

  • Added capability to scan URLs as part of scanIncludes

1.1.14. OSGi Plugin 1.8.0

No changes.

1.1.15. RDBMS Plugin 1.8.0

No changes.

1.1.16. Spring Plugin 1.8.0

  • Added meta-annotated Spring annotations to concepts, e.g. @SpringBootApplication will be also labeled with `Configuration

  • Relaxed the constraint spring-injection:InjectablesMustNotBeInstantiated such that instantiation is allowed from either bean producer methods declared by injectables or non-injectables (issue)

  • Relaxed the constraint spring-injection:FieldsOfInjectablesMustNotBeManipulated such that only fields of injectable types are checked for being written by non-constructor methods (issue)

  • The constraints spring-injection:FieldsOfInjectablesMustNotBeManipulated, spring-injection:InjectablesMustNotBeHeldInStaticVariables and spring-injection:InjectablesMustNotBeAccessedStatically are improved such that also fields are considered where injectable types are injected by interfaces or super classes.

1.1.17. TestNG Plugin 1.8.0

No changes.

1.1.18. Tycho Plugin 1.7.0

No changes.

1.1.19. XML Plugin 1.8.0

No changes.

1.1.20. YAML Plugin 1.8.0

No changes.

1.2. Changes to the Commandline Tool and Plugin for Maven

1.2.1. Plugin for Maven 1.8.0

  • Added Asciidoc Report plugin to the jQA Maven plugin, i.e. it does no longer need to be added as explicit dependency

  • Removed configuration options for APOC and Graph Algorithms. These will be available as separate plugins, see APOC plugin and Graph Algorithms plugin.

  • Removed deprecated options jqassistant.severity, jqassistant.failOnViolations, jqassistant.server.address and jqassistant.server.port

1.2.2. Commandline Tool 1.8.0

  • Added Asciidoc Report plugin to CLI distribution

  • Removed commandline options embeddedApocEnabled embeddedGraphAlgorithmsEnabled. These are now available as separate plugins, see APOC plugin and Graph Algorithms plugin

1.3. Changes to Common Modules

1.3.1. Common Plugin 1.8.0

No changes.

1.3.2. Core Framework 1.8.0

  • Fixed a StackOverflowError if a concepts requires itself, e.g. by using wildcards (see issue)

  • Changed the namespace for the XML schemas of rule, plugin and report descriptors and provided schema locations that can be resolved by editors/IDEs (see issue)

  • Changes for plugin developers:

    • Moved package com.buschmais.jqassistant.core.analysis.api.rule to com.buschmais.jqassistant.rule.api.model

    • Moved package com.buschmais.jqassistant.core.analysis.api.report to com.buschmais.jqassistant.report.api.model

    • Plugins using classes from these packages just need to adopt their imports, no other changes have been applied

  • Upgraded to XO 1.0.0

    • The release comes with a change that possibly breaks existing plugin implementations: property related annotations (e.g. @Property, @Relationship) must be placed on Getters, an error will be reported at startup if such annotation is found on a Setter.

  • Removed APOC and Graph Algorithms libraries

1.3.3. Neo4j Backend Version 1.8.0

  • Upgraded to Neo4j 3.5.14

2. jQAssistant 1.7.0

2.1. Changes to the Plugins

2.1.1. CDI Plugin 1.7.0

No changes.

2.1.2. EJB 3 Plugin 1.7.0

No changes.

2.1.3. GraphML Plugin 1.7.0

No changes.

2.1.4. Java Plugin 1.7.0

  • Added annotation @jQAsuppress to allow suppression of annotated Java elements from rule results (similar to @java.lang.SuppressWarnings).

  • Added support for scanning Java 13 bytecode (upgraded ASM to 7.1)

2.1.5. Java 8 Plugin 1.7.0

No changes.

2.1.6. JPA 2 Plugin 1.7.0

No changes.

2.1.7. JUnit Plugin 1.7.0

TBW.

2.1.8. JAX RS Plugin 1.7.0

No changes.

2.1.9. Java EE 6 Plugin 1.7.0

No changes.

2.1.10. JSON Plugin 1.7.0

No changes.

2.1.11. M2 Repository Plugin 1.7.0

  • Improved repository scanner to correctly handle SNAPSHOTS and build up a hierarchical GAV structure

  • Download artifacts from repository in background while scanning to improve performance

  • Default value of property m2repo.artifacts.scan changed to false, i.e. only models are scanned by default

2.1.12. Maven 3 Plugin 1.7.0

  • Added a label Effective for :Maven:Pom nodes to represent the effective model of a project or artifact

  • Fixed a problem where in a multi module Maven project resolved dependencies between artifacts have been created multipe times

  • Improved graph model to support for exclusions on declared or managed dependencies:

    (:Pom)-[:DECLARES]->(dependency:Maven:Dependency)-[:TO_ARTIFACT]->(:Maven:Artifact),
    (dependency)-[:EXCLUDES]->(:Maven:Exclusion)
Note
The previously used graph model (:Pom)-[:DECLARES_DEPENDENCY]->(:Maven:Artifact) is still supported but deprecated. It will be removed in upcoming releases:
  • Fixed Maven project scanner to add label :File only to :Maven:Artifact nodes if the corresponding Maven artifact has been scanned

  • Upgraded Maven core and plugin dependencies to Maven 3.5.0

2.1.13. OSGi Plugin 1.7.0

No changes.

2.1.14. RDBMS Plugin 1.7.0

No changes.

2.1.15. Spring Plugin 1.7.0

  • Renamed relation representing virtual dependencies between components from DEPENDS_ON to VIRTUAL_DEPENDS_ON (issue)

2.1.16. TestNG Plugin 1.7.0

No changes.

2.1.17. Tycho Plugin 1.7.0

No changes.

2.1.18. XML Plugin 1.7.0

No changes.

2.1.19. YAML Plugin 1.7.0

No changes.

2.2. Changes to the Commandline Tool and Plugin for Maven

2.2.1. Plugin for Maven 1.7.0

  • Added configuration graphAlgorithmsEnabled for embedded server and system property jqassistant.embedded.graphAlgorithmsEnabled

2.2.2. Commandline Tool 1.7.0

  • Removed Neo4j V2 distribution

  • Renamed long option of -u for scanning URLs from --uris to --urls

  • Added option embeddedGraphAlgorithmsEnabled

2.3. Changes to Common Modules

2.3.1. Common Plugin 1.7.0

No changes.

2.3.2. Core Framework 1.7.0

  • Removed deprecated class com.buschmais.jqassistant.core.report.api.AbstractReportPlugin, report plugins must be migrated to implement com.buschmais.jqassistant.core.report.api.ReportPlugin

  • A warning will now be logged if there is no rule source parser who is able to read and parse the rule source.

  • Fixed an issue where plugins could not register Asciidoctor extensions when used within the CLI

2.3.3. Neo4j Backend Version 1.7.0

  • Removed Neo4j v2 backend

  • Upgraded to Neo4j 3.5.7 and APOC 3.5.0.4

  • Added Neo4j graph algorithms library 3.5.4.0

  • Reduced size of database directory by limiting retention of Neo4j transaction logs

  • Added an unmanaged Neo4j extension that serves static content provided from classpath resources located in

3. jQAssistant 1.6.0

3.1. Changes to the Plugins

3.1.1. CDI Plugin 1.6.0

No changes for this version.

3.1.2. EJB 3 Plugin 1.6.0

No changes for this version.

3.1.3. GraphML Plugin 1.6.0

No changes for this version.

3.1.4. Java Plugin 1.6.0

  • Upgraded Java bytecode parser to ASM 7.0 for supporting Java 11 bytecode

3.1.5. Java 8 Plugin 1.6.0

No changes for this version.

3.1.6. JPA 2 Plugin 1.6.0

No changes for this version.

3.1.7. JUnit Plugin 1.6.0

TBW.

3.1.8. JAX RS Plugin 1.6.0

No changes for this version.

3.1.9. Java EE 6 Plugin 1.6.0

No changes for this version.

3.1.10. JSON Plugin 1.6.0

3.1.11. M2 Repository Plugin 1.6.0

No changes for this version.

3.1.12. Maven 3 Plugin 1.6.0

  • Resolve the dependency tree for the artifacts generated by a Maven project which can be queried by MATCH (p:Maven:Project)-[:CREATES]→(a:Artifact)-[:DEPENDS_ON*]→(d:Artifact) RETURN *

  • Added to the documentation that the declared dependencies of a Maven plugin can be queried by using the outgoing DECLARES_DEPENDENCY relation of the node for a Maven plugin.

  • The information of the SCM (Source Control Management) section of a POM is now also part of the graph model. The node for the SCM information can be queried with a query like MATCH (p:Maven:Pom)-[:HAS_SCM]->(s:Maven:Scm) RETURN s.

  • The URL of the project home is now available as property of the node for the Maven POM and can be retrieved via the property url. A query to access the project home could be written as MATCH (p:Maven:Pom) RETURN p.url.

3.1.13. OSGi Plugin 1.6.0

No changes for this version.

3.1.14. RDBMS Plugin 1.6.0

  • Fixed a problem in the documentation of the RDBMS scanner plugin, the file providing the database connection properties must be prefixed with jqassistant.plugin.rdbms.

3.1.15. Spring Plugin 1.6.0

No changes for this version.

3.1.16. TestNG Plugin 1.6.0

No changes for this version.

3.1.17. Tycho Plugin 1.6.0

No changes for this version.

3.1.18. XML Plugin 1.6.0

No changes for this version.

3.1.19. YAML Plugin 1.6.0

No changes for this version.

3.2. Changes to the Commandline Tool and Plugin for Maven

3.2.1. Plugin for Maven 1.6.0

  • Removed deprecated system property jqassistant.server.address and replaced it by jqassistant.embedded.listen_address

  • Removed deprecated system property jqassistant.server.port and replaced it by jqassistant.embedded.httpPort

3.2.2. Commandline Tool 1.6.0

  • The flag -continueOnError was activated by default, it is now deactivated and must be explicitly specified to skip errors during scanning

  • Use a child-first classloading strategy for plugins, i.e. prefer classes that are provided by plugins over classes from the framework

  • Removed deprecated command line option serverAddress, replaced by embeddedListenAddress

  • Removed deprecated command line option serverPort, replaced by embeddedHttpPort

3.3. Changes to Common Modules

3.3.1. Common Plugin 1.6.0

@Dirk: Can you please add some notes on your changes?

3.3.2. Core Framework 1.6.0

No changes for this version.

3.3.3. Neo4j Backend Version 1.6.0

  • Upgraded to Neo4j 3.4.10

4. jQAssistant 1.5.0

4.1. Changes to the Plugins

4.1.1. Change of the Version Information of the Plugins

Starting with this release all plugins of jQAssistant will have the same three digit version number as the jQAssistant Commandline Distribution and the jQAssistant Plugin for Maven.

4.1.1.1. Example

According to our old version schema the Maven artifact coordinates would have been:

<dependency>
    <groupId>com.buschmais.jqassistant.plugin</groupId>
    <artifactId>java</artifactId>
    <version>1.5</version>
</dependency>

With our new version schema for jQAssistant’s plugins the Maven artifact coordinates will be:

<dependency>
    <groupId>com.buschmais.jqassistant.plugin</groupId>
    <artifactId>java</artifactId>
    <version>1.5.0</version>
</dependency>

4.1.2. CDI Plugin 1.5.0

No Changes.

4.1.3. EJB 3 Plugin 1.5.0

No changes for this release.

4.1.4. GraphML Plugin 1.5.0

No Changes.

4.1.5. Java Plugin 1.5.0

No Changes.

4.1.6. Java 8 Plugin 1.5.0

No Changes.

4.1.7. JPA 2 Plugin 1.5.0

No Changes.

4.1.8. JUnit Plugin 1.5.0

No Changes.

4.1.9. JAX RS Plugin 1.5.0

No Changes.

4.1.10. Java EE 6 Plugin 1.5.0

No Changes.

4.1.11. JSON Plugin 1.5.0

No Changes.

4.1.12. M2 Repository Plugin 1.5.0

No Changes.

4.1.13. Maven 3 Plugin 1.5.0

  • The Maven project scanner adds a label Main to the main artifact (e.g. classes compiled from src/main/java) and Test to the test artifact ((e.g. classes compiled from src/test/java)

4.1.14. OSGi Plugin 1.5.0

No changes.

4.1.15. RDBMS Plugin 1.5.0

No Changes.

4.1.16. Spring Plugin 1.5.0

  • Ignore synthetic fields (e.g. generated by Groovy) for injection related constraints

4.1.17. TestNG Plugin 1.5.0

No Changes.

4.1.18. Tycho Plugin 1.5.0

No Changes.

4.1.19. XML Plugin 1.5.0

  • Added property lineNumber to :Xml:Document, :Xml:Element, :Xml:CData and :Xml:Text.

4.1.20. YAML Plugin 1.5.0

  • The YAML scanner now also accepts yml files

  • Removed index from property value of :Value labeled nodes to avoid problems with large strings and Neo4j 3.4 indexes

4.2. Changes to the Commandline Tool and Plugin for Maven

4.2.1. Plugin for Maven 1.5.0

  • Added a section embedded to the store configuration section allowing to configure the embedded Neo4j server (listen address, ports and APOC registration)

  • Deprecated system property jqassistant.server.address and replaced it by jqassistant.embedded.listen_address

  • Deprecated system property jqassistant.server.port and replaced it by jqassistant.embedded.httpPort

  • Added system properties jqassistant.embedded.boltPort and jqassistant.embedded.apocEnabled

  • Fixed a problem that parallel builds could not be executed for scan/analyze goals (due to conflicting use of BOLT port)

  • Fixed a problem of skipped analysis due to wrong detection of last module in a reactor

4.2.2. Commandline Tool 1.5.0

  • Removed deprecated option severity from analyze task (replaced by failOnSeverity and warnOnSeverity)

  • Deprecated option serverAddress, replaced by embeddedListenAddress

  • Deprecated option serverPort, replaced by embeddedHttpPort

  • Added options embeddedBoltPort and embeddedApocEnabled

4.3. Changes to Common Modules

4.3.1. Common Plugin 1.5.0

  • Removed additional label Container for directories, archives and artifacts as it was ambiguous.

4.3.2. Core Framework 1.5.0

  • Allow wildcards * and ? for referencing rules to be included in a group or required concepts

  • Added builder() method to com.buschmais.jqassistant.core.analysis.api.Result to ease instance creation in script rules.

4.3.3. Neo4j Backend Version 1.5.0

  • Upgraded to Neo4j 3.4.8 and APOC 3.4.0.3

5. jQAssistant 1.4.0

  • Added a plugin providing rules for the Spring Framework.

5.1. Changes to the Plugins

5.1.1. CDI Plugin 1.4

No Changes.

5.1.2. EJB 3 Plugin 1.4

  • New concept ejb3:Schedule which labels all Java methods annotated with @javax.ejb.Schedule with the label Schedule.

  • New constraint ejb3:ScheduleMethodInEjbContext to ensure that scheduled methods are only allowed in EJBs

5.1.3. GraphML Plugin 1.4

No Changes.

5.1.4. Java Plugin 1.4

  • Added support for method variables in Java class scanner, i.e. (:Method)-[:DECLARES]→(:Variable).

  • Added support for XML based Property files. See Issue 1: Scan also XML based Property Files.

  • Added label 'ByteCode' for Java class elements (types, methods, fields, etc.)

  • Added support for Java 10

5.1.5. Java 8 Plugin 1.4

  • Added concept java8:LambdaMethod for identifying lambda expressions

5.1.6. JPA 2 Plugin 1.4

No Changes.

5.1.7. JUnit Plugin 1.4

5.1.7.1. Support for Junit 5 added

This release adds JUnit 5 support to jQAssistant. See buschmais/jqa-junit-plugin#2.

5.1.7.2. Renamed constraints
  • Renamed junit4:IgnoreWithoutMessage to junit:IgnoreWithoutMessage because of added support for JUnit 5.

  • Renamed junit:IgnoreWithoutMessage to junit:AssertionMustProvideMessage because of added support for JUnit 5.

  • Renamed junit4:TestMethodWithoutAssertion to junit:TestMethodWithoutAssertion because of added support for JUnit 5.

5.1.8. JAX RS Plugin 1.4

No Changes.

5.1.9. Java EE 6 Plugin 1.4

No Changes.

5.1.10. JSON Plugin 1.4

  • Added support to exclude or include specific files via a simple filename pattern by setting the parameters json.file.include and json.file.exclude.

  • Fixed wrong compiler settings to generate Java 7 bytecode instead of Java 8

5.1.11. M2 Repository Plugin 1.4

No Changes.

5.1.12. Maven 3 Plugin 1.4

  • Fixed wrong compiler settings to generate Java 7 bytecode instead of Java 8

5.1.13. OSGi Plugin 1.4

  • Only internal changes.

5.1.14. RDBMS Plugin 1.4

No Changes.

5.1.15. Spring Plugin 1.4

  • Initial checkin

5.1.16. TestNG Plugin 1.4

No Changes.

5.1.17. Tycho Plugin 1.4

No Changes.

5.1.18. XML Plugin 1.4

  • Fixed an NPE issue while scanning XML documents using Bolt protocol

5.1.19. YAML Plugin 1.4

  • Update to SnakeYAML 1.19

5.2. Changes to the Commandline Tool and Plugin for Maven

5.2.1. Plugin for Maven 1.4.0

  • Maven plugin automatically selects Neo4j v2 or Neo4j v3 depending on the available Java runtime environment

  • Users can now provide the severity for the configuration parameters failOnSeverity, warnOnSeverity, and storeLifecycle also in lower case letters.

  • Users can now provide the severity for the configuration parameter failOnSeverity and warnOnSeverity also in lower case.

  • The plugin for Maven now logs the severity of constraint violations which will cause the build to fail before the analysis will start. It also logs the severity of constraint violations which will cause warnings but without failing the build.

  • Fixed a bug regarding wrong default values for warnOnSeverity and failOnSeverity

5.2.2. Commandline Tool 1.4.0

  • Two separate commandline tool distributions are now provided: Neo4jv2 (Java 7) and Neo4jv3 (Java 8+, including APOC library)

  • jQAssistant now logs the severity of constraint violations which will cause jQAssistant to fail. It also logs the severity of constraint violations which will cause warnings.

  • Added -daemon parameter to server task

5.3. Changes to Common Modules

5.3.1. Common Plugin 1.4

  • Added a plugin that creates JUnit reports about all executed rules

  • Added a plugin that creates CSV reports is a concept or constraints selects "csv" as report type

5.3.2. Core Framework 1.4.0

  • Fixed a problem of parsing AsciiDoc files containing definition lists

  • API change (breaking): Added ReportContext as 1st parameter to ReportPlugin#initialize

5.3.3. Neo4j Backend Version 1.4.0

6. jQAssistant 1.3.0

  • Added a plugin for scanning JSON documents.

6.1. Changes to the Plugins

6.1.1. CDI Plugin 1.3

  • Only internal changes.

6.1.2. EJB 3 Plugin 1.3

  • Only internal changes.

6.1.3. GraphML Plugin 1.3

  • Added support for nested sub graphs

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

6.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

6.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.

6.1.6. JPA 2 Plugin 1.3

  • Only internal changes.

6.1.7. JUnit Plugin 1.3

  • Only internal changes.

6.1.8. JAX RS Plugin 1.3

  • Only internal changes.

6.1.9. Java EE 6 Plugin 1.3

  • Only internal changes.

6.1.10. JSON Plugin 1.3

  • Initial release.

6.1.11. M2 Repository Plugin 1.3

  • Only internal changes.

6.1.12. Maven 3 Plugin 1.3

6.1.13. OSGi Plugin 1.3

  • Only internal changes.

6.1.14. RDBMS Plugin 1.3

  • Only internal changes.

6.1.15. TestNG Plugin 1.3

  • Only internal changes.

6.1.16. Tycho Plugin 1.3

  • Only internal changes.

6.1.17. XML Plugin 1.3

  • Only internal changes.

6.1.18. YAML Plugin 1.3

  • Only internal changes.

6.2. Changes to the Commandline Tool and Plugin for Maven

6.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

6.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

6.3. Changes to Common Modules

6.3.1. Common Plugin 1.3

  • Only internal changes.

6.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

6.3.3. Neo4j Backend Version 1.3.0

  • Prepared support for Neo4j 3.x

7. jQAssistant 1.2.0

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

7.1. Changes to the Plugins

7.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.

7.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.

7.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.

7.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).

7.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.

7.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.

7.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.

7.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.

7.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.

7.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.

7.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.

7.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.

7.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.

7.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.

7.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.

7.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.

7.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.

7.2. Changes to the Commandline Tool and Plugin for Maven

7.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.

7.2.2. Commandline Tool 1.2.0

  • Added support for rule parameters.

7.3. Changes to Common Modules

7.3.1. Common Plugin 1.2

  • 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.

7.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.

7.3.3. Neo4j Backend Version 1.2.0

  • Upgraded to Neo4j 2.3.8.

8. jQAssistant 1.1.3

8.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

8.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

8.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

8.4. Plugins

8.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)

8.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)

8.4.3. JPA2

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

8.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"

8.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)

9. jQAssistant 1.1.2

9.1. Core

  • Upgraded to Neo4j 2.3.2

9.2. Integrated Server

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

9.3. Plugins

9.3.1. YAML

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

9.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

9.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

9.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"

9.6. Plugins

9.6.1. Common

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

9.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

9.6.3. JPA2

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

9.6.4. Maven

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

10. jQAssistant 1.1.0

10.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

10.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

10.3. CLI

  • Added serverAddress and serverPort parameters to server task

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

10.4. Plugins

10.4.1. Common

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

10.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)

10.4.3. JUnit

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

10.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)

10.4.5. Tycho

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

10.4.6. URL

10.4.7. YAML

  • Added plugin which provides a scanner for YAML files

10.5. Documentation

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

10.6. Core

10.6.1. Store

  • Upgraded to Neo4j 2.2.1

10.6.2. Analysis

  • added explicit verification strategies for executable rules

  • clarified behavor of concepts and constraints regarding to configured severities

10.7. Maven

  • Fixed problems of report goal in site lifecycle

  • Allow Maven plugin to be configured as build extension

10.8. Plugins

10.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

10.8.2. RDBMS

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

10.8.3. Plugin API

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

10.8.4. XML

  • Prevent online schema lookups for DTDs while parsing documents

11. jQAssistant 1.0.0-RC1

11.1. Core

11.1.1. General

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

11.1.2. Scanner

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

11.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)

11.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

11.3. Command line

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

11.4. Plugins

11.4.1. Facelet

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

11.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.

11.4.3. Java EE 6

  • added scanners for EAR archives and application.xml descriptors

  • added scanners for WAR archives and web.xml descriptors

11.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

11.4.5. Maven

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

11.4.6. Maven Repository

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

11.4.7. RDBMS

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

11.4.8. TestNG

  • added TestNG plugin containing concepts

11.4.9. XML

  • added XML plugin containing a generic scanner for XML files

11.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

11.6. General

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

11.7. Core

11.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

11.7.2. Analysis

  • constraints and concepts provide a severity

11.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

11.9. Command line

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

11.10. Sonar

  • provide all plugins of jQAssistant distribution in sonar plugin

11.11. Plugins

11.11.1. Java

  • added scanner support for Java 8 bytecode

  • new concepts for throwable types are now provided

11.11.2. Java 8

  • added concepts for functional interfaces and default methods

11.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

11.11.4. CDI

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

11.12. Documentation

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

  • an example is provided for distributing plugins containing rules