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 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
@@ -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/