Aluno: Lucas Branco Laborne Tavares
Professor: Humberto Torres Marques Neto
O objetivo deste laboratório é analisar a qualidade de repositórios desenvolvidos na linguagem Python comparando-os com repositórios desenvolvidos na linguagem Java sob a perspectiva de características levantadas através de ferramentas como Radon, CodeFactor ou SonarQube.
-
Escolher a ferramenta de análise estática de código Java e Python.
Sugere-se avaliar o conteúdo do repositório
https://github.com/analysis-tools-dev/static-analysis -
Com o objetivo de analisar repositórios relevantes, escritos nas linguagens estudadas (Python e Java), coletaremos, ou seja, faremos o clone, dos top-100 repositórios Python e dos top-100 repositórios Java mais populares do GitHub, para calcular cada uma das métricas definidas a seguir.
-
Produzir um relatório comparando os repositórios mais populares das linguagens Python e Java de acordo com as métricas definidas.
- Quais as características dos top-100 repositórios Java mais populares?
- Quais as características dos top-100 repositórios Python mais populares?
- Repositórios Java e Python populares possuem características de "boa qualidade" semelhantes?
- A popularidade influencia nas características dos repositórios Java e Python?
Utilizaremos como fatores de qualidade métricas associadas à quatro dimensões:
Popularidade: Número de estrelas, número de watchers, número de forks dos repositórios coletados
Tamanho: Linhas de código (LOC e SLOC) e linhas de comentários
Atividade: Número de releases, frequência de publicação de releases (número de releases / dias)
Maturidade: Idade (em anos) de cada repositório coletado
Apresente uma extensão do comparativo dos repositórios Java e Python considerando as métricas:
i. Complexidade ciclomática
ii. Índice de manutenibilidade
iii. Halstead
Veja como referência como é feito pela ferramenta "radon" em https://radon.readthedocs.io/en/latest/intro.html
- (Opcional) Crie um ambiente virtual
- Instale as dependências:
pip install -r requirements.txt
- Execute o script para gerar a coleta dos dados:
python coleta.py
- Execute o script para gerar a análise dos dados:
python analise.py
- Execute o script para gerar o relatório final:
python relatorio.py