sabat-rubocop 0.9.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.
- data/.gitignore +50 -0
- data/.rspec +1 -0
- data/.rubocop.yml +7 -0
- data/.travis.yml +7 -0
- data/.yardopts +2 -0
- data/CHANGELOG.md +268 -0
- data/CONTRIBUTING.md +16 -0
- data/Gemfile +7 -0
- data/LICENSE.txt +20 -0
- data/README.md +324 -0
- data/Rakefile +29 -0
- data/bin/rubocop +22 -0
- data/config/default.yml +58 -0
- data/config/disabled.yml +5 -0
- data/config/enabled.yml +403 -0
- data/lib/rubocop.rb +116 -0
- data/lib/rubocop/cli.rb +407 -0
- data/lib/rubocop/config.rb +250 -0
- data/lib/rubocop/config_store.rb +39 -0
- data/lib/rubocop/cop/cop.rb +138 -0
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +54 -0
- data/lib/rubocop/cop/lint/end_alignment.rb +189 -0
- data/lib/rubocop/cop/lint/end_in_method.rb +30 -0
- data/lib/rubocop/cop/lint/ensure_return.rb +22 -0
- data/lib/rubocop/cop/lint/eval.rb +22 -0
- data/lib/rubocop/cop/lint/handle_exceptions.rb +20 -0
- data/lib/rubocop/cop/lint/literal_in_condition.rb +81 -0
- data/lib/rubocop/cop/lint/loop.rb +29 -0
- data/lib/rubocop/cop/lint/rescue_exception.rb +29 -0
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +34 -0
- data/lib/rubocop/cop/lint/unreachable_code.rb +35 -0
- data/lib/rubocop/cop/lint/unused_local_variable.rb +32 -0
- data/lib/rubocop/cop/lint/void.rb +58 -0
- data/lib/rubocop/cop/offence.rb +136 -0
- data/lib/rubocop/cop/rails/validation.rb +30 -0
- data/lib/rubocop/cop/style/access_control.rb +58 -0
- data/lib/rubocop/cop/style/alias.rb +28 -0
- data/lib/rubocop/cop/style/align_parameters.rb +39 -0
- data/lib/rubocop/cop/style/and_or.rb +45 -0
- data/lib/rubocop/cop/style/ascii_comments.rb +21 -0
- data/lib/rubocop/cop/style/ascii_identifiers.rb +22 -0
- data/lib/rubocop/cop/style/attr.rb +20 -0
- data/lib/rubocop/cop/style/avoid_class_vars.rb +20 -0
- data/lib/rubocop/cop/style/avoid_for.rb +18 -0
- data/lib/rubocop/cop/style/avoid_global_vars.rb +65 -0
- data/lib/rubocop/cop/style/avoid_perl_backrefs.rb +21 -0
- data/lib/rubocop/cop/style/avoid_perlisms.rb +50 -0
- data/lib/rubocop/cop/style/begin_block.rb +18 -0
- data/lib/rubocop/cop/style/block_comments.rb +20 -0
- data/lib/rubocop/cop/style/block_nesting.rb +47 -0
- data/lib/rubocop/cop/style/blocks.rb +27 -0
- data/lib/rubocop/cop/style/case_equality.rb +22 -0
- data/lib/rubocop/cop/style/case_indentation.rb +28 -0
- data/lib/rubocop/cop/style/character_literal.rb +37 -0
- data/lib/rubocop/cop/style/class_and_module_camel_case.rb +33 -0
- data/lib/rubocop/cop/style/class_methods.rb +22 -0
- data/lib/rubocop/cop/style/collection_methods.rb +56 -0
- data/lib/rubocop/cop/style/colon_method_call.rb +29 -0
- data/lib/rubocop/cop/style/constant_name.rb +31 -0
- data/lib/rubocop/cop/style/def_parentheses.rb +70 -0
- data/lib/rubocop/cop/style/documentation.rb +58 -0
- data/lib/rubocop/cop/style/dot_position.rb +25 -0
- data/lib/rubocop/cop/style/empty_line_between_defs.rb +26 -0
- data/lib/rubocop/cop/style/empty_lines.rb +40 -0
- data/lib/rubocop/cop/style/empty_literal.rb +53 -0
- data/lib/rubocop/cop/style/encoding.rb +29 -0
- data/lib/rubocop/cop/style/end_block.rb +18 -0
- data/lib/rubocop/cop/style/end_of_line.rb +23 -0
- data/lib/rubocop/cop/style/favor_join.rb +29 -0
- data/lib/rubocop/cop/style/favor_modifier.rb +118 -0
- data/lib/rubocop/cop/style/favor_sprintf.rb +28 -0
- data/lib/rubocop/cop/style/favor_unless_over_negated_if.rb +54 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +47 -0
- data/lib/rubocop/cop/style/if_then_else.rb +29 -0
- data/lib/rubocop/cop/style/if_with_semicolon.rb +20 -0
- data/lib/rubocop/cop/style/lambda.rb +47 -0
- data/lib/rubocop/cop/style/leading_comment_space.rb +25 -0
- data/lib/rubocop/cop/style/line_continuation.rb +26 -0
- data/lib/rubocop/cop/style/line_length.rb +30 -0
- data/lib/rubocop/cop/style/method_and_variable_snake_case.rb +61 -0
- data/lib/rubocop/cop/style/method_call_parentheses.rb +22 -0
- data/lib/rubocop/cop/style/method_length.rb +57 -0
- data/lib/rubocop/cop/style/multiline_if_then.rb +47 -0
- data/lib/rubocop/cop/style/not.rb +24 -0
- data/lib/rubocop/cop/style/numeric_literals.rb +25 -0
- data/lib/rubocop/cop/style/one_line_conditional.rb +20 -0
- data/lib/rubocop/cop/style/op_method.rb +29 -0
- data/lib/rubocop/cop/style/parameter_lists.rb +42 -0
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +42 -0
- data/lib/rubocop/cop/style/proc.rb +30 -0
- data/lib/rubocop/cop/style/reduce_arguments.rb +34 -0
- data/lib/rubocop/cop/style/regexp_literal.rb +39 -0
- data/lib/rubocop/cop/style/rescue_modifier.rb +55 -0
- data/lib/rubocop/cop/style/semicolon.rb +51 -0
- data/lib/rubocop/cop/style/single_line_methods.rb +48 -0
- data/lib/rubocop/cop/style/space_after_comma_etc.rb +69 -0
- data/lib/rubocop/cop/style/space_after_control_keyword.rb +32 -0
- data/lib/rubocop/cop/style/string_literals.rb +36 -0
- data/lib/rubocop/cop/style/surrounding_space.rb +314 -0
- data/lib/rubocop/cop/style/symbol_array.rb +31 -0
- data/lib/rubocop/cop/style/symbol_name.rb +27 -0
- data/lib/rubocop/cop/style/tab.rb +25 -0
- data/lib/rubocop/cop/style/ternary_operator.rb +49 -0
- data/lib/rubocop/cop/style/trailing_whitespace.rb +24 -0
- data/lib/rubocop/cop/style/trivial_accessors.rb +32 -0
- data/lib/rubocop/cop/style/unless_else.rb +26 -0
- data/lib/rubocop/cop/style/variable_interpolation.rb +32 -0
- data/lib/rubocop/cop/style/when_then.rb +25 -0
- data/lib/rubocop/cop/style/while_until_do.rb +45 -0
- data/lib/rubocop/cop/style/word_array.rb +44 -0
- data/lib/rubocop/cop/util.rb +27 -0
- data/lib/rubocop/cop/variable_inspector.rb +280 -0
- data/lib/rubocop/formatter/base_formatter.rb +119 -0
- data/lib/rubocop/formatter/clang_style_formatter.rb +21 -0
- data/lib/rubocop/formatter/emacs_style_formatter.rb +17 -0
- data/lib/rubocop/formatter/formatter_set.rb +77 -0
- data/lib/rubocop/formatter/json_formatter.rb +76 -0
- data/lib/rubocop/formatter/progress_formatter.rb +63 -0
- data/lib/rubocop/formatter/simple_text_formatter.rb +62 -0
- data/lib/rubocop/version.rb +21 -0
- data/rubocop.gemspec +36 -0
- data/spec/.rubocop.yml +5 -0
- data/spec/project_spec.rb +24 -0
- data/spec/rubocop/cli_spec.rb +906 -0
- data/spec/rubocop/config_spec.rb +470 -0
- data/spec/rubocop/config_store_spec.rb +66 -0
- data/spec/rubocop/cops/cop_spec.rb +38 -0
- data/spec/rubocop/cops/lint/assignment_in_condition_spec.rb +111 -0
- data/spec/rubocop/cops/lint/end_alignment_spec.rb +333 -0
- data/spec/rubocop/cops/lint/end_in_method_spec.rb +35 -0
- data/spec/rubocop/cops/lint/ensure_return_spec.rb +37 -0
- data/spec/rubocop/cops/lint/eval_spec.rb +41 -0
- data/spec/rubocop/cops/lint/handle_exceptions_spec.rb +36 -0
- data/spec/rubocop/cops/lint/literal_in_condition_spec.rb +42 -0
- data/spec/rubocop/cops/lint/loop_spec.rb +33 -0
- data/spec/rubocop/cops/lint/rescue_exception_spec.rb +127 -0
- data/spec/rubocop/cops/lint/shadowing_outer_local_variable_spec.rb +243 -0
- data/spec/rubocop/cops/lint/unreachable_code_spec.rb +69 -0
- data/spec/rubocop/cops/lint/unused_local_variable_spec.rb +497 -0
- data/spec/rubocop/cops/lint/void_spec.rb +63 -0
- data/spec/rubocop/cops/offence_spec.rb +133 -0
- data/spec/rubocop/cops/rails/validation_spec.rb +27 -0
- data/spec/rubocop/cops/style/access_control_spec.rb +142 -0
- data/spec/rubocop/cops/style/alias_spec.rb +47 -0
- data/spec/rubocop/cops/style/align_parameters_spec.rb +199 -0
- data/spec/rubocop/cops/style/and_or_spec.rb +39 -0
- data/spec/rubocop/cops/style/ascii_comments_spec.rb +28 -0
- data/spec/rubocop/cops/style/ascii_identifiers_spec.rb +28 -0
- data/spec/rubocop/cops/style/attr_spec.rb +20 -0
- data/spec/rubocop/cops/style/avoid_class_vars_spec.rb +27 -0
- data/spec/rubocop/cops/style/avoid_for_spec.rb +37 -0
- data/spec/rubocop/cops/style/avoid_global_vars_spec.rb +34 -0
- data/spec/rubocop/cops/style/avoid_perl_backrefs_spec.rb +20 -0
- data/spec/rubocop/cops/style/avoid_perlisms_spec.rb +47 -0
- data/spec/rubocop/cops/style/begin_block_spec.rb +19 -0
- data/spec/rubocop/cops/style/block_comments_spec.rb +27 -0
- data/spec/rubocop/cops/style/block_nesting_spec.rb +159 -0
- data/spec/rubocop/cops/style/blocks_spec.rb +35 -0
- data/spec/rubocop/cops/style/case_equality_spec.rb +18 -0
- data/spec/rubocop/cops/style/case_indentation_spec.rb +88 -0
- data/spec/rubocop/cops/style/character_literal_spec.rb +28 -0
- data/spec/rubocop/cops/style/class_and_module_camel_case_spec.rb +46 -0
- data/spec/rubocop/cops/style/class_methods_spec.rb +51 -0
- data/spec/rubocop/cops/style/collection_methods_spec.rb +41 -0
- data/spec/rubocop/cops/style/colon_method_call_spec.rb +55 -0
- data/spec/rubocop/cops/style/constant_name_spec.rb +56 -0
- data/spec/rubocop/cops/style/def_with_parentheses_spec.rb +40 -0
- data/spec/rubocop/cops/style/def_without_parentheses_spec.rb +34 -0
- data/spec/rubocop/cops/style/documentation_spec.rb +79 -0
- data/spec/rubocop/cops/style/dot_position_spec.rb +30 -0
- data/spec/rubocop/cops/style/empty_line_between_defs_spec.rb +85 -0
- data/spec/rubocop/cops/style/empty_lines_spec.rb +40 -0
- data/spec/rubocop/cops/style/empty_literal_spec.rb +91 -0
- data/spec/rubocop/cops/style/encoding_spec.rb +49 -0
- data/spec/rubocop/cops/style/end_block_spec.rb +19 -0
- data/spec/rubocop/cops/style/end_of_line_spec.rb +25 -0
- data/spec/rubocop/cops/style/favor_join_spec.rb +37 -0
- data/spec/rubocop/cops/style/favor_modifier_spec.rb +160 -0
- data/spec/rubocop/cops/style/favor_sprintf_spec.rb +53 -0
- data/spec/rubocop/cops/style/favor_unless_over_negated_if_spec.rb +64 -0
- data/spec/rubocop/cops/style/favor_until_over_negated_while_spec.rb +47 -0
- data/spec/rubocop/cops/style/hash_syntax_spec.rb +51 -0
- data/spec/rubocop/cops/style/if_with_semicolon_spec.rb +25 -0
- data/spec/rubocop/cops/style/lambda_spec.rb +45 -0
- data/spec/rubocop/cops/style/leading_comment_space_spec.rb +65 -0
- data/spec/rubocop/cops/style/line_continuation_spec.rb +26 -0
- data/spec/rubocop/cops/style/line_length_spec.rb +25 -0
- data/spec/rubocop/cops/style/method_and_variable_snake_case_spec.rb +95 -0
- data/spec/rubocop/cops/style/method_call_parentheses_spec.rb +25 -0
- data/spec/rubocop/cops/style/method_length_spec.rb +151 -0
- data/spec/rubocop/cops/style/multiline_if_then_spec.rb +97 -0
- data/spec/rubocop/cops/style/not_spec.rb +28 -0
- data/spec/rubocop/cops/style/numeric_literals_spec.rb +51 -0
- data/spec/rubocop/cops/style/one_line_conditional_spec.rb +18 -0
- data/spec/rubocop/cops/style/op_method_spec.rb +80 -0
- data/spec/rubocop/cops/style/parameter_lists_spec.rb +49 -0
- data/spec/rubocop/cops/style/parentheses_around_condition_spec.rb +59 -0
- data/spec/rubocop/cops/style/proc_spec.rb +28 -0
- data/spec/rubocop/cops/style/reduce_arguments_spec.rb +59 -0
- data/spec/rubocop/cops/style/regexp_literal_spec.rb +83 -0
- data/spec/rubocop/cops/style/rescue_modifier_spec.rb +122 -0
- data/spec/rubocop/cops/style/semicolon_spec.rb +95 -0
- data/spec/rubocop/cops/style/single_line_methods_spec.rb +54 -0
- data/spec/rubocop/cops/style/space_after_colon_spec.rb +29 -0
- data/spec/rubocop/cops/style/space_after_comma_spec.rb +31 -0
- data/spec/rubocop/cops/style/space_after_control_keyword_spec.rb +69 -0
- data/spec/rubocop/cops/style/space_after_semicolon_spec.rb +24 -0
- data/spec/rubocop/cops/style/space_around_braces_spec.rb +49 -0
- data/spec/rubocop/cops/style/space_around_equals_in_default_parameter_spec.rb +34 -0
- data/spec/rubocop/cops/style/space_around_operators_spec.rb +216 -0
- data/spec/rubocop/cops/style/space_inside_brackets_spec.rb +51 -0
- data/spec/rubocop/cops/style/space_inside_hash_literal_braces_spec.rb +99 -0
- data/spec/rubocop/cops/style/space_inside_parens_spec.rb +33 -0
- data/spec/rubocop/cops/style/string_literals_spec.rb +62 -0
- data/spec/rubocop/cops/style/symbol_array_spec.rb +45 -0
- data/spec/rubocop/cops/style/symbol_name_spec.rb +122 -0
- data/spec/rubocop/cops/style/tab_spec.rb +23 -0
- data/spec/rubocop/cops/style/ternary_operator_spec.rb +42 -0
- data/spec/rubocop/cops/style/trailing_whitespace_spec.rb +29 -0
- data/spec/rubocop/cops/style/trivial_accessors_spec.rb +338 -0
- data/spec/rubocop/cops/style/unless_else_spec.rb +31 -0
- data/spec/rubocop/cops/style/variable_interpolation_spec.rb +53 -0
- data/spec/rubocop/cops/style/when_then_spec.rb +40 -0
- data/spec/rubocop/cops/style/while_until_do_spec.rb +47 -0
- data/spec/rubocop/cops/style/word_array_spec.rb +61 -0
- data/spec/rubocop/cops/variable_inspector_spec.rb +374 -0
- data/spec/rubocop/formatter/base_formatter_spec.rb +190 -0
- data/spec/rubocop/formatter/clang_style_formatter_spec.rb +70 -0
- data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +32 -0
- data/spec/rubocop/formatter/formatter_set_spec.rb +132 -0
- data/spec/rubocop/formatter/json_formatter_spec.rb +142 -0
- data/spec/rubocop/formatter/progress_formatter_spec.rb +196 -0
- data/spec/rubocop/formatter/simple_text_formatter_spec.rb +74 -0
- data/spec/spec_helper.rb +92 -0
- data/spec/support/file_helper.rb +21 -0
- data/spec/support/isolated_environment.rb +27 -0
- data/spec/support/mri_syntax_checker.rb +69 -0
- data/spec/support/shared_examples.rb +33 -0
- metadata +517 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe AndOr do
|
9
|
+
let(:amp) { AndOr.new }
|
10
|
+
|
11
|
+
it 'registers an offence for OR' do
|
12
|
+
inspect_source(amp,
|
13
|
+
['test if a or b'])
|
14
|
+
expect(amp.offences.size).to eq(1)
|
15
|
+
expect(amp.messages).to eq(['Use || instead of or.'])
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'registers an offence for AND' do
|
19
|
+
inspect_source(amp,
|
20
|
+
['test if a and b'])
|
21
|
+
expect(amp.offences.size).to eq(1)
|
22
|
+
expect(amp.messages).to eq(['Use && instead of and.'])
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'accepts ||' do
|
26
|
+
inspect_source(amp,
|
27
|
+
['test if a || b'])
|
28
|
+
expect(amp.offences).to be_empty
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'accepts &&' do
|
32
|
+
inspect_source(amp,
|
33
|
+
['test if a && b'])
|
34
|
+
expect(amp.offences).to be_empty
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe AsciiComments do
|
9
|
+
let(:ascii) { AsciiComments.new }
|
10
|
+
|
11
|
+
it 'registers an offence for a comment with non-ascii chars' do
|
12
|
+
inspect_source(ascii,
|
13
|
+
['# encoding: utf-8',
|
14
|
+
'# 这是什么?'])
|
15
|
+
expect(ascii.offences.size).to eq(1)
|
16
|
+
expect(ascii.offences.map(&:message))
|
17
|
+
.to eq([AsciiComments::MSG])
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'accepts comments with only ascii chars' do
|
21
|
+
inspect_source(ascii,
|
22
|
+
['# AZaz1@$%~,;*_`|'])
|
23
|
+
expect(ascii.offences).to be_empty
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe AsciiIdentifiers do
|
9
|
+
let(:ascii) { AsciiIdentifiers.new }
|
10
|
+
|
11
|
+
it 'registers an offence for a variable name with non-ascii chars' do
|
12
|
+
inspect_source(ascii,
|
13
|
+
['# encoding: utf-8',
|
14
|
+
'älg = 1'])
|
15
|
+
expect(ascii.offences.size).to eq(1)
|
16
|
+
expect(ascii.offences.map(&:message))
|
17
|
+
.to eq([AsciiIdentifiers::MSG])
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'accepts identifiers with only ascii chars' do
|
21
|
+
inspect_source(ascii,
|
22
|
+
['x.empty?'])
|
23
|
+
expect(ascii.offences).to be_empty
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe Attr do
|
9
|
+
let(:cop) { Attr.new }
|
10
|
+
|
11
|
+
it 'registers an offence attr' do
|
12
|
+
inspect_source(cop, ['class SomeClass',
|
13
|
+
' attr :name',
|
14
|
+
'end'])
|
15
|
+
expect(cop.offences.size).to eq(1)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe AvoidClassVars do
|
9
|
+
let(:acv) { AvoidClassVars.new }
|
10
|
+
|
11
|
+
it 'registers an offence for class variable declaration' do
|
12
|
+
inspect_source(acv,
|
13
|
+
['class TestClass; @@test = 10; end'])
|
14
|
+
expect(acv.offences.size).to eq(1)
|
15
|
+
expect(acv.offences.map(&:message))
|
16
|
+
.to eq(['Replace class var @@test with a class instance var.'])
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'does not register an offence for class variable usage' do
|
20
|
+
inspect_source(acv,
|
21
|
+
['@@test.test(20)'])
|
22
|
+
expect(acv.offences).to be_empty
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe AvoidFor do
|
9
|
+
let(:af) { AvoidFor.new }
|
10
|
+
|
11
|
+
it 'registers an offence for for' do
|
12
|
+
inspect_source(af,
|
13
|
+
['def func',
|
14
|
+
' for n in [1, 2, 3] do',
|
15
|
+
' puts n',
|
16
|
+
' end',
|
17
|
+
'end'])
|
18
|
+
expect(af.offences.size).to eq(1)
|
19
|
+
expect(af.offences.map(&:message))
|
20
|
+
.to eq([AvoidFor::MSG])
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'does not register an offence for :for' do
|
24
|
+
inspect_source(af,
|
25
|
+
['[:for, :ala, :bala]'])
|
26
|
+
expect(af.offences).to be_empty
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'does not register an offence for def for' do
|
30
|
+
inspect_source(af,
|
31
|
+
['def for; end'])
|
32
|
+
expect(af.offences).to be_empty
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe AvoidGlobalVars do
|
9
|
+
let(:ap) { AvoidGlobalVars.new }
|
10
|
+
|
11
|
+
it 'registers an offence for $custom' do
|
12
|
+
inspect_source(ap, ['puts $custom'])
|
13
|
+
expect(ap.offences.size).to eq(1)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'does not register an offence for $"' do
|
17
|
+
inspect_source(ap, ['puts $"'])
|
18
|
+
|
19
|
+
expect(ap.offences).to be_empty
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'does not register an offence for $ORS' do
|
23
|
+
inspect_source(ap, ['puts $0'])
|
24
|
+
expect(ap.offences).to be_empty
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'does not register an offence for backrefs like $1' do
|
28
|
+
inspect_source(ap, ['puts $1'])
|
29
|
+
expect(ap.offences).to be_empty
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe AvoidPerlBackrefs do
|
9
|
+
let(:ap) { AvoidPerlBackrefs.new }
|
10
|
+
|
11
|
+
it 'registers an offence for $1' do
|
12
|
+
inspect_source(ap, ['puts $1'])
|
13
|
+
expect(ap.offences.size).to eq(1)
|
14
|
+
expect(ap.offences.map(&:message))
|
15
|
+
.to eq(['Prefer the use of MatchData over $1.'])
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe AvoidPerlisms do
|
9
|
+
let(:ap) { AvoidPerlisms.new }
|
10
|
+
|
11
|
+
it 'registers an offence for $:' do
|
12
|
+
inspect_source(ap, ['puts $:'])
|
13
|
+
expect(ap.offences.size).to eq(1)
|
14
|
+
expect(ap.offences.map(&:message))
|
15
|
+
.to eq(['Prefer $LOAD_PATH over $:.'])
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'registers an offence for $"' do
|
19
|
+
inspect_source(ap, ['puts $"'])
|
20
|
+
expect(ap.offences.size).to eq(1)
|
21
|
+
expect(ap.offences.map(&:message))
|
22
|
+
.to eq(['Prefer $LOADED_FEATURES over $".'])
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'registers an offence for $0' do
|
26
|
+
inspect_source(ap, ['puts $0'])
|
27
|
+
expect(ap.offences.size).to eq(1)
|
28
|
+
expect(ap.offences.map(&:message))
|
29
|
+
.to eq(['Prefer $PROGRAM_NAME over $0.'])
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'registers an offence for $$' do
|
33
|
+
inspect_source(ap, ['puts $$'])
|
34
|
+
expect(ap.offences.size).to eq(1)
|
35
|
+
expect(ap.offences.map(&:message))
|
36
|
+
.to eq(['Prefer $PID or $PROCESS_ID from English library' +
|
37
|
+
' over $$.'])
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'does not register an offence for backrefs like $1' do
|
41
|
+
inspect_source(ap, ['puts $1'])
|
42
|
+
expect(ap.offences).to be_empty
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe BeginBlock do
|
9
|
+
let(:cop) { BeginBlock.new }
|
10
|
+
|
11
|
+
it 'reports an offence for a BEGIN block' do
|
12
|
+
src = ['BEGIN { test }']
|
13
|
+
inspect_source(cop, src)
|
14
|
+
expect(cop.offences.size).to eq(1)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe BlockComments do
|
9
|
+
let(:block) { BlockComments.new }
|
10
|
+
|
11
|
+
it 'registers an offence for block comments' do
|
12
|
+
inspect_source(block,
|
13
|
+
['=begin',
|
14
|
+
'comment',
|
15
|
+
'=end'])
|
16
|
+
expect(block.offences.size).to eq(1)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'accepts regular comments' do
|
20
|
+
inspect_source(block,
|
21
|
+
['# comment'])
|
22
|
+
expect(block.offences).to be_empty
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,159 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe BlockNesting do
|
9
|
+
let(:block_nesting) { BlockNesting.new }
|
10
|
+
before { BlockNesting.config = { 'Max' => 2 } }
|
11
|
+
|
12
|
+
it 'accepts `Max` levels of nesting' do
|
13
|
+
source = ['if a',
|
14
|
+
' if b',
|
15
|
+
' puts b',
|
16
|
+
' end',
|
17
|
+
'end']
|
18
|
+
expect_nesting_offences(source, [])
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'registers an offence for `Max + 1` levels of `if` nesting' do
|
22
|
+
source = ['if a',
|
23
|
+
' if b',
|
24
|
+
' if c',
|
25
|
+
' puts c',
|
26
|
+
' end',
|
27
|
+
' end',
|
28
|
+
'end']
|
29
|
+
expect_nesting_offences(source, [3])
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'registers a single offence for `Max + 2` levels of `if` nesting' do
|
33
|
+
source = ['if a',
|
34
|
+
' if b',
|
35
|
+
' if c',
|
36
|
+
' if d',
|
37
|
+
' puts d',
|
38
|
+
' end',
|
39
|
+
' end',
|
40
|
+
' end',
|
41
|
+
'end']
|
42
|
+
expect_nesting_offences(source, [3])
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'registers 2 offences' do
|
46
|
+
source = ['if a',
|
47
|
+
' if b',
|
48
|
+
' if c',
|
49
|
+
' puts c',
|
50
|
+
' end',
|
51
|
+
' end',
|
52
|
+
' if d',
|
53
|
+
' if e',
|
54
|
+
' puts e',
|
55
|
+
' end',
|
56
|
+
' end',
|
57
|
+
'end']
|
58
|
+
expect_nesting_offences(source, [3, 8])
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'registers an offence for nested `case`' do
|
62
|
+
source = ['if a',
|
63
|
+
' if b',
|
64
|
+
' case c',
|
65
|
+
' when C',
|
66
|
+
' puts C',
|
67
|
+
' end',
|
68
|
+
' end',
|
69
|
+
'end']
|
70
|
+
expect_nesting_offences(source, [3])
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'registers an offence for nested `while`' do
|
74
|
+
source = ['if a',
|
75
|
+
' if b',
|
76
|
+
' while c',
|
77
|
+
' puts c',
|
78
|
+
' end',
|
79
|
+
' end',
|
80
|
+
'end']
|
81
|
+
expect_nesting_offences(source, [3])
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'registers an offence for nested modifier `while`' do
|
85
|
+
source = ['if a',
|
86
|
+
' if b',
|
87
|
+
' begin',
|
88
|
+
' puts c',
|
89
|
+
' end while c',
|
90
|
+
' end',
|
91
|
+
'end']
|
92
|
+
expect_nesting_offences(source, [3])
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'registers an offence for nested `until`' do
|
96
|
+
source = ['if a',
|
97
|
+
' if b',
|
98
|
+
' until c',
|
99
|
+
' puts c',
|
100
|
+
' end',
|
101
|
+
' end',
|
102
|
+
'end']
|
103
|
+
expect_nesting_offences(source, [3])
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'registers an offence for nested modifier `until`' do
|
107
|
+
source = ['if a',
|
108
|
+
' if b',
|
109
|
+
' begin',
|
110
|
+
' puts c',
|
111
|
+
' end until c',
|
112
|
+
' end',
|
113
|
+
'end']
|
114
|
+
expect_nesting_offences(source, [3])
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'registers an offence for nested `for`' do
|
118
|
+
source = ['if a',
|
119
|
+
' if b',
|
120
|
+
' for c in [1,2] do',
|
121
|
+
' puts c',
|
122
|
+
' end',
|
123
|
+
' end',
|
124
|
+
'end']
|
125
|
+
expect_nesting_offences(source, [3])
|
126
|
+
end
|
127
|
+
|
128
|
+
it 'registers an offence for nested `rescue`' do
|
129
|
+
source = ['if a',
|
130
|
+
' if b',
|
131
|
+
' begin',
|
132
|
+
' puts c',
|
133
|
+
' rescue',
|
134
|
+
' puts x',
|
135
|
+
' end',
|
136
|
+
' end',
|
137
|
+
'end']
|
138
|
+
expect_nesting_offences(source, [5])
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'accepts if/elsif' do
|
142
|
+
source = ['if a',
|
143
|
+
'elsif b',
|
144
|
+
'elsif c',
|
145
|
+
'elsif d',
|
146
|
+
'end']
|
147
|
+
expect_nesting_offences(source, [])
|
148
|
+
end
|
149
|
+
|
150
|
+
def expect_nesting_offences(source, lines)
|
151
|
+
inspect_source(block_nesting, source)
|
152
|
+
expect(block_nesting.offences.map(&:line)).to eq(lines)
|
153
|
+
expect(block_nesting.messages).to eq(
|
154
|
+
['Avoid more than 2 levels of block nesting.'] * lines.length)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|