Este Proyecto de Fin de Grado realizado de forma conjunta con otros dos compañeros más, se centra en el desarrollo y mejora de una herramienta de evaluación de calidad de diseño del código implementada en Rust. Dicha herramienta analiza el código fuente proporcionado por un usuario, usando diferentes métricas de calidad. Aunque este Trabajo de Fin de Grado (TFG) documentará solo una parte de la herramienta, todos los miembros han contribuido en todas las etapas del desarrollo. La base de la decisión de implementar la herramienta con el lenguaje Rust fue debido a la eficiencia aportada por el lenguaje y el posible uso que se le podría dar a la herramienta con otros lenguajes diferentes a Swift. La herramienta recibe un árbol sintáctico abstracto (AST) generado por el compilador de Swift. A partir de este AST, se generan tokens que se convertirán en nodos. Con la información de estos nodos, se crea una estructura intermedia en formato JSON. Esta estructura intermedia se analiza posteriormente para calcular métricas y determinar las dependencias entre los elementos del código. En este TFG se documentará la primera parte del proceso, en el cual destaca la generación de un Analizador Léxico y Sintáctico, para proporcionar a la herramienta la capacidad de generar los tokens y nodos, los cuales se pasarán como argumento para generar un AST, que contendrá toda la información necesaria para facilitar el análisis de los pasos posteriores.
ABSTRACT
This Final Degree Project, carried out jointly with two other colleagues, focuses on the development and improvement of a code design quality evaluation tool implemented in Rust. This tool analyzes the source code provided by a user, using different quality metrics. Although this final project will document only a part of the tool, all members have contributed to all stages of development. The decision to implement the tool in the Rust language was based on the efficiency provided by the language and the potential use of the tool with languages other than Swift. The tool receives an abstract syntax tree (AST) generated by the Swift compiler. From this AST, tokens are generated and converted into nodes. With the information from these nodes, an intermediate structure in JSON format is created. This intermediate structure is then analyzed to calculate metrics and determine dependencies between code elements. This Final Degree Project will document the first part of the process, which is focus on the generation of a Lexical and Syntactic Analyzer, that provides the tool with the capability to generate tokens and nodes, which will be used to generate an AST containing all the necessary information to facilitate the analysis of subsequent steps.
Este Proyecto de Fin de Grado realizado de forma conjunta con otros dos compañeros más, se centra en el desarrollo y mejora de una herramienta de evaluación de calidad de diseño del código implementada en Rust. Dicha herramienta analiza el código fuente proporcionado por un usuario, usando diferentes métricas de calidad. Aunque este Trabajo de Fin de Grado (TFG) documentará solo una parte de la herramienta, todos los miembros han contribuido en todas las etapas del desarrollo. La base de la decisión de implementar la herramienta con el lenguaje Rust fue debido a la eficiencia aportada por el lenguaje y el posible uso que se le podría dar a la herramienta con otros lenguajes diferentes a Swift. La herramienta recibe un árbol sintáctico abstracto (AST) generado por el compilador de Swift. A partir de este AST, se generan tokens que se convertirán en nodos. Con la información de estos nodos, se crea una estructura intermedia en formato JSON. Esta estructura intermedia se analiza posteriormente para calcular métricas y determinar las dependencias entre los elementos del código. En este TFG se documentará la primera parte del proceso, en el cual destaca la generación de un Analizador Léxico y Sintáctico, para proporcionar a la herramienta la capacidad de generar los tokens y nodos, los cuales se pasarán como argumento para generar un AST, que contendrá toda la información necesaria para facilitar el análisis de los pasos posteriores.
ABSTRACT
This Final Degree Project, carried out jointly with two other colleagues, focuses on the development and improvement of a code design quality evaluation tool implemented in Rust. This tool analyzes the source code provided by a user, using different quality metrics. Although this final project will document only a part of the tool, all members have contributed to all stages of development. The decision to implement the tool in the Rust language was based on the efficiency provided by the language and the potential use of the tool with languages other than Swift. The tool receives an abstract syntax tree (AST) generated by the Swift compiler. From this AST, tokens are generated and converted into nodes. With the information from these nodes, an intermediate structure in JSON format is created. This intermediate structure is then analyzed to calculate metrics and determine dependencies between code elements. This Final Degree Project will document the first part of the process, which is focus on the generation of a Lexical and Syntactic Analyzer, that provides the tool with the capability to generate tokens and nodes, which will be used to generate an AST containing all the necessary information to facilitate the analysis of subsequent steps. Read More