Skip to content

About

A CLI for analyzing Spring codebases, inspecting architecture, detecting common issues, and generating actionable insights.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

19 Commits

Folders and files

Repository files navigation

Spring Inspector

Spring Inspector é uma ferramenta de linha de comando (CLI) em Java para análise estática de projetos Spring Boot e Spring Framework.

A ferramenta percorre o código-fonte por meio de AST (Abstract Syntax Tree) e gera relatórios com métricas e alertas relacionados a controllers, beans e endpoints, ajudando a identificar possíveis problemas estruturais logo no início do desenvolvimento.

Funcionalidades

  • Contagem de beans Spring, como @Component, @Service, @Repository, @Controller e @RestController
  • Detecção de endpoints que recebem @RequestBody sem anotações de validação, como @Valid ou @Validated
  • Identificação de rotas HTTP duplicadas
  • Detecção de controllers com excesso de endpoints
  • Execução de todas as análises com uma única flag

Requisitos

  • Java JDK 25 ou superior instalado e configurado nas variáveis de ambiente (JAVA_HOME)

Instalação e Configuração

1. Clonar o repositório

git clone https://github.com/seu-usuario/spring-inspector.git
cd spring-inspector

2. Adicionar o diretório bin ao PATH do sistema

Para executar o spring-inspector diretamente de qualquer diretório no terminal, adicione o caminho do diretório bin à variável de ambiente PATH.

Linux / macOS (bash / zsh)

  1. Garanta que o script de execução possui permissão de execução:
    chmod +x bin/spring-inspector
  2. Adicione a seguinte linha ao seu arquivo de configuração (~/.bashrc, ~/.zshrc, etc.) ou execute na sessão atual:
    export PATH="$PATH:/caminho/absoluto/para/spring-inspector/bin"

Windows

(No Windows, o arquivo bin/spring-inspector.cmd é reconhecido nativamente como executável e não necessita de permissões adicionais).

  1. Abra o menu Iniciar e pesquise por Editar as variáveis de ambiente do sistema.
  2. Clique em Variáveis de Ambiente...
  3. Em Variáveis do sistema (ou do usuário), selecione Path e clique em Editar.
  4. Clique em Novo e adicione o caminho completo da pasta bin (exemplo: C:\projetos\spring-inspector\bin).
  5. Clique em OK para salvar.

Como Executar

Com o bin adicionado ao PATH, você pode rodar o spring-inspector diretamente a partir de qualquer pasta:

spring-inspector /caminho/para/projeto-spring -a

Opções da CLI

Uso: spring-inspector [-acehV] <path>
Flag Longa Descrição
<path> — Caminho do projeto Spring a ser analisado
-a --all Executa todas as análises disponíveis
-c --count Executa a contagem de beans e a verificação de validações ausentes
-e --endpoint Verifica endpoints duplicados e controllers com excesso de rotas
-h --help Exibe a ajuda da CLI
-V --version Exibe a versão atual da ferramenta

Exemplos de Uso

Executar todas as análises:

spring-inspector ./meu-projeto-api -a

Executar apenas a análise de beans e validações:

spring-inspector ./meu-projeto-api -c

Executar apenas a análise de endpoints:

spring-inspector ./meu-projeto-api -e

Exemplo de Saída

                               .::::::::::::::::.           
                            .-====================-.        
                           .========================.       
                          :==========================:      
                         :=======-..    .:============:     
                        .======:..:=====-:..-==========.    
                       :======..-==========:.:==========:   
                     .:======:.-============:.-==========:. 
                    .:=======..==============..===========:.
                    .========..==============.:============.
                    .========:.-============:.-============.
                    .:========:.:==========..:============:.
                     .:========-...-====-....:===========:. 
                       :==========::....:-==-..:========:   
                        :=====================-..-=====:    
                         :======================-..-==:     
                          :=======================-==:      
                           .========================.       
                            .-====================-.        
                              ..::::::::::::::::..          

                         Analyzing your Spring project ...


================================================================================
        Analysis: Bean Counting ( 0 issues and 7 findings )
================================================================================

[INFO] 
Bean        : Controller
Name        : Counting of Controller
Description : Count: 24

[INFO] 
Bean        : Service
Name        : Counting of Service
Description : Count: 35

[INFO] 
Bean        : Repository
Name        : Counting of Repository
Description : Count: 25

================================================================================
        Duration: 0.79 ms
================================================================================

================================================================================
        Analysis: Missing Request Validation ( 1 issues and 0 findings )
================================================================================

[WARNING] MISSING_REQUEST_VALIDATION
Bean        : Controller
Name        : Missing Request Validation
Description : Method parameter is not being validated.
File        : ./src/main/java/com/exemplo/controllers/UserController.java
Line        : 45
Suggestion  : Add @Valid before the parameter request

================================================================================
        Duration: 2.21 ms
================================================================================

================================================================================
        Analysis: Duplicate Endpoints ( 0 issues and 1 findings )
================================================================================

[INFO] DUPLICATE_ENDPOINT
Bean        : Controller
Name        : Duplicate endpoints
Description : Everything is OK :)

================================================================================
        Duration: 0.86 ms
================================================================================

==========================================================================================
Summary
==========================================================================================

Issues: 
        INFO            : 4
        WARNING         : 1
        ERROR           : 0

Analyzers executed:
        3

Total duration:
        3.86 ms

Project:
        ./meu-projeto-api

Roadmap

A ferramenta ainda está em evolução. Próximas melhorias planejadas:

  • Melhor suporte a diferentes estilos de projeto Spring
  • Detecção de mais padrões de problema em controllers e services
  • Classificação de severidade para os alertas
  • Exportação dos resultados para JSON e/ou HTML
  • Melhor integração com CI/CD
  • Suporte a mais tipos de análise arquitetural
  • Melhorias na identificação automática de DTOs e entidades

Tecnologias utilizadas

  • Java 25
  • JavaParser
  • Picocli
  • Maven Wrapper

Licença

Este projeto está licenciado sob a licença Apache-2.0 license.

About

A CLI for analyzing Spring codebases, inspecting architecture, detecting common issues, and generating actionable insights.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages