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:

MATCH
  (t:Test:Method)
WHERE NOT
  (t)-[:INVOKES]->(:Assert:Method)
RETURN
  t AS TestWithoutAssertion
Get started here!

News

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

  • jQAssistant Docker Plugin released

    A first release of the jQAssistant Docker plugin is now available! It allows scanning docker registries and making information about contained repositories, tags, manifests and layers available for exploration: Curious? Try it out, installation instructions and usage information are available on GitHub!

  • jQAssistant 1.8.0 released

    jQAssistant 1.8.0 released including HTML reports embedding rule results as tables or diagrams, scanning of Maven dependencies and improved Spring rules.

  • Workshop in Frankfurt/Main: „Let’s Disassemble A Monolith!“

    The workshop „Let’s Disassemble A Monolith“ is coming to Frankfurt/Main in December 10th/11h this year! Attendees will learn how to deal with the challenge of extracting Microservices from monolothic Java systems. This is performed in a hands-on way using the example of a real-world open source Java eCommerce system. One of the key aspects is…

  • jQAssistant Plugin for SonarQube 7.9 released

    A new release of the jQAssistant plugin for SonarQube is available now! It comes with the following changes: Raised compatibility to SonarQube 7.9 (current LTS release) Support for multi-module projecs The plugin and installation instructions are available on the project homepage, for release note read here. Enjoy!

  • View All »

Back to Top