This project is a research product developed at IF Sudeste MG since 2014. The main research goal is to study and develop techniques related to program structural complexity and assess their impact on unit tests. In particular, the software from this respository has the following features:
- Plot the control flow graph of a method based on a given Java source code.
- Calculate the cyclomatic complexity based on the plotted graph.
- Calculate all independent paths in the graph, which should be tested by unit tests.
- Check if the source code can be written with less cyclomatic complexity without compromising its functionality. We call this unnecessary cyclomatic complexity.
- Plot a control flow graph representing the optimized source code without unnecessary cyclomatic complexity.
- Generate an optimized version of the source code, without the unnecessary cyclomatic complexity, when applicable.
- Generate unit tests templates based on this whole analysis.
People that directly contributted to the development of this project:
- Marco Antônio Pereira Araújo (academic advisor, 2014-today)
- Heleno de Souza Campos Junior (Lead developer and main investigator, 2014-today)
- Nathan Manera Magalhães (Developer and investigator, 2016-today)
- Gabriel Felix Vaneli (Developer, 2018-2018)
- Luis Rogério Ventura Martins Filho (Developer, 2015-2016)
- Alisson Fernandes do Prado (Developer, 2016-2016)
This research was financially supported by FAPEMIG, IF Sudeste MG and CNPq.
Publications related to this project:
-
MAGALHAES, N. M. ; CAMPOS JUNIOR, H. S. ; ARAUJO, M. A. P. . Melhoria da Qualidade de Software através da Eliminação da Complexidade Desnecessária em Código Fonte. In: Reunião Anual da SBPC, 2017, Belo Horizonte. Anais da 69a. Reunião Anual da SBPC, 2017. (PORTUGUESE)
-
CAMPOS JUNIOR, H. S.; MARTINS FILHO, L. R. V. ; ARAUJO, M. A. P. . Uma Abordagem para Otimização da Qualidade de Código Fonte Baseado na Complexidade Estrutural. In: Jornada Nacional de Iniciação Científica - 68a. Reunião Anual da SBPC, 2016, Porto Seguro/BA. Anais da Jornada Nacional de Iniciação Científica - 68a. Reunião Anual da SBPC 2016, 2016. (PORTUGUESE)
-
MARTINS FILHO, L. R. V. ; CAMPOS JUNIOR, H. S. ; ARAUJO, M. A. P. . Uma Ferramenta de Apoio à Construção de Teste de Unidade através da Geração de Grafos de Fluxo de Controle. In: II SIMEPE - Simpósio de Ensino, Pesquisa e Extensão do IF Sudeste MG, 2015, Barbacena. Anais do II SIMEPE, 2015. (PORTUGUESE)
-
CAMPOS JUNIOR, H. S.; MARTINS FILHO, L. R. V. ; ARAUJO, M. A. P. . UMA ABORDAGEM PARA OTIMIZAÇÃO DA QUALIDADE DE CÓDIGO FONTE BASEADO NA COMPLEXIDADE ESTRUTURAL. In: V Seminário de Iniciação Científica do IF Sudeste MG Campus Juiz de Fora, 2015, Juiz de Fora. Anais do V Seminário de Iniciação Científica do IF Sudeste MG Campus Juiz de Fora, 2015. (PORTUGUESE)
-
Pitch do projeto para a Mostra Fapemig 2015. (Video in PORTUGUESE)
Clone the repository
git clone https://github.com/helenocampos/complexity_tool.git
Enter directory and compile with Maven
cd complexity_tool
mvn install
Execute the jar with dependencies that is generated in the target folder or download the jar (or the .exe if you prefer) from the releases page.