-
Notifications
You must be signed in to change notification settings - Fork 0
/
.rubocop.yml
103 lines (88 loc) · 2.55 KB
/
.rubocop.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
---
require:
- rubocop-rspec
- rubocop-performance
inherit_from:
- https://raw.githubusercontent.com/booch/config_files/master/ruby/rubocop.yml
# Ignore some files. NOTE: Exclude does not add to any existing Exclude directives.
AllCops:
Exclude:
- 'church*.rb'
- 'vendor/**/*'
# Allow longer lines.
Layout/LineLength:
Max: 160
# Use `{}` for blocks that return a value; otherwise use `do` and `end`.
# We make a few exceptions, mostly for RSpec. And for grammar and transform rules.
Style/BlockDelimiters:
EnforcedStyle: semantic
FunctionalMethods:
- expect
IgnoredMethods:
- rule
- rule!
- let
- let!
- subject
# Allow non-ASCII identifiers, and in comments.
Naming/AsciiIdentifiers:
Enabled: false
Style/AsciiComments:
Enabled: false
# Some of our classes are going to be long.
Metrics/ClassLength:
Max: 250
# Sometimes we need to pass a block down recursively, so allow expressing that.
Performance/RedundantBlockCall:
Enabled: false
# Not sure why `∧` and `∨` are problematic, even after allowing non-ASCII identifiers.
# Also allow `builtin_ClassName` methods.
Naming/MethodName:
Exclude:
- src/extensions/boolean.rb
- src/stone/top.rb
# I don't believe `module_function` should be outdented like `private`, but there's no way to turn it off for just `module_function`.
Layout/AccessModifierIndentation:
EnforcedStyle: outdent
Exclude:
- src/stone/top.rb
# Allow `expr = expr + x` in this particular file, to parallel `expr = x + expr` that's right next to it.
Style/SelfAssignment:
Exclude:
- src/stone/ast/binary_operation.rb
# The `grammar` and `transforms` methods are DSLs; don't worry about their size/complexity.
Metrics/AbcSize:
IgnoredMethods:
- grammar
- transforms
Metrics/MethodLength:
IgnoredMethods:
- grammar
- transforms
Metrics/PerceivedComplexity:
IgnoredMethods:
- grammar
- transforms
Metrics/CyclomaticComplexity:
IgnoredMethods:
- grammar
- transforms
# These seem to be broken; I *have* empty lines around all my class/module/method/block bodies.
Layout/EmptyLinesAroundClassBody:
Enabled: false
Layout/EmptyLinesAroundModuleBody:
Enabled: false
Layout/EmptyLineBetweenDefs:
Enabled: false
Layout/EmptyLinesAroundBlockBody:
Enabled: false
Style/PercentLiteralDelimiters:
Exclude:
- 'src/stone/ast/binary_operation.rb'
# Be a bit more lenient with RSpec: don't require filename to match class; allow more than 1 expectation per example.
RSpec/FilePath:
Enabled: False
RSpec/MultipleExpectations:
Max: 10
RSpec/ExampleLength:
Max: 10