ridecharge-rubocop 0.0.1

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.
Files changed (219) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.rspec +1 -0
  4. data/.travis.yml +14 -0
  5. data/CHANGELOG.md +0 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +35 -0
  9. data/Rakefile +22 -0
  10. data/bin/ridecharge-rubocop +49 -0
  11. data/config/0default.yml +8 -0
  12. data/config/fleet-magic-todo.yml +380 -0
  13. data/config/rc-todo.yml +190 -0
  14. data/config/ridecharge-rubocop_todo.yml +73 -0
  15. data/config/rubocop/default.yml +308 -0
  16. data/config/rubocop/disabled.yml +9 -0
  17. data/config/rubocop/enabled.yml +648 -0
  18. data/config/standard-todo.yml +24 -0
  19. data/config/tabs.yml +15 -0
  20. data/config/vehicle-todo.yml +195 -0
  21. data/lib/ridecharge/rubocop.rb +2 -0
  22. data/lib/ridecharge/rubocop/version.rb +5 -0
  23. data/lib/rubocop/config_loader_monkeypatch.rb +117 -0
  24. data/lib/rubocop/ridecharge.rb +1 -0
  25. data/ridecharge-rubocop.gemspec +25 -0
  26. data/spec/isolated_environment_spec.rb +24 -0
  27. data/spec/project_spec.rb +118 -0
  28. data/spec/rubocop/cli_spec.rb +1385 -0
  29. data/spec/rubocop/config_loader_spec.rb +328 -0
  30. data/spec/rubocop/config_spec.rb +179 -0
  31. data/spec/rubocop/config_store_spec.rb +53 -0
  32. data/spec/rubocop/cop/commissioner_spec.rb +83 -0
  33. data/spec/rubocop/cop/cop_spec.rb +114 -0
  34. data/spec/rubocop/cop/corrector_spec.rb +59 -0
  35. data/spec/rubocop/cop/lint/ambiguous_operator_spec.rb +113 -0
  36. data/spec/rubocop/cop/lint/ambiguous_regexp_literal_spec.rb +35 -0
  37. data/spec/rubocop/cop/lint/assignment_in_condition_spec.rb +107 -0
  38. data/spec/rubocop/cop/lint/block_alignment_spec.rb +411 -0
  39. data/spec/rubocop/cop/lint/condition_position_spec.rb +49 -0
  40. data/spec/rubocop/cop/lint/debugger_spec.rb +39 -0
  41. data/spec/rubocop/cop/lint/else_layout_spec.rb +65 -0
  42. data/spec/rubocop/cop/lint/empty_ensure_spec.rb +27 -0
  43. data/spec/rubocop/cop/lint/end_alignment_spec.rb +136 -0
  44. data/spec/rubocop/cop/lint/end_in_method_spec.rb +29 -0
  45. data/spec/rubocop/cop/lint/ensure_return_spec.rb +39 -0
  46. data/spec/rubocop/cop/lint/eval_spec.rb +35 -0
  47. data/spec/rubocop/cop/lint/handle_exceptions_spec.rb +30 -0
  48. data/spec/rubocop/cop/lint/invalid_character_literal_spec.rb +33 -0
  49. data/spec/rubocop/cop/lint/literal_in_condition_spec.rb +63 -0
  50. data/spec/rubocop/cop/lint/loop_spec.rb +27 -0
  51. data/spec/rubocop/cop/lint/parentheses_as_grouped_expression_spec.rb +57 -0
  52. data/spec/rubocop/cop/lint/require_parentheses_spec.rb +82 -0
  53. data/spec/rubocop/cop/lint/rescue_exception_spec.rb +131 -0
  54. data/spec/rubocop/cop/lint/shadowing_outer_local_variable_spec.rb +237 -0
  55. data/spec/rubocop/cop/lint/syntax_spec.rb +34 -0
  56. data/spec/rubocop/cop/lint/unreachable_code_spec.rb +63 -0
  57. data/spec/rubocop/cop/lint/useless_assignment_spec.rb +1570 -0
  58. data/spec/rubocop/cop/lint/useless_comparison_spec.rb +30 -0
  59. data/spec/rubocop/cop/lint/useless_else_without_rescue_spec.rb +48 -0
  60. data/spec/rubocop/cop/lint/useless_setter_call_spec.rb +149 -0
  61. data/spec/rubocop/cop/lint/void_spec.rb +57 -0
  62. data/spec/rubocop/cop/offence_spec.rb +133 -0
  63. data/spec/rubocop/cop/rails/default_scope_spec.rb +37 -0
  64. data/spec/rubocop/cop/rails/has_and_belongs_to_many_spec.rb +13 -0
  65. data/spec/rubocop/cop/rails/output_spec.rb +41 -0
  66. data/spec/rubocop/cop/rails/read_attribute_spec.rb +13 -0
  67. data/spec/rubocop/cop/rails/validation_spec.rb +21 -0
  68. data/spec/rubocop/cop/style/access_modifier_indentation_spec.rb +361 -0
  69. data/spec/rubocop/cop/style/accessor_method_name_spec.rb +81 -0
  70. data/spec/rubocop/cop/style/alias_spec.rb +59 -0
  71. data/spec/rubocop/cop/style/align_array_spec.rb +75 -0
  72. data/spec/rubocop/cop/style/align_hash_spec.rb +310 -0
  73. data/spec/rubocop/cop/style/align_parameters_spec.rb +222 -0
  74. data/spec/rubocop/cop/style/and_or_spec.rb +57 -0
  75. data/spec/rubocop/cop/style/ascii_comments_spec.rb +22 -0
  76. data/spec/rubocop/cop/style/ascii_identifiers_spec.rb +36 -0
  77. data/spec/rubocop/cop/style/attr_spec.rb +19 -0
  78. data/spec/rubocop/cop/style/begin_block_spec.rb +13 -0
  79. data/spec/rubocop/cop/style/block_comments_spec.rb +21 -0
  80. data/spec/rubocop/cop/style/block_nesting_spec.rb +156 -0
  81. data/spec/rubocop/cop/style/blocks_spec.rb +99 -0
  82. data/spec/rubocop/cop/style/braces_around_hash_parameters_spec.rb +284 -0
  83. data/spec/rubocop/cop/style/case_equality_spec.rb +12 -0
  84. data/spec/rubocop/cop/style/case_indentation_spec.rb +289 -0
  85. data/spec/rubocop/cop/style/character_literal_spec.rb +37 -0
  86. data/spec/rubocop/cop/style/class_and_module_camel_case_spec.rb +40 -0
  87. data/spec/rubocop/cop/style/class_length_spec.rb +131 -0
  88. data/spec/rubocop/cop/style/class_methods_spec.rb +45 -0
  89. data/spec/rubocop/cop/style/class_vars_spec.rb +19 -0
  90. data/spec/rubocop/cop/style/collection_methods_spec.rb +48 -0
  91. data/spec/rubocop/cop/style/colon_method_call_spec.rb +60 -0
  92. data/spec/rubocop/cop/style/comment_annotation_spec.rb +86 -0
  93. data/spec/rubocop/cop/style/constant_name_spec.rb +65 -0
  94. data/spec/rubocop/cop/style/cyclomatic_complexity_spec.rb +204 -0
  95. data/spec/rubocop/cop/style/def_with_parentheses_spec.rb +39 -0
  96. data/spec/rubocop/cop/style/documentation_spec.rb +123 -0
  97. data/spec/rubocop/cop/style/dot_position_spec.rb +94 -0
  98. data/spec/rubocop/cop/style/empty_line_between_defs_spec.rb +127 -0
  99. data/spec/rubocop/cop/style/empty_lines_around_access_modifier_spec.rb +56 -0
  100. data/spec/rubocop/cop/style/empty_lines_around_body_spec.rb +131 -0
  101. data/spec/rubocop/cop/style/empty_lines_spec.rb +40 -0
  102. data/spec/rubocop/cop/style/empty_literal_spec.rb +100 -0
  103. data/spec/rubocop/cop/style/encoding_spec.rb +56 -0
  104. data/spec/rubocop/cop/style/end_block_spec.rb +13 -0
  105. data/spec/rubocop/cop/style/end_of_line_spec.rb +47 -0
  106. data/spec/rubocop/cop/style/even_odd_spec.rb +75 -0
  107. data/spec/rubocop/cop/style/favor_join_spec.rb +31 -0
  108. data/spec/rubocop/cop/style/favor_sprintf_spec.rb +47 -0
  109. data/spec/rubocop/cop/style/favor_unless_over_negated_if_spec.rb +76 -0
  110. data/spec/rubocop/cop/style/favor_until_over_negated_while_spec.rb +41 -0
  111. data/spec/rubocop/cop/style/final_newline_spec.rb +30 -0
  112. data/spec/rubocop/cop/style/flip_flop_spec.rb +23 -0
  113. data/spec/rubocop/cop/style/for_spec.rb +105 -0
  114. data/spec/rubocop/cop/style/global_vars_spec.rb +34 -0
  115. data/spec/rubocop/cop/style/hash_methods_spec.rb +45 -0
  116. data/spec/rubocop/cop/style/hash_syntax_spec.rb +131 -0
  117. data/spec/rubocop/cop/style/if_unless_modifier_spec.rb +128 -0
  118. data/spec/rubocop/cop/style/if_with_semicolon_spec.rb +19 -0
  119. data/spec/rubocop/cop/style/indentation_consistency_spec.rb +490 -0
  120. data/spec/rubocop/cop/style/indentation_width_spec.rb +470 -0
  121. data/spec/rubocop/cop/style/lambda_call_spec.rb +65 -0
  122. data/spec/rubocop/cop/style/lambda_spec.rb +41 -0
  123. data/spec/rubocop/cop/style/leading_comment_space_spec.rb +64 -0
  124. data/spec/rubocop/cop/style/line_end_concatenation_spec.rb +34 -0
  125. data/spec/rubocop/cop/style/line_length_spec.rb +20 -0
  126. data/spec/rubocop/cop/style/method_call_parentheses_spec.rb +59 -0
  127. data/spec/rubocop/cop/style/method_called_on_do_end_block_spec.rb +60 -0
  128. data/spec/rubocop/cop/style/method_def_parentheses_spec.rb +106 -0
  129. data/spec/rubocop/cop/style/method_length_spec.rb +147 -0
  130. data/spec/rubocop/cop/style/method_name_spec.rb +125 -0
  131. data/spec/rubocop/cop/style/module_function_spec.rb +24 -0
  132. data/spec/rubocop/cop/style/multiline_block_chain_spec.rb +78 -0
  133. data/spec/rubocop/cop/style/multiline_if_then_spec.rb +107 -0
  134. data/spec/rubocop/cop/style/multiline_ternary_operator_spec.rb +18 -0
  135. data/spec/rubocop/cop/style/nested_ternary_operator_spec.rb +21 -0
  136. data/spec/rubocop/cop/style/nil_comparison_spec.rb +30 -0
  137. data/spec/rubocop/cop/style/not_spec.rb +22 -0
  138. data/spec/rubocop/cop/style/numeric_literals_spec.rb +64 -0
  139. data/spec/rubocop/cop/style/one_line_conditional_spec.rb +13 -0
  140. data/spec/rubocop/cop/style/op_method_spec.rb +74 -0
  141. data/spec/rubocop/cop/style/parameter_lists_spec.rb +44 -0
  142. data/spec/rubocop/cop/style/parentheses_around_condition_spec.rb +122 -0
  143. data/spec/rubocop/cop/style/perl_backrefs_spec.rb +17 -0
  144. data/spec/rubocop/cop/style/predicate_name_spec.rb +25 -0
  145. data/spec/rubocop/cop/style/proc_spec.rb +27 -0
  146. data/spec/rubocop/cop/style/raise_args_spec.rb +82 -0
  147. data/spec/rubocop/cop/style/redundant_begin_spec.rb +57 -0
  148. data/spec/rubocop/cop/style/redundant_exception_spec.rb +27 -0
  149. data/spec/rubocop/cop/style/redundant_return_spec.rb +171 -0
  150. data/spec/rubocop/cop/style/redundant_self_spec.rb +142 -0
  151. data/spec/rubocop/cop/style/regexp_literal_spec.rb +83 -0
  152. data/spec/rubocop/cop/style/rescue_modifier_spec.rb +116 -0
  153. data/spec/rubocop/cop/style/semicolon_spec.rb +100 -0
  154. data/spec/rubocop/cop/style/signal_exception_spec.rb +266 -0
  155. data/spec/rubocop/cop/style/single_line_block_params_spec.rb +68 -0
  156. data/spec/rubocop/cop/style/single_line_methods_spec.rb +52 -0
  157. data/spec/rubocop/cop/style/space_after_colon_spec.rb +38 -0
  158. data/spec/rubocop/cop/style/space_after_comma_spec.rb +30 -0
  159. data/spec/rubocop/cop/style/space_after_control_keyword_spec.rb +84 -0
  160. data/spec/rubocop/cop/style/space_after_method_name_spec.rb +70 -0
  161. data/spec/rubocop/cop/style/space_after_not_spec.rb +22 -0
  162. data/spec/rubocop/cop/style/space_after_semicolon_spec.rb +23 -0
  163. data/spec/rubocop/cop/style/space_around_block_braces_spec.rb +283 -0
  164. data/spec/rubocop/cop/style/space_around_equals_in_parameter_default_spec.rb +33 -0
  165. data/spec/rubocop/cop/style/space_around_operators_spec.rb +325 -0
  166. data/spec/rubocop/cop/style/space_before_modifier_keyword_spec.rb +70 -0
  167. data/spec/rubocop/cop/style/space_inside_brackets_spec.rb +52 -0
  168. data/spec/rubocop/cop/style/space_inside_hash_literal_braces_spec.rb +138 -0
  169. data/spec/rubocop/cop/style/space_inside_parens_spec.rb +34 -0
  170. data/spec/rubocop/cop/style/special_global_vars_spec.rb +56 -0
  171. data/spec/rubocop/cop/style/string_literals_spec.rb +212 -0
  172. data/spec/rubocop/cop/style/symbol_array_spec.rb +37 -0
  173. data/spec/rubocop/cop/style/tab_spec.rb +17 -0
  174. data/spec/rubocop/cop/style/trailing_blank_lines_spec.rb +43 -0
  175. data/spec/rubocop/cop/style/trailing_comma_spec.rb +230 -0
  176. data/spec/rubocop/cop/style/trailing_whitespace_spec.rb +30 -0
  177. data/spec/rubocop/cop/style/trivial_accessors_spec.rb +415 -0
  178. data/spec/rubocop/cop/style/unless_else_spec.rb +25 -0
  179. data/spec/rubocop/cop/style/variable_interpolation_spec.rb +47 -0
  180. data/spec/rubocop/cop/style/variable_name_spec.rb +107 -0
  181. data/spec/rubocop/cop/style/when_then_spec.rb +41 -0
  182. data/spec/rubocop/cop/style/while_until_do_spec.rb +53 -0
  183. data/spec/rubocop/cop/style/while_until_modifier_spec.rb +75 -0
  184. data/spec/rubocop/cop/style/word_array_spec.rb +97 -0
  185. data/spec/rubocop/cop/team_spec.rb +156 -0
  186. data/spec/rubocop/cop/util_spec.rb +49 -0
  187. data/spec/rubocop/cop/variable_inspector/assignment_spec.rb +213 -0
  188. data/spec/rubocop/cop/variable_inspector/locatable_spec.rb +734 -0
  189. data/spec/rubocop/cop/variable_inspector/scope_spec.rb +184 -0
  190. data/spec/rubocop/cop/variable_inspector/variable_spec.rb +73 -0
  191. data/spec/rubocop/cop/variable_inspector/variable_table_spec.rb +269 -0
  192. data/spec/rubocop/cop/variable_inspector_spec.rb +29 -0
  193. data/spec/rubocop/file_inspector_spec.rb +78 -0
  194. data/spec/rubocop/formatter/base_formatter_spec.rb +191 -0
  195. data/spec/rubocop/formatter/clang_style_formatter_spec.rb +114 -0
  196. data/spec/rubocop/formatter/colorizable_spec.rb +107 -0
  197. data/spec/rubocop/formatter/disabled_config_formatter_spec.rb +50 -0
  198. data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +62 -0
  199. data/spec/rubocop/formatter/file_list_formatter_spec.rb +33 -0
  200. data/spec/rubocop/formatter/formatter_set_spec.rb +132 -0
  201. data/spec/rubocop/formatter/json_formatter_spec.rb +148 -0
  202. data/spec/rubocop/formatter/offence_count_formatter_spec.rb +52 -0
  203. data/spec/rubocop/formatter/progress_formatter_spec.rb +182 -0
  204. data/spec/rubocop/formatter/simple_text_formatter_spec.rb +123 -0
  205. data/spec/rubocop/options_spec.rb +145 -0
  206. data/spec/rubocop/path_util_spec.rb +42 -0
  207. data/spec/rubocop/processed_source_spec.rb +114 -0
  208. data/spec/rubocop/source_parser_spec.rb +139 -0
  209. data/spec/rubocop/target_finder_spec.rb +180 -0
  210. data/spec/rubocop/token_spec.rb +25 -0
  211. data/spec/spec_helper.rb +136 -0
  212. data/spec/support/ast_helper.rb +15 -0
  213. data/spec/support/file_helper.rb +21 -0
  214. data/spec/support/isolated_environment.rb +34 -0
  215. data/spec/support/mri_syntax_checker.rb +73 -0
  216. data/spec/support/shared_context.rb +22 -0
  217. data/spec/support/shared_examples.rb +33 -0
  218. data/spec/support/statement_modifier_helper.rb +41 -0
  219. metadata +511 -0
@@ -0,0 +1,24 @@
1
+ AllCops:
2
+ Excludes:
3
+ - vendor/**
4
+
5
+ # Offence count: 4
6
+ BlockNesting:
7
+ Max: 5
8
+
9
+ # Offence count: 12
10
+ # Configuration parameters: CountComments.
11
+ ClassLength:
12
+ Max: 2721
13
+
14
+
15
+ # Offence count: 30
16
+ CyclomaticComplexity:
17
+ Max: 56
18
+
19
+
20
+ # Offence count: 54
21
+ # Configuration parameters: CountComments.
22
+ MethodLength:
23
+ Max: 327
24
+
@@ -0,0 +1,15 @@
1
+ # Decision: Don't use tabs for indentation.
2
+ # Rationale: Because actual tab characters cause different editors and
3
+ # code viewers to align the code differently, reducing readability.
4
+ # Workflow:
5
+ # In Emacs:
6
+ # ;;; (require 'ruby-mode) ;; is needed for this setting
7
+ # (setq indent-tabs-mode nil) ; always replace tabs with spaces
8
+ # In Sublime Text:
9
+ # Should be set automatically via ruby-mode.
10
+ # In Vim:
11
+ # autocmd FileType ruby setlocal expandtab shiftwidth=4 softtabstop=4
12
+
13
+
14
+ Tab:
15
+ Enabled: true
@@ -0,0 +1,195 @@
1
+ # This configuration was generated by `rubocop --auto-gen-config`.
2
+ # The point is for the user to remove these configuration records
3
+ # one by one as the offences are removed from the code base.
4
+
5
+ AccessModifierIndentation:
6
+ Enabled: false
7
+
8
+ AccessorMethodName:
9
+ Enabled: false
10
+
11
+ AlignArray:
12
+ Enabled: false
13
+
14
+ AlignHash:
15
+ Enabled: false
16
+
17
+ AlignParameters:
18
+ Enabled: false
19
+
20
+ AndOr:
21
+ Enabled: false
22
+
23
+ BlockNesting:
24
+ Max: 4
25
+
26
+ BracesAroundHashParameters:
27
+ Enabled: false
28
+
29
+ CaseIndentation:
30
+ Enabled: false
31
+
32
+ ClassLength:
33
+ Max: 142
34
+
35
+ ClassVars:
36
+ Enabled: false
37
+
38
+ CommentAnnotation:
39
+ Enabled: false
40
+
41
+ ConstantName:
42
+ Enabled: false
43
+
44
+ CyclomaticComplexity:
45
+ Max: 16
46
+
47
+ Documentation:
48
+ Enabled: false
49
+
50
+ DotPosition:
51
+ Enabled: false
52
+
53
+ EmptyLines:
54
+ Enabled: false
55
+
56
+ EmptyLinesAroundAccessModifier:
57
+ Enabled: false
58
+
59
+ EmptyLinesAroundBody:
60
+ Enabled: false
61
+
62
+ EmptyLiteral:
63
+ Enabled: false
64
+
65
+ Encoding:
66
+ Enabled: false
67
+
68
+ EndAlignment:
69
+ Enabled: false
70
+
71
+ FinalNewline:
72
+ Enabled: false
73
+
74
+ GlobalVars:
75
+ Enabled: false
76
+
77
+ HashMethods:
78
+ Enabled: false
79
+
80
+ HashSyntax:
81
+ Enabled: false
82
+
83
+ IfUnlessModifier:
84
+ Enabled: false
85
+
86
+ IndentationWidth:
87
+ Enabled: false
88
+
89
+ Lambda:
90
+ Enabled: false
91
+
92
+ LeadingCommentSpace:
93
+ Enabled: false
94
+
95
+ LineLength:
96
+ Max: 11108
97
+
98
+ MethodCallParentheses:
99
+ Enabled: false
100
+
101
+ MethodLength:
102
+ Max: 77
103
+
104
+ MultilineTernaryOperator:
105
+ Enabled: false
106
+
107
+ NumericLiterals:
108
+ Enabled: false
109
+
110
+ Output:
111
+ Enabled: false
112
+
113
+ ParenthesesAroundCondition:
114
+ Enabled: false
115
+
116
+ ParenthesesAsGroupedExpression:
117
+ Enabled: false
118
+
119
+ PredicateName:
120
+ Enabled: false
121
+
122
+ Proc:
123
+ Enabled: false
124
+
125
+ RaiseArgs:
126
+ Enabled: false
127
+
128
+ RedundantReturn:
129
+ Enabled: false
130
+
131
+ RedundantSelf:
132
+ Enabled: false
133
+
134
+ RegexpLiteral:
135
+ Enabled: false
136
+
137
+ RescueException:
138
+ Enabled: false
139
+
140
+ Semicolon:
141
+ Enabled: false
142
+
143
+ SignalException:
144
+ Enabled: false
145
+
146
+ SpaceAfterColon:
147
+ Enabled: false
148
+
149
+ SpaceAfterComma:
150
+ Enabled: false
151
+
152
+ SpaceAroundBlockBraces:
153
+ Enabled: false
154
+
155
+ SpaceAroundEqualsInParameterDefault:
156
+ Enabled: false
157
+
158
+ SpaceAroundOperators:
159
+ Enabled: false
160
+
161
+ SpaceInsideBrackets:
162
+ Enabled: false
163
+
164
+ SpaceInsideHashLiteralBraces:
165
+ Enabled: false
166
+
167
+ SpaceInsideParens:
168
+ Enabled: false
169
+
170
+ SpecialGlobalVars:
171
+ Enabled: false
172
+
173
+ StringLiterals:
174
+ Enabled: false
175
+
176
+ TrailingBlankLines:
177
+ Enabled: false
178
+
179
+ TrailingWhitespace:
180
+ Enabled: false
181
+
182
+ TrivialAccessors:
183
+ Enabled: false
184
+
185
+ UselessAssignment:
186
+ Enabled: false
187
+
188
+ Validation:
189
+ Enabled: false
190
+
191
+ Void:
192
+ Enabled: false
193
+
194
+ WordArray:
195
+ Enabled: false
@@ -0,0 +1,2 @@
1
+ require "ridecharge/rubocop/version"
2
+ require 'rubocop/ridecharge'
@@ -0,0 +1,5 @@
1
+ module Ridecharge
2
+ module Rubocop
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,117 @@
1
+ require 'rubocop'
2
+ module Rubocop
3
+ class ConfigLoader
4
+ RIDECHARGE_RUBOCOP_HOME = File.realpath(File.join(File.dirname(__FILE__), '..', '..'))
5
+ DEFAULT_RIDECHARGE_FILE= File.join(RIDECHARGE_RUBOCOP_HOME, 'config', '0default.yml')
6
+
7
+ # https://github.com/bbatsov/rubocop/blob/ff167d8f202baf7a68955db0aaf0dc29afb7e7ee/lib/rubocop/config_loader.rb#L88
8
+ =begin
9
+ def configuration_file_for(target_dir)
10
+ config_files_in_path(target_dir).first || DEFAULT_FILE
11
+ end
12
+
13
+ def configuration_from_file(config_file)
14
+ config = load_file(config_file)
15
+ return config if config_file == DEFAULT_FILE
16
+
17
+ found_files = config_files_in_path(config_file)
18
+ if found_files.any? && found_files.last != config_file
19
+ print 'AllCops/Excludes ' if debug?
20
+ add_excludes_from_higher_level(config, load_file(found_files.last))
21
+ end
22
+ make_excludes_absolute(config)
23
+ merge_with_default(config, config_file)
24
+ end
25
+ def default_configuration
26
+ @default_configuration ||= begin
27
+ print 'Default ' if debug?
28
+ load_file(DEFAULT_FILE)
29
+ end
30
+ end
31
+ =end
32
+ class << self
33
+ def configuration_file_for(target_dir)
34
+ config_files_in_path(target_dir).first || DEFAULT_RIDECHARGE_FILE
35
+ end
36
+ def configuration_from_file(config_file)
37
+ config = load_file(config_file)
38
+ return config if config_file == DEFAULT_RIDECHARGE_FILE
39
+
40
+ found_files = config_files_in_path(config_file)
41
+ if found_files.any? && found_files.last != config_file
42
+ print 'AllCops/Excludes ' if debug?
43
+ add_excludes_from_higher_level(config, load_file(found_files.last))
44
+ end
45
+ make_excludes_absolute(config)
46
+ merge_with_default(config, config_file)
47
+ end
48
+ def default_configuration
49
+ @default_configuration ||= begin
50
+ print 'Ridecharge Default ' if debug?
51
+ load_file(DEFAULT_RIDECHARGE_FILE)
52
+ end
53
+ end
54
+ end
55
+ end
56
+ class Config
57
+ #https://github.com/bbatsov/rubocop/blob/v0.18.1/lib/rubocop/config.rb#L41
58
+ =begin
59
+ # TODO: This should be a private method
60
+ def validate
61
+ # Don't validate RuboCop's own files. Avoids inifinite
62
+ # recursion.
63
+ return if @loaded_path.start_with?(ConfigLoader::RUBOCOP_HOME)
64
+
65
+ default_config = ConfigLoader.default_configuration
66
+
67
+ valid_cop_names, invalid_cop_names = @hash.keys.partition do |key|
68
+ default_config.key?(key)
69
+ end
70
+
71
+ invalid_cop_names.each do |name|
72
+ fail ValidationError,
73
+ "unrecognized cop #{name} found in #{loaded_path || self}"
74
+ end
75
+
76
+ valid_cop_names.each do |name|
77
+ @hash[name].each_key do |param|
78
+ unless COMMON_PARAMS.include?(param) ||
79
+ default_config[name].key?(param)
80
+ fail ValidationError,
81
+ "unrecognized parameter #{name}:#{param} found " +
82
+ "in #{loaded_path || self}"
83
+ end
84
+ end
85
+ end
86
+ end
87
+ =end
88
+
89
+ def validate
90
+ # Don't validate RuboCop's own files. Avoids inifinite
91
+ # recursion.
92
+ return if @loaded_path.start_with?(ConfigLoader::RIDECHARGE_RUBOCOP_HOME)
93
+
94
+ default_config = ConfigLoader.default_configuration
95
+
96
+ valid_cop_names, invalid_cop_names = @hash.keys.partition do |key|
97
+ default_config.key?(key)
98
+ end
99
+
100
+ invalid_cop_names.each do |name|
101
+ fail ValidationError,
102
+ "unrecognized cop #{name} found in #{loaded_path || self}"
103
+ end
104
+
105
+ valid_cop_names.each do |name|
106
+ @hash[name].each_key do |param|
107
+ unless COMMON_PARAMS.include?(param) ||
108
+ default_config[name].key?(param)
109
+ fail ValidationError,
110
+ "unrecognized parameter #{name}:#{param} found in #{loaded_path || self}"
111
+ end
112
+ end
113
+ end
114
+ end
115
+
116
+ end
117
+ end
@@ -0,0 +1 @@
1
+ require 'rubocop/config_loader_monkeypatch'
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ridecharge/rubocop/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ridecharge-rubocop"
8
+ spec.version = Ridecharge::Rubocop::VERSION
9
+ spec.authors = ["Tim Snowhite"]
10
+ spec.email = ["tsnowhite@taximagic.com"]
11
+ spec.summary = %q{Ridecharge Rubocop configuration}
12
+ spec.description = %q{our special blend of crazy}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "rubocop", "0.18.1"
22
+ spec.add_development_dependency "bundler", "~> 1.6"
23
+ spec.add_development_dependency "rake"
24
+ spec.add_development_dependency('rspec', '~> 2.14')
25
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe 'isolated environment', :isolated_environment do
6
+ include FileHelper
7
+
8
+ let(:cli) { Rubocop::CLI.new }
9
+
10
+ before(:each) { $stdout = StringIO.new }
11
+ after(:each) { $stdout = STDOUT }
12
+
13
+ # Configuration files above the work directory shall not disturb the
14
+ # tests. This is especially important on Windows where the temporary
15
+ # directory is under the user's home directory. On any platform we don't want
16
+ # a .rubocop.yml file in the temporary directory to affect the outcome of
17
+ # rspec.
18
+ it 'is not affected by a config file above the work directory' do
19
+ create_file('../.rubocop.yml', ['inherit_from: missing_file.yml'])
20
+ create_file('ex.rb', ['# encoding: utf-8'])
21
+ # A return value of 0 means that the erroneous config file was not read.
22
+ expect(cli.run([])).to eq(0)
23
+ end
24
+ end
@@ -0,0 +1,118 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ describe 'RuboCop Project' do
6
+ describe 'default configuration file' do
7
+ let(:cop_names) { Rubocop::Cop::Cop.all.map(&:cop_name) }
8
+
9
+ subject(:default_config) do
10
+ Rubocop::ConfigLoader.load_file('config/0default.yml')
11
+ end
12
+
13
+ it 'has configuration for all cops' do
14
+ expect(default_config.keys.sort).to eq((['AllCops'] + cop_names).sort)
15
+ end
16
+
17
+ it 'has a nicely formatted description for all cops' do
18
+ cop_names.each do |name|
19
+ description = default_config[name]['Description']
20
+ expect(description).not_to be_nil
21
+ expect(description).not_to include("\n")
22
+ end
23
+ end
24
+ end
25
+
26
+ describe 'changelog' do
27
+ subject(:changelog) do
28
+ path = File.join(File.dirname(__FILE__), '..', 'CHANGELOG.md')
29
+ File.read(path)
30
+ end
31
+
32
+ it 'has link definitions for all implicit links' do
33
+ implicit_link_names = changelog.scan(/\[([^\]]+)\]\[\]/).flatten.uniq
34
+ implicit_link_names.each do |name|
35
+ expect(changelog).to include("[#{name}]: http")
36
+ end
37
+ end
38
+
39
+ describe 'entry' do
40
+ subject(:entries) { lines.grep(/^\*/).map(&:chomp) }
41
+ let(:lines) { changelog.each_line }
42
+
43
+ it 'has a whitespace between the * and the body' do
44
+ entries.each do |entry|
45
+ expect(entry).to match(/^\* \S/)
46
+ end
47
+ end
48
+
49
+ context 'after version 0.14.0' do
50
+ let(:lines) do
51
+ changelog.each_line.take_while do |line|
52
+ !line.start_with?('## 0.14.0')
53
+ end
54
+ end
55
+
56
+ it 'has a link to the contributors at the end' do
57
+ entries.each do |entry|
58
+ expect(entry).to match(/\(\[@\S+\]\[\](?:, \[@\S+\]\[\])*\)$/)
59
+ end
60
+ end
61
+ end
62
+
63
+ describe 'link to related issue' do
64
+ let(:issues) do
65
+ entries.map do |entry|
66
+ entry.match(/\[(?<number>[#\d]+)\]\((?<url>[^\)]+)\)/)
67
+ end.compact
68
+ end
69
+
70
+ it 'has an issue number prefixed with #' do
71
+ issues.each do |issue|
72
+ expect(issue[:number]).to match(/^#\d+$/)
73
+ end
74
+ end
75
+
76
+ it 'has a valid URL' do
77
+ issues.each do |issue|
78
+ number = issue[:number].gsub(/\D/, '')
79
+ pattern = %r{^https://github\.com/bbatsov/rubocop/(?:issues|pull)/#{number}$} # rubocop:disable LineLength
80
+ expect(issue[:url]).to match(pattern)
81
+ end
82
+ end
83
+
84
+ it 'has a colon and a whitespace at the end' do
85
+ entries_including_issue_link = entries.select do |entry|
86
+ entry.match(/^\*\s*\[/)
87
+ end
88
+
89
+ entries_including_issue_link.each do |entry|
90
+ expect(entry).to include('): ')
91
+ end
92
+ end
93
+ end
94
+
95
+ describe 'body' do
96
+ let(:bodies) do
97
+ entries.map do |entry|
98
+ entry
99
+ .sub(/^\*\s*(?:\[.+?\):\s*)?/, '')
100
+ .sub(/\s*\([^\)]+\)$/, '')
101
+ end
102
+ end
103
+
104
+ it 'does not start with a lower case' do
105
+ bodies.each do |body|
106
+ expect(body).not_to match(/^[a-z]/)
107
+ end
108
+ end
109
+
110
+ it 'ends with a punctuation' do
111
+ bodies.each do |body|
112
+ expect(body).to match(/[\.\!]$/)
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end