rails_architect_analyzer 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/tests.yml +52 -0
- data/.gitignore +39 -0
- data/.rubocop.yml +51 -0
- data/CHANGELOG.md +66 -0
- data/CODE_OF_CONDUCT.md +41 -0
- data/CONTRIBUTING.md +534 -0
- data/EXAMPLE_GEMFILE +11 -0
- data/Gemfile +12 -0
- data/INDEX.md +192 -0
- data/LICENSE.md +21 -0
- data/README.md +270 -0
- data/Rakefile +15 -0
- data/exe/rails_architect +6 -0
- data/lib/rails_architect/analyzers/architecture_analyzer.rb +148 -0
- data/lib/rails_architect/analyzers/bdd_analyzer.rb +160 -0
- data/lib/rails_architect/analyzers/solid_analyzer.rb +239 -0
- data/lib/rails_architect/analyzers/tdd_analyzer.rb +138 -0
- data/lib/rails_architect/cli.rb +83 -0
- data/lib/rails_architect/reporters/report_generator.rb +212 -0
- data/lib/rails_architect/version.rb +5 -0
- data/lib/rails_architect.rb +53 -0
- data/rails_architect.gemspec +34 -0
- metadata +136 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: e3daee9a73f1985066be97b4fdc48933a4891aab1087695b2c0e8b108cbb18bf
|
|
4
|
+
data.tar.gz: a18938b51ff289e99cfe707e97a2ee89d8e15f271dbe677d90f68bd45dadd349
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 9cb395f7696debbf94f875e8024eeb0a87a842cd676411eb92dc3ee4d7c5ba876e41f2244ee42a6ed41023850d099598cb563c97386c53d7c1fa752056a0a842
|
|
7
|
+
data.tar.gz: f7f0223c8eee0a3cead24e38642d3a4588a6fa42d03e0c045e5e6417e8c2ebf602644244f74b104b0cd860e345ffc844b7d34cb0bca8608fcdc925bbcef7a96a
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
ruby-version: ['3.3']
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v3
|
|
18
|
+
|
|
19
|
+
- name: Set up Ruby
|
|
20
|
+
uses: ruby/setup-ruby@v1
|
|
21
|
+
with:
|
|
22
|
+
ruby-version: ${{ matrix.ruby-version }}
|
|
23
|
+
bundler-cache: true
|
|
24
|
+
|
|
25
|
+
- name: Run tests
|
|
26
|
+
run: bundle exec rake spec
|
|
27
|
+
|
|
28
|
+
- name: Run RuboCop
|
|
29
|
+
run: bundle exec rubocop --display-cop-names
|
|
30
|
+
|
|
31
|
+
build:
|
|
32
|
+
needs: test
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
35
|
+
|
|
36
|
+
steps:
|
|
37
|
+
- uses: actions/checkout@v3
|
|
38
|
+
|
|
39
|
+
- name: Set up Ruby
|
|
40
|
+
uses: ruby/setup-ruby@v1
|
|
41
|
+
with:
|
|
42
|
+
ruby-version: '3.3'
|
|
43
|
+
bundler-cache: true
|
|
44
|
+
|
|
45
|
+
- name: Build gem
|
|
46
|
+
run: bundle exec rake build
|
|
47
|
+
|
|
48
|
+
- name: Upload artifact
|
|
49
|
+
uses: actions/upload-artifact@v3
|
|
50
|
+
with:
|
|
51
|
+
name: rails_architect-gem
|
|
52
|
+
path: pkg/
|
data/.gitignore
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/.bundle/
|
|
2
|
+
/.yardoc
|
|
3
|
+
/_yardoc/
|
|
4
|
+
/coverage/
|
|
5
|
+
/doc/
|
|
6
|
+
/pkg/
|
|
7
|
+
/spec/reports/
|
|
8
|
+
/tmp/
|
|
9
|
+
*.gem
|
|
10
|
+
*.rbc
|
|
11
|
+
/.config
|
|
12
|
+
/InstalledFiles
|
|
13
|
+
/test/tmp/
|
|
14
|
+
/test/version_tmp/
|
|
15
|
+
/tmp
|
|
16
|
+
**/Gemfile.lock
|
|
17
|
+
.DS_Store
|
|
18
|
+
*.swp
|
|
19
|
+
*.swo
|
|
20
|
+
*~
|
|
21
|
+
.idea/
|
|
22
|
+
.vscode/
|
|
23
|
+
*.iml
|
|
24
|
+
dist/
|
|
25
|
+
build/
|
|
26
|
+
.env
|
|
27
|
+
.env.local
|
|
28
|
+
*.log
|
|
29
|
+
PUBLISHING.md
|
|
30
|
+
QUICKSTART.md
|
|
31
|
+
REFACTORING_EXAMPLES.md
|
|
32
|
+
TESTING.md
|
|
33
|
+
setup_and_test.sh
|
|
34
|
+
QUICK_TEST_GUIDE.md
|
|
35
|
+
SETUP_SUMMARY.md
|
|
36
|
+
PUBLISH_INSTRUCTIONS.md
|
|
37
|
+
publish_gem.sh
|
|
38
|
+
PUBLISH_MANUAL.md
|
|
39
|
+
PROJECT_SUMMARY.md
|
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# RuboCop Configuration for Rails Architect
|
|
2
|
+
|
|
3
|
+
AllCops:
|
|
4
|
+
TargetRubyVersion: 3.3
|
|
5
|
+
NewCops: enable
|
|
6
|
+
Exclude:
|
|
7
|
+
- 'bin/**/*'
|
|
8
|
+
- 'vendor/**/*'
|
|
9
|
+
- 'spec/fixtures/**/*'
|
|
10
|
+
SuggestExtensions: false
|
|
11
|
+
|
|
12
|
+
# Cop configurations
|
|
13
|
+
Style/StringLiterals:
|
|
14
|
+
EnforcedStyle: double_quotes
|
|
15
|
+
|
|
16
|
+
Layout/LineLength:
|
|
17
|
+
Max: 120
|
|
18
|
+
|
|
19
|
+
Metrics/MethodLength:
|
|
20
|
+
Max: 30
|
|
21
|
+
Exclude:
|
|
22
|
+
- 'spec/**/*'
|
|
23
|
+
|
|
24
|
+
Metrics/ClassLength:
|
|
25
|
+
Max: 200
|
|
26
|
+
Exclude:
|
|
27
|
+
- 'spec/**/*'
|
|
28
|
+
|
|
29
|
+
Metrics/AbcSize:
|
|
30
|
+
Max: 70
|
|
31
|
+
Exclude:
|
|
32
|
+
- 'spec/**/*'
|
|
33
|
+
|
|
34
|
+
Metrics/CyclomaticComplexity:
|
|
35
|
+
Max: 12
|
|
36
|
+
Exclude:
|
|
37
|
+
- 'spec/**/*'
|
|
38
|
+
|
|
39
|
+
Metrics/PerceivedComplexity:
|
|
40
|
+
Max: 12
|
|
41
|
+
Exclude:
|
|
42
|
+
- 'spec/**/*'
|
|
43
|
+
|
|
44
|
+
Metrics/BlockLength:
|
|
45
|
+
Max: 50
|
|
46
|
+
Exclude:
|
|
47
|
+
- 'spec/**/*'
|
|
48
|
+
|
|
49
|
+
Layout/MultilineMethodArgumentLineBreaks:
|
|
50
|
+
Enabled: true
|
|
51
|
+
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.
|
|
4
|
+
|
|
5
|
+
O formato é baseado em [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
e este projeto segue [Semantic Versioning](https://semver.org/lang/pt_BR/).
|
|
7
|
+
|
|
8
|
+
## [0.1.0] - 2025-12-08
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- ✨ Análise de arquitetura Rails com detecção de estrutura padrão
|
|
12
|
+
- ✨ Análise de cobertura TDD com estimativas inteligentes
|
|
13
|
+
- ✨ Análise de BDD com suporte a Cucumber e RSpec
|
|
14
|
+
- ✨ Análise completa de princípios SOLID (S, O, L, I, D)
|
|
15
|
+
- ✨ Detecção de "fat models" e "fat controllers"
|
|
16
|
+
- ✨ Detecção de padrões opcionais (Services, Decorators, Policies, etc.)
|
|
17
|
+
- ✨ CLI completa com múltiplas opções:
|
|
18
|
+
- `rails_architect analyze` - análise completa
|
|
19
|
+
- `rails_architect suggest` - apenas sugestões
|
|
20
|
+
- `rails_architect version` - mostrar versão
|
|
21
|
+
- ✨ Exportação de relatórios em JSON
|
|
22
|
+
- ✨ Exportação de relatórios em arquivo de texto
|
|
23
|
+
- ✨ Relatórios coloridos e formatados para terminal
|
|
24
|
+
- ✨ Análise de estrutura de testes por tipo
|
|
25
|
+
- ✨ Detecção de BDD practices (user stories, Given/When/Then)
|
|
26
|
+
- ✨ Sugestões inteligentes e acionáveis
|
|
27
|
+
- ✨ Score de cada análise (arquitetura, TDD, BDD, SOLID)
|
|
28
|
+
|
|
29
|
+
### Documentation
|
|
30
|
+
- 📖 README.md completo com exemplos
|
|
31
|
+
- 📖 QUICKSTART.md para começar rapidamente
|
|
32
|
+
- 📖 CONTRIBUTING.md com guia de contribuição
|
|
33
|
+
- 📖 REFACTORING_EXAMPLES.md com exemplos práticos
|
|
34
|
+
- 📖 PUBLISHING.md para publicar a gem
|
|
35
|
+
- 📖 CODE_OF_CONDUCT.md com código de conduta
|
|
36
|
+
- 📖 Testes de unidade com RSpec
|
|
37
|
+
|
|
38
|
+
### Initial Release
|
|
39
|
+
- 🎉 Versão 0.1.0 - MVP (Minimum Viable Product)
|
|
40
|
+
|
|
41
|
+
## Planejado para Futuras Versões
|
|
42
|
+
|
|
43
|
+
### v0.2.0
|
|
44
|
+
- [ ] Análise de performance
|
|
45
|
+
- [ ] Detecção de N+1 queries
|
|
46
|
+
- [ ] Integração com RuboCop
|
|
47
|
+
- [ ] Detecção de code smells
|
|
48
|
+
|
|
49
|
+
### v0.3.0
|
|
50
|
+
- [ ] Dashboard web interativo
|
|
51
|
+
- [ ] Armazenamento de histórico de análises
|
|
52
|
+
- [ ] Comparação entre versões
|
|
53
|
+
|
|
54
|
+
### v1.0.0
|
|
55
|
+
- [ ] Suporte a múltiplas versões do Rails
|
|
56
|
+
- [ ] Plugin system para extensões
|
|
57
|
+
- [ ] API REST para programas externos
|
|
58
|
+
- [ ] Integração CI/CD completa
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
**Data de Publicação:** 8 de dezembro de 2025
|
|
63
|
+
|
|
64
|
+
**Autor:** Daniel Matos
|
|
65
|
+
|
|
66
|
+
**Status:** ✅ Estável para uso em desenvolvimento
|
data/CODE_OF_CONDUCT.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Código de Conduta do Pacto do Contribuidor
|
|
2
|
+
|
|
3
|
+
## Nossa Promessa
|
|
4
|
+
|
|
5
|
+
No interesse de promover um ambiente aberto e acolhedor, nós, como colaboradores e mantenedores, nos comprometemos a tornar a participação em nosso projeto e nossa comunidade uma experiência livre de assédio para todos, independentemente da idade, tamanho do corpo, deficiência, etnia, identidade e expressão de gênero, nível de experiência, nacionalidade, aparência pessoal, raça, religião, ou identidade e orientação sexual.
|
|
6
|
+
|
|
7
|
+
## Nossos Padrões
|
|
8
|
+
|
|
9
|
+
Exemplos de comportamento que contribuem para criar um ambiente positivo incluem:
|
|
10
|
+
|
|
11
|
+
- Usar linguagem acolhedora e inclusiva
|
|
12
|
+
- Ser respeitoso com opiniões, pontos de vista e experiências divergentes
|
|
13
|
+
- Aceitar crítica construtiva com graça
|
|
14
|
+
- Focar no que é melhor para a comunidade
|
|
15
|
+
- Mostrar empatia para com outros membros da comunidade
|
|
16
|
+
|
|
17
|
+
Exemplos de comportamento inaceitável por parte dos participantes incluem:
|
|
18
|
+
|
|
19
|
+
- Uso de linguagem ou imagens sexualizadas e atenção ou avanços sexuais indesejados
|
|
20
|
+
- Trollagem, comentários insultuosos/derogatórios e ataques pessoais ou políticos
|
|
21
|
+
- Assédio público ou privado
|
|
22
|
+
- Publicação de informações privadas de outros, como endereço físico ou eletrônico, sem permissão explícita
|
|
23
|
+
- Outra conduta que poderia razoavelmente ser considerada inadequada em um ambiente profissional
|
|
24
|
+
|
|
25
|
+
## Nossa Responsabilidade
|
|
26
|
+
|
|
27
|
+
Os mantenedores do projeto são responsáveis por esclarecer os padrões de comportamento aceitável e devem tomar ações corretivas apropriadas e justas em resposta a qualquer instância de comportamento inaceitável.
|
|
28
|
+
|
|
29
|
+
Os mantenedores do projeto têm o direito e a responsabilidade de remover, editar ou rejeitar comentários, commits, código, edições de wiki, problemas e outras contribuições que não estejam alinhadas a este Código de Conduta, ou banir temporária ou permanentemente qualquer colaborador por comportamentos que considerem inadequados, ameaçadores, ofensivos ou prejudiciais.
|
|
30
|
+
|
|
31
|
+
## Escopo
|
|
32
|
+
|
|
33
|
+
Este Código de Conduta se aplica tanto em espaços do projeto quanto em espaços públicos quando um indivíduo está representando o projeto ou sua comunidade. Exemplos de representação do projeto incluem o uso de um endereço de e-mail oficial do projeto, postagem através de uma conta de mídia social oficial, ou atuação como representante designado em um evento online ou offline. A representação do projeto pode ser descrita e esclarecida pelos mantenedores do projeto.
|
|
34
|
+
|
|
35
|
+
## Execução
|
|
36
|
+
|
|
37
|
+
Instâncias de comportamento abusivo, de assédio ou inaceitável podem ser denunciadas entrando em contato com a equipe do projeto em eu@danieldjam.dev.br. Todas as reclamações serão revisadas e investigadas e resultarão em uma resposta que se julge necessária e apropriada às circunstâncias. A equipe do projeto é obrigada a manter a confidencialidade em relação ao relator de um incidente.
|
|
38
|
+
|
|
39
|
+
## Atribuição
|
|
40
|
+
|
|
41
|
+
Este Código de Conduta é adaptado do [Pacto do Contribuidor](https://www.contributor-covenant.org), versão 1.4, disponível em https://www.contributor-covenant.org/pt-br/version/1/4/code-of-conduct/
|