JQA is an open source tool for QA of Java applications. It is considered a supplement to tools like PMD (http://pmd.sourceforge.net/) or Checkstyle (http://checkstyle.sourceforge.net/) because it allows to write rules that exploit the bytecode engine capabilities for high-level architecture validations.
JQA is integrated with:
- Maven 2 (http://maven.apache.org/)
- Sonar (http://www.sonarsource.org/)
- Eclipse (http://www.eclipse.org/)
JQA allows you to check your application classes regarding:
- Naming: e.g., "all my DataAccessObject classes must be in the package com.mycompany.myapp.dao and must be named like *DAO"
- Typing: e.g., "all my BusinessObject classes must extends to com.mycompany.myapp.bo.AbstractBO (directly or indirectly)"
- Usages: e.g., "all my View classes (actions) can't use a DAO class"
- Exception throwing: e.g., "all my Service classes must throw only exceptions that extends to com.mycompany.myapp.exception.ServiceException"
- Allocations: e.g., "all my DataAccessObject classes must not be allocated/instantiated (via the new keyword)"
- Abstraction: e.g., "all my types (files) in the com.mycompany.myapp.service package must be interfaces (contracts)"
Here are few screenshots of JQA in action.
- Java 5 or later
- Maven 2 or later
First, download and install JQA:
git clone http://github.com/fluxitsoft/jqa
cd jqa/jqa-parent/
mvn clean install
Then, run one of the JQA plugins.
To run the JQA Maven plugin:
cd jqa-test-parent
mvn ar.com.fluxit.jqa:jqa-maven-plugin:check
xdg-open jqa-test-project/target/results-jqa-test-project.html
To run the JQA Sonar plugin:
cd jqa-sonar-plugin
mvn org.codehaus.sonar:sonar-dev-maven-plugin::start-war -Dsonar.runtimeVersion=2.14 > target/sonar.log &
tail -f target/sonar.log | while read line; do echo $line | grep -q 'Database is up' && break; done
cd ../jqa-test-parent
mvn sonar:sonar -Dsonar.profile="JQA way"
xdg-open http://localhost:9000/drilldown/violations/ar.com.fluxit.jqa:jqa-test-parent
If you want to use JQA, see the User's guide.
If you want to contribute to JQA, see the Developer's guide.
JQA is under development, and contributors are welcome. If you have a feature request, suggestion, or bug report, please open a new issue. To submit patches, please send a pull request. Once your changes get merged back in, you’ll automatically be added to the Contributors List.
This project is under GNU Lesser General Public License version 3 or later (http://www.gnu.org/licenses/).