JAVACHECK: A Domain Specific Language for the Static Analysis of Java Code

The increasing complexity of software systems has raised the need for code analysis tools to assess its quality. However, these tools offer predefined metrics or evaluation criteria, which are frequently hard to extend or modify. For this purpose, we have developed JAVACHECK, a DomainSpecific Language targeted to define expected properties of Java code bases. JAVACHECK can be used in a variety of scenarios related to quality assurance: to define expected code styles (e.g., naming conventions), specify programming conventions (e.g., private attributes), detect code smells possibly indicating errors (e.g., equals method with no hashCode), and detect patterns (e.g., uses of Singleton) or requirements demanded in a project (e.g., a class with name synonym to “Professor”).

[1]  Francesca Arcelli Fontana,et al.  Automatic detection of bad smells in code: An experimental assessment , 2012, J. Object Technol..

[2]  Dimitrios S. Kolovos,et al.  Models from code or code as a model , 2016 .

[3]  Jordi Cabot,et al.  MoDisco: A model driven reverse engineering framework , 2014, Inf. Softw. Technol..

[4]  Ioannis Korkontzelos,et al.  Supporting Custom Quality Models to Analyse and Compare Open-Source Software , 2016, 2016 10th International Conference on the Quality of Information and Communications Technology (QUATIC).

[5]  Markus Scheidgen,et al.  Creating and Analyzing Source Code Repository Models - A Model-based Approach to Mining Software Repositories , 2017, MODELSWARD.

[6]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).

[7]  Elnar Hajiyev,et al.  CodeQuest: querying source code with datalog , 2005, OOPSLA '05.

[8]  Dimitrios S. Kolovos,et al.  Models from Code, or Code as Models? , 2016, OCL@MoDELS.