jQAssistant is a QA tool, which allows the definition and validation of project specific rules on a structural level. It is built upon the graph database Neo4j and can easily be plugged into the build process to automate detection of constraint violations and generate reports about user defined concepts and metrics.

Example use cases:

  • Enforce naming conventions, e.g. EJBs, JPA entities, test classes, packages, Maven modules etc.
  • Validate dependencies between modules of your project
  • Separate API and implementation packages
  • Detect common problems like cyclic dependencies or tests without assertions

Rules are expressed in Cypher - the easy-to-learn query language of Neo4j:

  t AS TestWithoutAssertion
Get started here!


  • jQAssistant Lunch – October 2021

    Only one week to go for our next lunch session: 07.10.2021, 12:00 (CEST)! This time the hands-on will provide an Introduction to Architecture Decisions Records (ADRs) and Validation with jQAssistant. If you’re interested please register here. For those who missed our September lunch: here is the Introduction to Software Analytics using jQAssistant & Jupyter Notebooks…

  • jQAssistant Lunch – September 2021

    Only one week to go for the next lunch session: 02.09.2021, 12:00 (CEST)! This time our hands-on we will give an Introduction to Software Analytics using jQAssistant & Jupyter Notebooks. Interested? Please register here. PS: Here’s the recorded hands-on session about Getting started with jQA, Spring Boot, Maven and SonarQube (German language) from our August…

  • jQAssistant Plugin 1.10.0 for SonarQube Released

    We released an update of the jQAssistant plugin for SonarQube! It comes with the following changes: Upgraded API compatibility to SonarQube 8.9 LTS Recently SonarQube raised their LTS (Long Term Support) version from 7.9 to 8.9. As we’re following the LTS releases we upgrade the jQAssistant plugin to use the according APIs now. Configurable Issue…

  • jQAssistant Lunch – August 2021

    Our next lunch is right ahead – 05.08.2021, 12:00 (CEST)! Beside news and Q&A we will present a hands-on about Integrating jQAssistant into a Spring Boot application. If you want to join please register here. In case you missed our last lunch session, here are the recorded videos:

  • jQAssistant Context Mapper Integration Released

    We’re happy to announce a new plug-in for jQAssistant. From this time on, you can integrate jQAssistant with Context Mapper, which is a modeling framework for Strategic Domain-driven Design. The jqassistant-context-mapper-plugin allows you to scan existing Context Mapper models so that you can query Context Maps, Bounded Contexts, and relationships between Bounded Contexts. Furthermore, it…

  • jQAssistant 1.10.0 released

    jQAssistant 1.10.0 is available now and it comes with the following new features: Java Generics The Java scanner – after a long time – finally supports generic types, e.g. private List<FederationUploadKey> originalKeys; is represented in the graph by (field:Field)-[:OF_GENERIC_TYPE]->(parameterizedType:ParameterizedType), (parameterizedType)-[:OF_RAW_TYPE]->(fieldType:Type{fqn:"java.util.List"}), (parameterizedType)-[:HAS_ACTUAL_TYPE_ARGUMENT{index:0}]->(typeArgument), (typeArgument)-[:OF_RAW_TYPE]->(elementType:Type{fqn:"app.coronawarn.server.common.persistence.domain.FederationUploadKey"}) The graph model has been designed such that it stays as close as…

  • jQAssistant Lunch

    It’s lunch time! We’re setting up monthly live sessions (in German language) where we – the people behind jQAssistant – want to get in closer contact with you, our community. This is on our regular menu: News: What’s new in the jQAssistant universe? All about new releases, features, plugins, etc. from us and our community!…

  • jQAssistant 1.9.1 released

    jQAssistant 1.9.1 is now available and it comes with the following new features: Rules in YAML files Beside Asciidoc and XML files rules now may be written in YAML files as well: concepts: – id: java:Throwable description: Labels types deriving from java.lang.Throwable as "Throwable". source: | match (throwable)-[:EXTENDS*]->(t:Type) where t.fqn = 'java.lang.Throwable' SET throwable:Throwable return…

  • jQAssistant Double Features

    During the last three weeks there were two „jQAssistant Double Feature“ events at the Java User Group Switzerland (JUG CH) and the Software Architecture Meetup Nuremberg: Dirk Mahler started with a talk introducing the tool jQAssistant giving an overview about use cases and how it works. In the second talk Stephan Pirnbaum explained pragmatic and…

  • jQAssistant Plugin 1.9.0 for SonarQube Released

    We have a new release of the jQAssistant plugin for SonarQube available now, it comes with two major changes: Filterable Ad-hoc Rules Until now all issues were created either as „Constraint Violation“ or „Failed Concept“ which made it impossible to search for concrete rules as specified in your XML or Asciidoc files. The plugin therefore…

  • View All »

Back to Top