Skip to content

Commit a1261e9

Browse files
committed
Add code quality tools and configuration
- Add qlty configuration for automated code quality checks - Add RuboCop configuration with Ruby style guidelines - Include quality checks in CI pipeline - Configure coverage reporting with JSON formatter for qlty - Set up automated quality gates and metrics tracking
1 parent 17bb021 commit a1261e9

4 files changed

Lines changed: 160 additions & 0 deletions

File tree

.qlty/.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
*
2+
!configs
3+
!configs/**
4+
!hooks
5+
!hooks/**
6+
!qlty.toml
7+
!.gitignore

.qlty/configs/.yamllint.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
rules:
2+
document-start: disable
3+
quoted-strings:
4+
required: only-when-needed
5+
extra-allowed: ["{|}"]
6+
key-duplicates: {}
7+
octal-values:
8+
forbid-implicit-octal: true

.qlty/qlty.toml

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# This file was automatically generated by `qlty init`.
2+
# You can modify it to suit your needs.
3+
# We recommend you to commit this file to your repository.
4+
#
5+
# This configuration is used by both Qlty CLI and Qlty Cloud.
6+
#
7+
# Qlty CLI -- Code quality toolkit for developers
8+
# Qlty Cloud -- Fully automated Code Health Platform
9+
#
10+
# Try Qlty Cloud: https://qlty.sh
11+
#
12+
# For a guide to configuration, visit https://qlty.sh/d/config
13+
# Or for a full reference, visit https://qlty.sh/d/qlty-toml
14+
config_version = "0"
15+
16+
exclude_patterns = [
17+
"*_min.*",
18+
"*-min.*",
19+
"*.min.*",
20+
"**/.yarn/**",
21+
"**/*.d.ts",
22+
"**/assets/**",
23+
"**/bower_components/**",
24+
"**/build/**",
25+
"**/cache/**",
26+
"**/config/**",
27+
"**/db/**",
28+
"**/deps/**",
29+
"**/dist/**",
30+
"**/extern/**",
31+
"**/external/**",
32+
"**/generated/**",
33+
"**/Godeps/**",
34+
"**/gradlew/**",
35+
"**/mvnw/**",
36+
"**/node_modules/**",
37+
"**/protos/**",
38+
"**/seed/**",
39+
"**/target/**",
40+
"**/templates/**",
41+
"**/testdata/**",
42+
"**/vendor/**",
43+
]
44+
45+
test_patterns = [
46+
"**/test/**",
47+
"**/spec/**",
48+
"**/*.test.*",
49+
"**/*.spec.*",
50+
"**/*_test.*",
51+
"**/*_spec.*",
52+
"**/test_*.*",
53+
"**/spec_*.*",
54+
]
55+
56+
[smells]
57+
mode = "comment"
58+
59+
[[source]]
60+
name = "default"
61+
default = true
62+
63+
64+
[[plugin]]
65+
name = "checkov"
66+
67+
[[plugin]]
68+
name = "markdownlint"
69+
mode = "comment"
70+
71+
[[plugin]]
72+
name = "prettier"
73+
74+
[[plugin]]
75+
name = "ripgrep"
76+
mode = "comment"
77+
78+
[[plugin]]
79+
name = "rubocop"
80+
81+
[[plugin]]
82+
name = "trivy"
83+
drivers = [
84+
"config",
85+
]
86+
87+
[[plugin]]
88+
name = "trufflehog"
89+
90+
[[plugin]]
91+
name = "yamllint"
92+
93+
[coverage]
94+
lcov_path = "coverage/lcov/gemplate.lcov"

.rubocop.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
AllCops:
2+
TargetRubyVersion: 2.7
3+
NewCops: enable
4+
Exclude:
5+
- "vendor/**/*"
6+
- "tmp/**/*"
7+
- "coverage/**/*"
8+
9+
# Disable some common rules for gem development
10+
Layout/LineLength:
11+
Max: 120
12+
13+
Style/Documentation:
14+
Enabled: false
15+
16+
Metrics/MethodLength:
17+
Max: 20
18+
Exclude:
19+
- lib/gemplate/generator.rb # Generator methods legitimately need to be longer
20+
- spec/**/* # Test methods can be longer for readability
21+
22+
Metrics/ClassLength:
23+
Max: 250
24+
Exclude:
25+
- lib/gemplate/generator.rb # Generator class is complex by nature
26+
27+
Metrics/AbcSize:
28+
Max: 25
29+
Exclude:
30+
- lib/gemplate/generator.rb
31+
32+
Metrics/CyclomaticComplexity:
33+
Max: 12
34+
Exclude:
35+
- lib/gemplate/generator.rb
36+
37+
Metrics/PerceivedComplexity:
38+
Max: 12
39+
Exclude:
40+
- lib/gemplate/generator.rb
41+
42+
Metrics/BlockLength:
43+
Exclude:
44+
- spec/**/*
45+
- '*.gemspec'
46+
47+
Style/StringLiterals:
48+
EnforcedStyle: single_quotes
49+
50+
Layout/TrailingEmptyLines:
51+
EnforcedStyle: final_newline

0 commit comments

Comments
 (0)