[en] Nowadays the increase in the program's size and complexity and the need for more security and durability have increased the use of tools to automate the analysis of programs, specifically static analysis tools, which perform analysis on the source code without having to run it. These tools usually focus on finding programming errors, neglecting the definition and query of more general properties in the source code. These properties can be used to search programming patterns, enforce coding standards, or simply be requirements that are demanded in a project. To do this, JavaCheck has been developed, a domain specific language that allows generating rules to define properties expected in Java code which will be verified in projects. For this purpose, a rule modeling environment integrated in Eclipse is provided, as it is one of the most used development environments for Java, along with a specific syntax focused on facilitating its creation. Finally, using a library and a code generator designed to analyze projects according to the rules. JavaCheck has been developed in the Eclipse Modeling Framework. JavaCheck has been validated in three perspectives, depending on the aspect of the language to be validated: expressiveness, utility and scalability. Finished this project, the main future work that can be developed is the extension of the language, due to the large number of properties that can have Java code.

[es] En la actualidad, el aumento del tamaño y la complejidad de los programas junto con la necesidad de seguridad y durabilidad han hecho crecer el uso de herramientas que automatizan el análisis de los programas. Concretamente, las herramientas de análisis estático, que permiten realizar un análisis sobre el código fuente sin necesidad de ejecutarlo. Estas herramientas, normalmente, centran sus esfuerzos en encontrar errores de programación, dejando por explorar un uso más amplio del análisis estático como puede ser la consulta de características en el código fuente. Dichas características pueden ser usadas para la búsqueda de patrones de programación, hacer cumplir normas de estilo en el código o, simplemente, ser requerimientos que se exigen en un proyecto. Para ello, se ha desarrollado JavaCheck, un lenguaje de dominio específico que permite generar reglas para definir propiedades esperables en código Java, como por ejemplo los modificadores de un atributo o el tipo de retorno de un método, que posteriormente serán comprobadas en proyectos. Se proporciona para ello un entorno de modelado de reglas integrado en Eclipse, por ser uno de los entornos de desarrollo más utilizado para Java, junto con una sintaxis concreta textual centrada en facilitar su creación. Para la comprobación de las reglas en proyectos Java, se ha creado un generador de código que utiliza una librería con funcionalidad para recorrer el árbol sintáctico de los programas. El desarrollo de JavaCheck se ha realizado con Eclipse Modeling Framework. Para validar JavaCheck se han realizado tres tipos de pruebas en función de que aspecto del lenguaje que se quiere validar: pruebas de expresividad, pruebas de utilidad y pruebas de escalabilidad. Terminado este proyecto, el principal trabajo futuro que se puede desarrollar es la ampliación del lenguaje, debido al amplio abanico de características que puede tener un código Java.