Martins, António Constantino LopesPinto, João Vasco Adão2023-12-182023-11-15http://hdl.handle.net/10400.22/24230A deteção de code smells é uma tarefa fundamental no processo de desenvolvimento de soft ware, uma vez que esses defeitos podem impactar negativamente na qualidade do software. No entanto, muitas empresas ainda dependem da análise manual do código pelos programadores para identificar essas más práticas, o que pode ser um processo lento e propenso a erros. Neste contexto, a empresa para a qual esta tese foi desenvolvida confrontava-se com a mesma situação, uma vez que não dispunha de uma plataforma para a deteção automática de code smells, o que motivou a realização deste projeto O projeto apresentado neste documento consiste em uma aplicação que automatiza a deteção de code smells, abrangendo problemas tanto gerais quanto específicos ao domínio da empresa. Foi desenvolvida uma nova aplicação capaz de analisar ficheiros submetidos por utilizadores, identificar erros e fornecer sugestões de correção. Esta aplicação é projetada para suportar diversas linguagens de programação de forma a oferecer uma solução abrangente para o processo de deteção e correção de code smells. Começou-se por realizar uma análise abrangente do problema em questão. A partir desta análise, foram definidos objetivos claros e específicos para orientar o nosso projeto. Em seguida, empreendemos uma pesquisa para avaliar as abordagens e técnicas disponíveis, com o objetivo de identificar as melhores práticas e soluções aplicáveis ao nosso problema. Com os objetivos estabelecidos e abordagens estudadas foi realizado o levantamento de requisitos detalhados e a criação de casos de uso que descrevem as interações e funcionalidades da nossa aplicação. Com base nos casos de uso, desenvolveu-se o design da aplicação, focado em criar a melhor arquitetura possível para abordar o problema proposto tendo em atenção a eficiência, escalabilidade e facilidade de manutenção da arquitetura. Durante todo o processo de desenvolvimento, seguiu-se boas práticas de engenharia de software, incluindo a criação de código de qualidade e a implementação de padrões de design , bem como a elaboração de testes abrangentes para garantir a robustez do sistema. Nosso objetivo final foi não apenas desenvolver uma aplicação funcional, mas também criar uma solução que fosse de fácil manutenção para futuros programadores. Finalmente, serão apresentadas conclusões referentes ao projeto desenvolvido, abordando os desafios enfrentados, as limitações identificadas, os objetivos alcançados e o trabalho futuro a realizar.Detecting code smells is a fundamental task in the software development process, since these defects can have a negative impact on software quality. However, many companies still rely on manual code analysis by programmers to identify these bad practices, which can be a slow and error-prone process. In this context, the company for which this thesis was carried out faced this same situation, as it did not have a platform for the automatic detection of code smells, which motivated the development of this project. The project presented in this document consists of an application that automates the detection of code smells, covering both general problems and those specific to the company’s domain. A new application was developed that can analyze files submitted by users, identify errors and provide suggestions for correction. This application is designed to support various programming languages in order to offer a comprehensive solution to the process of detecting and correcting code smells. The first step was to carry out a comprehensive analysis of the problem in question. From this analysis, clear and specific objectives were defined to guide our project. We then undertook research to evaluate the approaches and techniques available, with the aim of identifying the best practices and solutions applicable to our problem. With the objectives established and approaches studied, we carried out a detailed requirements assessment and created use cases describing the interactions and functionalities of our application. Based on the use cases, the application’s design was developed, focusing on creating the best possible architecture to address the proposed problem, taking into account the architecture’s efficiency, scalability and ease of maintenance. Throughout the development process, we followed good software engineering practices, in cluding the creation of quality code and the implementation of design standards. as well as comprehensive testing to ensure the system’s robustness. Our ultimate goal was not only to develop a functional application, but also to create a solution that would be easy to maintain for future programmers. Finally, conclusions will be drawn regarding the project developed, addressing the challenges faced, the limitations identified, the objectives achieved and future work to be carried out.porDetecção de Code SmellsQualidade de softwareAnálise Estática de CódigoSistrade Automatic Code Reviewmaster thesis203413890