reek 1.2.7.2 → 1.2.7.3
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/History.txt +9 -1
- data/config/defaults.reek +4 -4
- data/features/masking_smells.feature +14 -57
- data/features/options.feature +1 -2
- data/features/rake_task.feature +6 -6
- data/features/reports.feature +8 -38
- data/features/samples.feature +181 -181
- data/features/stdin.feature +3 -3
- data/lib/reek.rb +1 -1
- data/lib/reek/cli/command_line.rb +2 -7
- data/lib/reek/cli/reek_command.rb +6 -6
- data/lib/reek/cli/report.rb +27 -49
- data/lib/reek/core/code_parser.rb +6 -15
- data/lib/reek/core/method_context.rb +1 -1
- data/lib/reek/core/module_context.rb +0 -18
- data/lib/reek/core/smell_configuration.rb +0 -4
- data/lib/reek/core/sniffer.rb +11 -19
- data/lib/reek/core/warning_collector.rb +27 -0
- data/lib/reek/examiner.rb +43 -35
- data/lib/reek/rake/task.rb +2 -0
- data/lib/reek/smell_warning.rb +10 -25
- data/lib/reek/smells/boolean_parameter.rb +1 -1
- data/lib/reek/smells/control_couple.rb +4 -1
- data/lib/reek/smells/data_clump.rb +40 -33
- data/lib/reek/smells/feature_envy.rb +1 -1
- data/lib/reek/smells/long_parameter_list.rb +4 -1
- data/lib/reek/smells/long_yield_list.rb +6 -3
- data/lib/reek/smells/simulated_polymorphism.rb +1 -1
- data/lib/reek/smells/smell_detector.rb +4 -32
- data/lib/reek/smells/uncommunicative_method_name.rb +1 -1
- data/lib/reek/smells/uncommunicative_module_name.rb +1 -1
- data/lib/reek/smells/uncommunicative_parameter_name.rb +2 -2
- data/lib/reek/smells/uncommunicative_variable_name.rb +11 -18
- data/lib/reek/smells/utility_function.rb +7 -4
- data/lib/reek/source/reference_collector.rb +9 -2
- data/lib/reek/source/source_locator.rb +6 -0
- data/lib/reek/spec/should_reek.rb +3 -6
- data/lib/reek/spec/should_reek_only_of.rb +4 -3
- data/reek.gemspec +4 -4
- data/spec/reek/cli/reek_command_spec.rb +3 -4
- data/spec/reek/cli/report_spec.rb +10 -6
- data/spec/reek/cli/yaml_command_spec.rb +1 -1
- data/spec/reek/core/code_context_spec.rb +1 -3
- data/spec/reek/core/module_context_spec.rb +1 -1
- data/spec/reek/core/warning_collector_spec.rb +27 -0
- data/spec/reek/examiner_spec.rb +80 -19
- data/spec/reek/smell_warning_spec.rb +4 -61
- data/spec/reek/smells/attribute_spec.rb +4 -7
- data/spec/reek/smells/behaves_like_variable_detector.rb +2 -2
- data/spec/reek/smells/class_variable_spec.rb +0 -1
- data/spec/reek/smells/control_couple_spec.rb +8 -15
- data/spec/reek/smells/data_clump_spec.rb +85 -1
- data/spec/reek/smells/duplication_spec.rb +7 -8
- data/spec/reek/smells/feature_envy_spec.rb +2 -32
- data/spec/reek/smells/long_parameter_list_spec.rb +9 -16
- data/spec/reek/smells/long_yield_list_spec.rb +8 -15
- data/spec/reek/smells/smell_detector_shared.rb +12 -0
- data/spec/reek/smells/uncommunicative_variable_name_spec.rb +9 -10
- data/spec/reek/smells/utility_function_spec.rb +11 -15
- data/spec/reek/spec/should_reek_only_of_spec.rb +6 -6
- data/spec/reek/spec/should_reek_spec.rb +3 -3
- metadata +36 -22
- data/lib/reek/core/class_context.rb +0 -22
- data/lib/reek/core/detector_stack.rb +0 -33
- data/lib/reek/core/masking_collection.rb +0 -52
- data/spec/reek/core/class_context_spec.rb +0 -53
- data/spec/reek/core/masking_collection_spec.rb +0 -235
data/History.txt
CHANGED
@@ -1,4 +1,12 @@
|
|
1
|
-
== 1.2.
|
1
|
+
== 1.2.7.3 (2010-03-29)
|
2
|
+
|
3
|
+
=== Minor Changes
|
4
|
+
* UtilityFunction no longer reported when local method called in param initializer (#60)
|
5
|
+
* Spaces removed from smell class names in report output
|
6
|
+
* Masked smells are no longer reported
|
7
|
+
** the -a command-line option has been removed
|
8
|
+
** some methods on Examiner are now deprecated
|
9
|
+
* DataClump no longer needs infinite memory for large classes (#57 again)
|
2
10
|
|
3
11
|
== 1.2.7.2 (2010-03-05)
|
4
12
|
|
data/config/defaults.reek
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
UncommunicativeParameterName:
|
3
|
-
accept:
|
4
|
-
|
3
|
+
accept: []
|
4
|
+
|
5
5
|
exclude: []
|
6
6
|
|
7
7
|
enabled: true
|
@@ -78,8 +78,8 @@ Attribute:
|
|
78
78
|
|
79
79
|
enabled: false
|
80
80
|
UncommunicativeVariableName:
|
81
|
-
accept:
|
82
|
-
|
81
|
+
accept: []
|
82
|
+
|
83
83
|
exclude: []
|
84
84
|
|
85
85
|
enabled: true
|
@@ -10,12 +10,12 @@ Feature: Masking smells using config files
|
|
10
10
|
And it reports:
|
11
11
|
"""
|
12
12
|
spec/samples/empty_config_file/dirty.rb -- 6 warnings:
|
13
|
-
Dirty has the variable name '@s' (
|
13
|
+
Dirty has the variable name '@s' (UncommunicativeName)
|
14
14
|
Dirty#a calls @s.title twice (Duplication)
|
15
15
|
Dirty#a calls puts(@s.title) twice (Duplication)
|
16
|
-
Dirty#a contains iterators nested 2 deep (
|
17
|
-
Dirty#a has the name 'a' (
|
18
|
-
Dirty#a has the variable name 'x' (
|
16
|
+
Dirty#a contains iterators nested 2 deep (NestedIterators)
|
17
|
+
Dirty#a has the name 'a' (UncommunicativeName)
|
18
|
+
Dirty#a has the variable name 'x' (UncommunicativeName)
|
19
19
|
|
20
20
|
"""
|
21
21
|
|
@@ -25,13 +25,13 @@ Feature: Masking smells using config files
|
|
25
25
|
And it reports:
|
26
26
|
"""
|
27
27
|
spec/samples/corrupt_config_file/dirty.rb -- 7 warnings:
|
28
|
-
Dirty has no descriptive comment (
|
29
|
-
Dirty has the variable name '@s' (
|
28
|
+
Dirty has no descriptive comment (IrresponsibleModule)
|
29
|
+
Dirty has the variable name '@s' (UncommunicativeName)
|
30
30
|
Dirty#a calls @s.title twice (Duplication)
|
31
31
|
Dirty#a calls puts(@s.title) twice (Duplication)
|
32
|
-
Dirty#a contains iterators nested 2 deep (
|
33
|
-
Dirty#a has the name 'a' (
|
34
|
-
Dirty#a has the variable name 'x' (
|
32
|
+
Dirty#a contains iterators nested 2 deep (NestedIterators)
|
33
|
+
Dirty#a has the name 'a' (UncommunicativeName)
|
34
|
+
Dirty#a has the variable name 'x' (UncommunicativeName)
|
35
35
|
|
36
36
|
"""
|
37
37
|
And it reports the error 'Error: Invalid configuration file "corrupt.reek" -- "This is not a config file" is not a code smell'
|
@@ -44,7 +44,7 @@ Feature: Masking smells using config files
|
|
44
44
|
spec/samples/masked/dirty.rb -- 3 warnings:
|
45
45
|
Dirty#a calls @s.title twice (Duplication)
|
46
46
|
Dirty#a calls puts(@s.title) twice (Duplication)
|
47
|
-
Dirty#a contains iterators nested 2 deep (
|
47
|
+
Dirty#a contains iterators nested 2 deep (NestedIterators)
|
48
48
|
|
49
49
|
"""
|
50
50
|
And it reports the error "Error: No such file - no_such_file.rb"
|
@@ -57,34 +57,7 @@ Feature: Masking smells using config files
|
|
57
57
|
spec/samples/masked/dirty.rb -- 3 warnings:
|
58
58
|
Dirty#a calls @s.title twice (Duplication)
|
59
59
|
Dirty#a calls puts(@s.title) twice (Duplication)
|
60
|
-
Dirty#a contains iterators nested 2 deep (
|
61
|
-
|
62
|
-
"""
|
63
|
-
|
64
|
-
Scenario: switch off one smell but show all in the report
|
65
|
-
When I run reek --show-all spec/samples/masked/dirty.rb
|
66
|
-
Then the exit status indicates smells
|
67
|
-
And it reports:
|
68
|
-
"""
|
69
|
-
spec/samples/masked/dirty.rb -- 6 warnings:
|
70
|
-
(masked) Dirty has the variable name '@s' (Uncommunicative Name)
|
71
|
-
Dirty#a calls @s.title twice (Duplication)
|
72
|
-
Dirty#a calls puts(@s.title) twice (Duplication)
|
73
|
-
Dirty#a contains iterators nested 2 deep (Nested Iterators)
|
74
|
-
(masked) Dirty#a has the name 'a' (Uncommunicative Name)
|
75
|
-
(masked) Dirty#a has the variable name 'x' (Uncommunicative Name)
|
76
|
-
|
77
|
-
"""
|
78
|
-
|
79
|
-
Scenario: switch off one smell and hide them in the report
|
80
|
-
When I run reek --no-show-all spec/samples/masked/dirty.rb
|
81
|
-
Then the exit status indicates smells
|
82
|
-
And it reports:
|
83
|
-
"""
|
84
|
-
spec/samples/masked/dirty.rb -- 3 warnings:
|
85
|
-
Dirty#a calls @s.title twice (Duplication)
|
86
|
-
Dirty#a calls puts(@s.title) twice (Duplication)
|
87
|
-
Dirty#a contains iterators nested 2 deep (Nested Iterators)
|
60
|
+
Dirty#a contains iterators nested 2 deep (NestedIterators)
|
88
61
|
|
89
62
|
"""
|
90
63
|
|
@@ -94,11 +67,11 @@ Feature: Masking smells using config files
|
|
94
67
|
And it reports:
|
95
68
|
"""
|
96
69
|
spec/samples/not_quite_masked/dirty.rb -- 5 warnings:
|
97
|
-
Dirty has the variable name '@s' (
|
70
|
+
Dirty has the variable name '@s' (UncommunicativeName)
|
98
71
|
Dirty#a calls @s.title twice (Duplication)
|
99
72
|
Dirty#a calls puts(@s.title) twice (Duplication)
|
100
|
-
Dirty#a contains iterators nested 2 deep (
|
101
|
-
Dirty#a has the name 'a' (
|
73
|
+
Dirty#a contains iterators nested 2 deep (NestedIterators)
|
74
|
+
Dirty#a has the name 'a' (UncommunicativeName)
|
102
75
|
|
103
76
|
"""
|
104
77
|
|
@@ -113,19 +86,3 @@ Feature: Masking smells using config files
|
|
113
86
|
Dirty#a calls puts(@s.title) twice (Duplication)
|
114
87
|
|
115
88
|
"""
|
116
|
-
|
117
|
-
@overrides
|
118
|
-
Scenario: all show up masked even when overridden
|
119
|
-
When I run reek --show-all spec/samples/overrides
|
120
|
-
Then the exit status indicates smells
|
121
|
-
And it reports:
|
122
|
-
"""
|
123
|
-
spec/samples/overrides/masked/dirty.rb -- 6 warnings:
|
124
|
-
(masked) Dirty has the variable name '@s' (Uncommunicative Name)
|
125
|
-
Dirty#a calls @s.title twice (Duplication)
|
126
|
-
Dirty#a calls puts(@s.title) twice (Duplication)
|
127
|
-
(masked) Dirty#a contains iterators nested 2 deep (Nested Iterators)
|
128
|
-
(masked) Dirty#a has the name 'a' (Uncommunicative Name)
|
129
|
-
(masked) Dirty#a has the variable name 'x' (Uncommunicative Name)
|
130
|
-
|
131
|
-
"""
|
data/features/options.feature
CHANGED
@@ -25,7 +25,7 @@ Feature: Reek can be controlled using command-line options
|
|
25
25
|
Examples:
|
26
26
|
|
27
27
|
reek lib/*.rb
|
28
|
-
reek -q
|
28
|
+
reek -q lib
|
29
29
|
cat my_class.rb | reek
|
30
30
|
|
31
31
|
See http://wiki.github.com/kevinrutherford/reek for detailed help.
|
@@ -36,7 +36,6 @@ Feature: Reek can be controlled using command-line options
|
|
36
36
|
|
37
37
|
|
38
38
|
Report formatting:
|
39
|
-
-a, --[no-]show-all Show all smells, including those masked by config settings
|
40
39
|
-q, --[no-]quiet Suppress headings for smell-free source files
|
41
40
|
-y, --yaml Report smells in YAML format
|
42
41
|
|
data/features/rake_task.feature
CHANGED
@@ -16,7 +16,7 @@ Feature: Reek can be driven through its Task
|
|
16
16
|
spec/samples/masked/dirty.rb -- 3 warnings:
|
17
17
|
Dirty#a calls @s.title twice (Duplication)
|
18
18
|
Dirty#a calls puts(@s.title) twice (Duplication)
|
19
|
-
Dirty#a contains iterators nested 2 deep (
|
19
|
+
Dirty#a contains iterators nested 2 deep (NestedIterators)
|
20
20
|
"""
|
21
21
|
|
22
22
|
Scenario: name changes the task name
|
@@ -32,7 +32,7 @@ Feature: Reek can be driven through its Task
|
|
32
32
|
spec/samples/masked/dirty.rb -- 3 warnings:
|
33
33
|
Dirty#a calls @s.title twice (Duplication)
|
34
34
|
Dirty#a calls puts(@s.title) twice (Duplication)
|
35
|
-
Dirty#a contains iterators nested 2 deep (
|
35
|
+
Dirty#a contains iterators nested 2 deep (NestedIterators)
|
36
36
|
"""
|
37
37
|
|
38
38
|
Scenario: verbose prints the reek command
|
@@ -58,10 +58,10 @@ Feature: Reek can be driven through its Task
|
|
58
58
|
And it reports:
|
59
59
|
"""
|
60
60
|
spec/samples/empty_config_file/dirty.rb -- 6 warnings:
|
61
|
-
Dirty has the variable name '@s' (
|
61
|
+
Dirty has the variable name '@s' (UncommunicativeName)
|
62
62
|
Dirty#a calls @s.title twice (Duplication)
|
63
63
|
Dirty#a calls puts(@s.title) twice (Duplication)
|
64
|
-
Dirty#a contains iterators nested 2 deep (
|
65
|
-
Dirty#a has the name 'a' (
|
66
|
-
Dirty#a has the variable name 'x' (
|
64
|
+
Dirty#a contains iterators nested 2 deep (NestedIterators)
|
65
|
+
Dirty#a has the name 'a' (UncommunicativeName)
|
66
|
+
Dirty#a has the variable name 'x' (UncommunicativeName)
|
67
67
|
"""
|
data/features/reports.feature
CHANGED
@@ -10,19 +10,19 @@ Feature: Correctly formatted reports
|
|
10
10
|
And it reports:
|
11
11
|
"""
|
12
12
|
spec/samples/two_smelly_files/dirty_one.rb -- 6 warnings:
|
13
|
-
Dirty has the variable name '@s' (
|
13
|
+
Dirty has the variable name '@s' (UncommunicativeName)
|
14
14
|
Dirty#a calls @s.title twice (Duplication)
|
15
15
|
Dirty#a calls puts(@s.title) twice (Duplication)
|
16
|
-
Dirty#a contains iterators nested 2 deep (
|
17
|
-
Dirty#a has the name 'a' (
|
18
|
-
Dirty#a has the variable name 'x' (
|
16
|
+
Dirty#a contains iterators nested 2 deep (NestedIterators)
|
17
|
+
Dirty#a has the name 'a' (UncommunicativeName)
|
18
|
+
Dirty#a has the variable name 'x' (UncommunicativeName)
|
19
19
|
spec/samples/two_smelly_files/dirty_two.rb -- 6 warnings:
|
20
|
-
Dirty has the variable name '@s' (
|
20
|
+
Dirty has the variable name '@s' (UncommunicativeName)
|
21
21
|
Dirty#a calls @s.title twice (Duplication)
|
22
22
|
Dirty#a calls puts(@s.title) twice (Duplication)
|
23
|
-
Dirty#a contains iterators nested 2 deep (
|
24
|
-
Dirty#a has the name 'a' (
|
25
|
-
Dirty#a has the variable name 'x' (
|
23
|
+
Dirty#a contains iterators nested 2 deep (NestedIterators)
|
24
|
+
Dirty#a has the name 'a' (UncommunicativeName)
|
25
|
+
Dirty#a has the variable name 'x' (UncommunicativeName)
|
26
26
|
|
27
27
|
"""
|
28
28
|
|
@@ -56,33 +56,3 @@ Feature: Correctly formatted reports
|
|
56
56
|
| option |
|
57
57
|
| -q |
|
58
58
|
| --quiet |
|
59
|
-
|
60
|
-
|
61
|
-
Scenario Outline: -a turns on details in presence of -q
|
62
|
-
When I run reek <options> spec/samples/clean_due_to_masking/*.rb
|
63
|
-
Then the exit status indicates smells
|
64
|
-
And it reports:
|
65
|
-
"""
|
66
|
-
spec/samples/clean_due_to_masking/dirty_one.rb -- 7 warnings:
|
67
|
-
(masked) Dirty has no descriptive comment (Irresponsible Module)
|
68
|
-
(masked) Dirty has the variable name '@s' (Uncommunicative Name)
|
69
|
-
(masked) Dirty#a calls @s.title twice (Duplication)
|
70
|
-
(masked) Dirty#a calls puts(@s.title) twice (Duplication)
|
71
|
-
(masked) Dirty#a contains iterators nested 2 deep (Nested Iterators)
|
72
|
-
(masked) Dirty#a has the name 'a' (Uncommunicative Name)
|
73
|
-
(masked) Dirty#a has the variable name 'x' (Uncommunicative Name)
|
74
|
-
spec/samples/clean_due_to_masking/dirty_two.rb -- 7 warnings:
|
75
|
-
(masked) Dirty has no descriptive comment (Irresponsible Module)
|
76
|
-
(masked) Dirty has the variable name '@s' (Uncommunicative Name)
|
77
|
-
(masked) Dirty#a calls @s.title twice (Duplication)
|
78
|
-
(masked) Dirty#a calls puts(@s.title) twice (Duplication)
|
79
|
-
(masked) Dirty#a contains iterators nested 2 deep (Nested Iterators)
|
80
|
-
(masked) Dirty#a has the name 'a' (Uncommunicative Name)
|
81
|
-
(masked) Dirty#a has the variable name 'x' (Uncommunicative Name)
|
82
|
-
|
83
|
-
"""
|
84
|
-
|
85
|
-
Examples:
|
86
|
-
| options |
|
87
|
-
| -q -a |
|
88
|
-
| -a -q |
|
data/features/samples.feature
CHANGED
@@ -11,17 +11,17 @@ Feature: Basic smell detection
|
|
11
11
|
And it reports:
|
12
12
|
"""
|
13
13
|
spec/samples/inline.rb -- 41 warnings:
|
14
|
-
File has no descriptive comment (
|
15
|
-
Inline declares the class variable @@directory (
|
16
|
-
Inline declares the class variable @@rootdir (
|
14
|
+
File has no descriptive comment (IrresponsibleModule)
|
15
|
+
Inline declares the class variable @@directory (ClassVariable)
|
16
|
+
Inline declares the class variable @@rootdir (ClassVariable)
|
17
17
|
Inline#self.rootdir calls env.nil? twice (Duplication)
|
18
|
-
Inline#self.rootdir has approx 8 statements (
|
19
|
-
Inline::C declares the class variable @@type_map (
|
20
|
-
Inline::C has at least 13 instance variables (
|
21
|
-
Inline::C takes parameters [options, src] to 5 methods (
|
22
|
-
Inline::C tests $DEBUG at least 7 times (
|
23
|
-
Inline::C tests $TESTING at least 4 times (
|
24
|
-
Inline::C tests @@type_map.has_key?(type) at least 3 times (
|
18
|
+
Inline#self.rootdir has approx 8 statements (LongMethod)
|
19
|
+
Inline::C declares the class variable @@type_map (ClassVariable)
|
20
|
+
Inline::C has at least 13 instance variables (LargeClass)
|
21
|
+
Inline::C takes parameters [options, src] to 5 methods (DataClump)
|
22
|
+
Inline::C tests $DEBUG at least 7 times (SimulatedPolymorphism)
|
23
|
+
Inline::C tests $TESTING at least 4 times (SimulatedPolymorphism)
|
24
|
+
Inline::C tests @@type_map.has_key?(type) at least 3 times (SimulatedPolymorphism)
|
25
25
|
Inline::C#build calls ($? == 0) twice (Duplication)
|
26
26
|
Inline::C#build calls Inline.directory 5 times (Duplication)
|
27
27
|
Inline::C#build calls io.puts 6 times (Duplication)
|
@@ -29,29 +29,29 @@ Feature: Basic smell detection
|
|
29
29
|
Inline::C#build calls io.puts("#ifdef __cplusplus") twice (Duplication)
|
30
30
|
Inline::C#build calls module_name twice (Duplication)
|
31
31
|
Inline::C#build calls warn("Output:\n#{result}") twice (Duplication)
|
32
|
-
Inline::C#build contains iterators nested 2 deep (
|
33
|
-
Inline::C#build has approx 60 statements (
|
34
|
-
Inline::C#build has the variable name 'n' (
|
35
|
-
Inline::C#build has the variable name 't' (
|
36
|
-
Inline::C#c has the name 'c' (
|
32
|
+
Inline::C#build contains iterators nested 2 deep (NestedIterators)
|
33
|
+
Inline::C#build has approx 60 statements (LongMethod)
|
34
|
+
Inline::C#build has the variable name 'n' (UncommunicativeName)
|
35
|
+
Inline::C#build has the variable name 't' (UncommunicativeName)
|
36
|
+
Inline::C#c has the name 'c' (UncommunicativeName)
|
37
37
|
Inline::C#crap_for_windoze calls Config::CONFIG["libdir"] twice (Duplication)
|
38
38
|
Inline::C#generate calls result.sub!(/\A\n/, "") twice (Duplication)
|
39
39
|
Inline::C#generate calls signature["args"] twice (Duplication)
|
40
40
|
Inline::C#generate calls signature["args"].map twice (Duplication)
|
41
|
-
Inline::C#generate has approx 32 statements (
|
41
|
+
Inline::C#generate has approx 32 statements (LongMethod)
|
42
42
|
Inline::C#initialize calls stack.empty? twice (Duplication)
|
43
43
|
Inline::C#load calls so_name twice (Duplication)
|
44
|
-
Inline::C#module_name has the variable name 'm' (
|
45
|
-
Inline::C#module_name has the variable name 'x' (
|
46
|
-
Inline::C#parse_signature has approx 15 statements (
|
47
|
-
Inline::C#parse_signature has boolean parameter 'raw' (
|
48
|
-
Inline::C#parse_signature has the variable name 'x' (
|
49
|
-
Inline::C#parse_signature is controlled by argument raw (
|
50
|
-
Inline::C#strip_comments doesn't depend on instance state (
|
51
|
-
Inline::C#strip_comments refers to src more than self (
|
44
|
+
Inline::C#module_name has the variable name 'm' (UncommunicativeName)
|
45
|
+
Inline::C#module_name has the variable name 'x' (UncommunicativeName)
|
46
|
+
Inline::C#parse_signature has approx 15 statements (LongMethod)
|
47
|
+
Inline::C#parse_signature has boolean parameter 'raw' (ControlCouple)
|
48
|
+
Inline::C#parse_signature has the variable name 'x' (UncommunicativeName)
|
49
|
+
Inline::C#parse_signature is controlled by argument raw (ControlCouple)
|
50
|
+
Inline::C#strip_comments doesn't depend on instance state (LowCohesion)
|
51
|
+
Inline::C#strip_comments refers to src more than self (LowCohesion)
|
52
52
|
Module#inline calls Inline.const_get(lang) twice (Duplication)
|
53
|
-
Module#inline has approx 11 statements (
|
54
|
-
Module#inline is controlled by argument options (
|
53
|
+
Module#inline has approx 11 statements (LongMethod)
|
54
|
+
Module#inline is controlled by argument options (ControlCouple)
|
55
55
|
|
56
56
|
"""
|
57
57
|
|
@@ -61,23 +61,23 @@ Feature: Basic smell detection
|
|
61
61
|
And it reports:
|
62
62
|
"""
|
63
63
|
spec/samples/optparse.rb -- 109 warnings:
|
64
|
-
OptionParser has at least 42 methods (
|
65
|
-
OptionParser has the variable name 'f' (
|
66
|
-
OptionParser has the variable name 'k' (
|
67
|
-
OptionParser has the variable name 'o' (
|
68
|
-
OptionParser has the variable name 's' (
|
69
|
-
OptionParser has the variable name 'v' (
|
70
|
-
OptionParser tests ((argv.size == 1) and Array.===(argv[0])) at least 3 times (
|
71
|
-
OptionParser tests a at least 7 times (
|
72
|
-
OptionParser tests default_pattern at least 7 times (
|
73
|
-
OptionParser tests not_style at least 3 times (
|
74
|
-
OptionParser tests s at least 7 times (
|
75
|
-
OptionParser#complete contains iterators nested 2 deep (
|
76
|
-
OptionParser#complete has 4 parameters (
|
77
|
-
OptionParser#complete has boolean parameter 'icase' (
|
64
|
+
OptionParser has at least 42 methods (LargeClass)
|
65
|
+
OptionParser has the variable name 'f' (UncommunicativeName)
|
66
|
+
OptionParser has the variable name 'k' (UncommunicativeName)
|
67
|
+
OptionParser has the variable name 'o' (UncommunicativeName)
|
68
|
+
OptionParser has the variable name 's' (UncommunicativeName)
|
69
|
+
OptionParser has the variable name 'v' (UncommunicativeName)
|
70
|
+
OptionParser tests ((argv.size == 1) and Array.===(argv[0])) at least 3 times (SimulatedPolymorphism)
|
71
|
+
OptionParser tests a at least 7 times (SimulatedPolymorphism)
|
72
|
+
OptionParser tests default_pattern at least 7 times (SimulatedPolymorphism)
|
73
|
+
OptionParser tests not_style at least 3 times (SimulatedPolymorphism)
|
74
|
+
OptionParser tests s at least 7 times (SimulatedPolymorphism)
|
75
|
+
OptionParser#complete contains iterators nested 2 deep (NestedIterators)
|
76
|
+
OptionParser#complete has 4 parameters (LongParameterList)
|
77
|
+
OptionParser#complete has boolean parameter 'icase' (ControlCouple)
|
78
78
|
OptionParser#getopts calls result[opt] = false twice (Duplication)
|
79
|
-
OptionParser#getopts has approx 17 statements (
|
80
|
-
OptionParser#load has the variable name 's' (
|
79
|
+
OptionParser#getopts has approx 17 statements (LongMethod)
|
80
|
+
OptionParser#load has the variable name 's' (UncommunicativeName)
|
81
81
|
OptionParser#make_switch calls (long << o = q.downcase) twice (Duplication)
|
82
82
|
OptionParser#make_switch calls (sdesc << "-#{q}") twice (Duplication)
|
83
83
|
OptionParser#make_switch calls default_style.guess(arg = a) 4 times (Duplication)
|
@@ -89,20 +89,20 @@ Feature: Basic smell detection
|
|
89
89
|
OptionParser#make_switch calls q.downcase 3 times (Duplication)
|
90
90
|
OptionParser#make_switch calls search(:atype, FalseClass) twice (Duplication)
|
91
91
|
OptionParser#make_switch calls search(:atype, o) 6 times (Duplication)
|
92
|
-
OptionParser#make_switch contains iterators nested 2 deep (
|
93
|
-
OptionParser#make_switch contains iterators nested 3 deep (
|
94
|
-
OptionParser#make_switch has approx 68 statements (
|
95
|
-
OptionParser#make_switch has the variable name 'a' (
|
96
|
-
OptionParser#make_switch has the variable name 'c' (
|
97
|
-
OptionParser#make_switch has the variable name 'n' (
|
98
|
-
OptionParser#make_switch has the variable name 'o' (
|
99
|
-
OptionParser#make_switch has the variable name 'q' (
|
100
|
-
OptionParser#make_switch has the variable name 's' (
|
101
|
-
OptionParser#make_switch has the variable name 'v' (
|
92
|
+
OptionParser#make_switch contains iterators nested 2 deep (NestedIterators)
|
93
|
+
OptionParser#make_switch contains iterators nested 3 deep (NestedIterators)
|
94
|
+
OptionParser#make_switch has approx 68 statements (LongMethod)
|
95
|
+
OptionParser#make_switch has the variable name 'a' (UncommunicativeName)
|
96
|
+
OptionParser#make_switch has the variable name 'c' (UncommunicativeName)
|
97
|
+
OptionParser#make_switch has the variable name 'n' (UncommunicativeName)
|
98
|
+
OptionParser#make_switch has the variable name 'o' (UncommunicativeName)
|
99
|
+
OptionParser#make_switch has the variable name 'q' (UncommunicativeName)
|
100
|
+
OptionParser#make_switch has the variable name 's' (UncommunicativeName)
|
101
|
+
OptionParser#make_switch has the variable name 'v' (UncommunicativeName)
|
102
102
|
OptionParser#order calls argv[0] twice (Duplication)
|
103
|
-
OptionParser#order refers to argv more than self (
|
103
|
+
OptionParser#order refers to argv more than self (LowCohesion)
|
104
104
|
OptionParser#parse calls argv[0] twice (Duplication)
|
105
|
-
OptionParser#parse refers to argv more than self (
|
105
|
+
OptionParser#parse refers to argv more than self (LowCohesion)
|
106
106
|
OptionParser#parse_in_order calls $!.set_option(arg, true) twice (Duplication)
|
107
107
|
OptionParser#parse_in_order calls cb.call(val) twice (Duplication)
|
108
108
|
OptionParser#parse_in_order calls raise($!.set_option(arg, true)) twice (Duplication)
|
@@ -110,48 +110,48 @@ Feature: Basic smell detection
|
|
110
110
|
OptionParser#parse_in_order calls setter.call(sw.switch_name, val) twice (Duplication)
|
111
111
|
OptionParser#parse_in_order calls sw.block twice (Duplication)
|
112
112
|
OptionParser#parse_in_order calls sw.switch_name twice (Duplication)
|
113
|
-
OptionParser#parse_in_order contains iterators nested 2 deep (
|
114
|
-
OptionParser#parse_in_order contains iterators nested 3 deep (
|
115
|
-
OptionParser#parse_in_order has approx 28 statements (
|
116
|
-
OptionParser#parse_in_order is controlled by argument setter (
|
113
|
+
OptionParser#parse_in_order contains iterators nested 2 deep (NestedIterators)
|
114
|
+
OptionParser#parse_in_order contains iterators nested 3 deep (NestedIterators)
|
115
|
+
OptionParser#parse_in_order has approx 28 statements (LongMethod)
|
116
|
+
OptionParser#parse_in_order is controlled by argument setter (ControlCouple)
|
117
117
|
OptionParser#permute calls argv[0] twice (Duplication)
|
118
|
-
OptionParser#permute refers to argv more than self (
|
119
|
-
OptionParser#search has the variable name 'k' (
|
120
|
-
OptionParser#summarize has 4 parameters (
|
121
|
-
OptionParser#summarize has the variable name 'l' (
|
122
|
-
OptionParser#ver has the variable name 'v' (
|
123
|
-
OptionParser::CompletingHash#match contains iterators nested 2 deep (
|
118
|
+
OptionParser#permute refers to argv more than self (LowCohesion)
|
119
|
+
OptionParser#search has the variable name 'k' (UncommunicativeName)
|
120
|
+
OptionParser#summarize has 4 parameters (LongParameterList)
|
121
|
+
OptionParser#summarize has the variable name 'l' (UncommunicativeName)
|
122
|
+
OptionParser#ver has the variable name 'v' (UncommunicativeName)
|
123
|
+
OptionParser::CompletingHash#match contains iterators nested 2 deep (NestedIterators)
|
124
124
|
OptionParser::Completion#complete calls candidates.size twice (Duplication)
|
125
125
|
OptionParser::Completion#complete calls k.id2name twice (Duplication)
|
126
|
-
OptionParser::Completion#complete has approx 22 statements (
|
127
|
-
OptionParser::Completion#complete has boolean parameter 'icase' (
|
128
|
-
OptionParser::Completion#complete has the variable name 'k' (
|
129
|
-
OptionParser::Completion#complete has the variable name 'v' (
|
130
|
-
OptionParser::Completion#complete refers to candidates more than self (
|
131
|
-
OptionParser::List#accept has the parameter name 't' (
|
132
|
-
OptionParser::List#accept is controlled by argument pat (
|
133
|
-
OptionParser::List#accept refers to pat more than self (
|
134
|
-
OptionParser::List#add_banner refers to opt more than self (
|
135
|
-
OptionParser::List#complete has 4 parameters (
|
136
|
-
OptionParser::List#complete has boolean parameter 'icase' (
|
137
|
-
OptionParser::List#reject has the parameter name 't' (
|
138
|
-
OptionParser::List#summarize refers to opt more than self (
|
139
|
-
OptionParser::List#update has 5 parameters (
|
140
|
-
OptionParser::List#update has approx 6 statements (
|
141
|
-
OptionParser::List#update has the variable name 'o' (
|
142
|
-
OptionParser::List#update is controlled by argument lopts (
|
143
|
-
OptionParser::List#update is controlled by argument sopts (
|
144
|
-
OptionParser::ParseError#set_option is controlled by argument eq (
|
145
|
-
OptionParser::Switch#add_banner has the variable name 's' (
|
126
|
+
OptionParser::Completion#complete has approx 22 statements (LongMethod)
|
127
|
+
OptionParser::Completion#complete has boolean parameter 'icase' (ControlCouple)
|
128
|
+
OptionParser::Completion#complete has the variable name 'k' (UncommunicativeName)
|
129
|
+
OptionParser::Completion#complete has the variable name 'v' (UncommunicativeName)
|
130
|
+
OptionParser::Completion#complete refers to candidates more than self (LowCohesion)
|
131
|
+
OptionParser::List#accept has the parameter name 't' (UncommunicativeName)
|
132
|
+
OptionParser::List#accept is controlled by argument pat (ControlCouple)
|
133
|
+
OptionParser::List#accept refers to pat more than self (LowCohesion)
|
134
|
+
OptionParser::List#add_banner refers to opt more than self (LowCohesion)
|
135
|
+
OptionParser::List#complete has 4 parameters (LongParameterList)
|
136
|
+
OptionParser::List#complete has boolean parameter 'icase' (ControlCouple)
|
137
|
+
OptionParser::List#reject has the parameter name 't' (UncommunicativeName)
|
138
|
+
OptionParser::List#summarize refers to opt more than self (LowCohesion)
|
139
|
+
OptionParser::List#update has 5 parameters (LongParameterList)
|
140
|
+
OptionParser::List#update has approx 6 statements (LongMethod)
|
141
|
+
OptionParser::List#update has the variable name 'o' (UncommunicativeName)
|
142
|
+
OptionParser::List#update is controlled by argument lopts (ControlCouple)
|
143
|
+
OptionParser::List#update is controlled by argument sopts (ControlCouple)
|
144
|
+
OptionParser::ParseError#set_option is controlled by argument eq (ControlCouple)
|
145
|
+
OptionParser::Switch#add_banner has the variable name 's' (UncommunicativeName)
|
146
146
|
OptionParser::Switch#conv_arg calls conv twice (Duplication)
|
147
|
-
OptionParser::Switch#initialize has 7 parameters (
|
147
|
+
OptionParser::Switch#initialize has 7 parameters (LongParameterList)
|
148
148
|
OptionParser::Switch#parse_arg calls pattern twice (Duplication)
|
149
149
|
OptionParser::Switch#parse_arg calls s.length twice (Duplication)
|
150
|
-
OptionParser::Switch#parse_arg has approx 11 statements (
|
151
|
-
OptionParser::Switch#parse_arg has the variable name 'm' (
|
152
|
-
OptionParser::Switch#parse_arg has the variable name 's' (
|
153
|
-
OptionParser::Switch#self.guess has the variable name 't' (
|
154
|
-
OptionParser::Switch#self.incompatible_argument_styles has the parameter name 't' (
|
150
|
+
OptionParser::Switch#parse_arg has approx 11 statements (LongMethod)
|
151
|
+
OptionParser::Switch#parse_arg has the variable name 'm' (UncommunicativeName)
|
152
|
+
OptionParser::Switch#parse_arg has the variable name 's' (UncommunicativeName)
|
153
|
+
OptionParser::Switch#self.guess has the variable name 't' (UncommunicativeName)
|
154
|
+
OptionParser::Switch#self.incompatible_argument_styles has the parameter name 't' (UncommunicativeName)
|
155
155
|
OptionParser::Switch#summarize calls (indent + l) twice (Duplication)
|
156
156
|
OptionParser::Switch#summarize calls arg 4 times (Duplication)
|
157
157
|
OptionParser::Switch#summarize calls left.collect twice (Duplication)
|
@@ -160,16 +160,16 @@ Feature: Basic smell detection
|
|
160
160
|
OptionParser::Switch#summarize calls left.shift twice (Duplication)
|
161
161
|
OptionParser::Switch#summarize calls left[-1] 3 times (Duplication)
|
162
162
|
OptionParser::Switch#summarize calls s.length 3 times (Duplication)
|
163
|
-
OptionParser::Switch#summarize contains iterators nested 2 deep (
|
164
|
-
OptionParser::Switch#summarize has 5 parameters (
|
165
|
-
OptionParser::Switch#summarize has approx 25 statements (
|
166
|
-
OptionParser::Switch#summarize has the variable name 'l' (
|
167
|
-
OptionParser::Switch#summarize has the variable name 'r' (
|
168
|
-
OptionParser::Switch#summarize has the variable name 's' (
|
169
|
-
OptionParser::Switch::NoArgument#parse is controlled by argument arg (
|
170
|
-
OptionParser::Switch::OptionalArgument#parse is controlled by argument arg (
|
171
|
-
OptionParser::Switch::PlacedArgument#parse has approx 6 statements (
|
172
|
-
OptionParser::Switch::RequiredArgument#parse is controlled by argument arg (
|
163
|
+
OptionParser::Switch#summarize contains iterators nested 2 deep (NestedIterators)
|
164
|
+
OptionParser::Switch#summarize has 5 parameters (LongParameterList)
|
165
|
+
OptionParser::Switch#summarize has approx 25 statements (LongMethod)
|
166
|
+
OptionParser::Switch#summarize has the variable name 'l' (UncommunicativeName)
|
167
|
+
OptionParser::Switch#summarize has the variable name 'r' (UncommunicativeName)
|
168
|
+
OptionParser::Switch#summarize has the variable name 's' (UncommunicativeName)
|
169
|
+
OptionParser::Switch::NoArgument#parse is controlled by argument arg (ControlCouple)
|
170
|
+
OptionParser::Switch::OptionalArgument#parse is controlled by argument arg (ControlCouple)
|
171
|
+
OptionParser::Switch::PlacedArgument#parse has approx 6 statements (LongMethod)
|
172
|
+
OptionParser::Switch::RequiredArgument#parse is controlled by argument arg (ControlCouple)
|
173
173
|
|
174
174
|
"""
|
175
175
|
|
@@ -179,84 +179,84 @@ Feature: Basic smell detection
|
|
179
179
|
And it reports:
|
180
180
|
"""
|
181
181
|
spec/samples/redcloth.rb -- 97 warnings:
|
182
|
-
RedCloth has at least 44 methods (
|
183
|
-
RedCloth has the variable name 'a' (
|
184
|
-
RedCloth has the variable name 'b' (
|
185
|
-
RedCloth takes parameters [atts, cite, content, tag] to 3 methods (
|
186
|
-
RedCloth tests atts at least 6 times (
|
187
|
-
RedCloth tests codepre.zero? at least 3 times (
|
188
|
-
RedCloth tests href at least 3 times (
|
189
|
-
RedCloth tests title at least 4 times (
|
190
|
-
RedCloth#block_markdown_atx refers to text more than self (
|
191
|
-
RedCloth#block_markdown_bq has approx 6 statements (
|
192
|
-
RedCloth#block_markdown_rule refers to text more than self (
|
193
|
-
RedCloth#block_markdown_setext refers to text more than self (
|
182
|
+
RedCloth has at least 44 methods (LargeClass)
|
183
|
+
RedCloth has the variable name 'a' (UncommunicativeName)
|
184
|
+
RedCloth has the variable name 'b' (UncommunicativeName)
|
185
|
+
RedCloth takes parameters [atts, cite, content, tag] to 3 methods (DataClump)
|
186
|
+
RedCloth tests atts at least 6 times (SimulatedPolymorphism)
|
187
|
+
RedCloth tests codepre.zero? at least 3 times (SimulatedPolymorphism)
|
188
|
+
RedCloth tests href at least 3 times (SimulatedPolymorphism)
|
189
|
+
RedCloth tests title at least 4 times (SimulatedPolymorphism)
|
190
|
+
RedCloth#block_markdown_atx refers to text more than self (LowCohesion)
|
191
|
+
RedCloth#block_markdown_bq has approx 6 statements (LongMethod)
|
192
|
+
RedCloth#block_markdown_rule refers to text more than self (LowCohesion)
|
193
|
+
RedCloth#block_markdown_setext refers to text more than self (LowCohesion)
|
194
194
|
RedCloth#block_textile_lists calls (line_id - 1) twice (Duplication)
|
195
195
|
RedCloth#block_textile_lists calls depth.last 5 times (Duplication)
|
196
196
|
RedCloth#block_textile_lists calls depth.last.length twice (Duplication)
|
197
197
|
RedCloth#block_textile_lists calls depth[i] twice (Duplication)
|
198
198
|
RedCloth#block_textile_lists calls lines[(line_id - 1)] twice (Duplication)
|
199
199
|
RedCloth#block_textile_lists calls tl.length 3 times (Duplication)
|
200
|
-
RedCloth#block_textile_lists contains iterators nested 3 deep (
|
201
|
-
RedCloth#block_textile_lists has approx 20 statements (
|
202
|
-
RedCloth#block_textile_lists has the variable name 'i' (
|
203
|
-
RedCloth#block_textile_lists has the variable name 'v' (
|
204
|
-
RedCloth#block_textile_lists refers to depth more than self (
|
205
|
-
RedCloth#block_textile_table contains iterators nested 2 deep (
|
206
|
-
RedCloth#block_textile_table contains iterators nested 3 deep (
|
207
|
-
RedCloth#block_textile_table has approx 18 statements (
|
208
|
-
RedCloth#block_textile_table has the variable name 'x' (
|
209
|
-
RedCloth#blocks contains iterators nested 2 deep (
|
210
|
-
RedCloth#blocks has approx 18 statements (
|
211
|
-
RedCloth#blocks has boolean parameter 'deep_code' (
|
212
|
-
RedCloth#blocks is controlled by argument deep_code (
|
213
|
-
RedCloth#check_refs is controlled by argument text (
|
200
|
+
RedCloth#block_textile_lists contains iterators nested 3 deep (NestedIterators)
|
201
|
+
RedCloth#block_textile_lists has approx 20 statements (LongMethod)
|
202
|
+
RedCloth#block_textile_lists has the variable name 'i' (UncommunicativeName)
|
203
|
+
RedCloth#block_textile_lists has the variable name 'v' (UncommunicativeName)
|
204
|
+
RedCloth#block_textile_lists refers to depth more than self (LowCohesion)
|
205
|
+
RedCloth#block_textile_table contains iterators nested 2 deep (NestedIterators)
|
206
|
+
RedCloth#block_textile_table contains iterators nested 3 deep (NestedIterators)
|
207
|
+
RedCloth#block_textile_table has approx 18 statements (LongMethod)
|
208
|
+
RedCloth#block_textile_table has the variable name 'x' (UncommunicativeName)
|
209
|
+
RedCloth#blocks contains iterators nested 2 deep (NestedIterators)
|
210
|
+
RedCloth#blocks has approx 18 statements (LongMethod)
|
211
|
+
RedCloth#blocks has boolean parameter 'deep_code' (ControlCouple)
|
212
|
+
RedCloth#blocks is controlled by argument deep_code (ControlCouple)
|
213
|
+
RedCloth#check_refs is controlled by argument text (ControlCouple)
|
214
214
|
RedCloth#clean_html calls tags[tag] twice (Duplication)
|
215
|
-
RedCloth#clean_html contains iterators nested 3 deep (
|
216
|
-
RedCloth#clean_html doesn't depend on instance state (
|
217
|
-
RedCloth#clean_html has approx 14 statements (
|
218
|
-
RedCloth#clean_html has the variable name 'q' (
|
219
|
-
RedCloth#clean_html has the variable name 'q2' (
|
220
|
-
RedCloth#clean_html refers to raw more than self (
|
221
|
-
RedCloth#clean_html refers to tags more than self (
|
222
|
-
RedCloth#clean_white_space has approx 7 statements (
|
223
|
-
RedCloth#clean_white_space refers to text more than self (
|
224
|
-
RedCloth#flush_left doesn't depend on instance state (
|
225
|
-
RedCloth#flush_left refers to indt more than self (
|
226
|
-
RedCloth#flush_left refers to text more than self (
|
227
|
-
RedCloth#footnote_ref refers to text more than self (
|
228
|
-
RedCloth#glyphs_textile has approx 10 statements (
|
229
|
-
RedCloth#htmlesc doesn't depend on instance state (
|
230
|
-
RedCloth#htmlesc refers to str more than self (
|
231
|
-
RedCloth#incoming_entities refers to text more than self (
|
232
|
-
RedCloth#initialize has the variable name 'r' (
|
233
|
-
RedCloth#inline contains iterators nested 2 deep (
|
234
|
-
RedCloth#inline_markdown_link has approx 6 statements (
|
235
|
-
RedCloth#inline_markdown_link has the variable name 'm' (
|
236
|
-
RedCloth#inline_markdown_reflink has approx 8 statements (
|
237
|
-
RedCloth#inline_markdown_reflink has the variable name 'm' (
|
238
|
-
RedCloth#inline_textile_code has the variable name 'm' (
|
239
|
-
RedCloth#inline_textile_image has approx 17 statements (
|
240
|
-
RedCloth#inline_textile_image has the variable name 'href_a1' (
|
241
|
-
RedCloth#inline_textile_image has the variable name 'href_a2' (
|
242
|
-
RedCloth#inline_textile_image has the variable name 'm' (
|
243
|
-
RedCloth#inline_textile_link has approx 9 statements (
|
244
|
-
RedCloth#inline_textile_link has the variable name 'm' (
|
245
|
-
RedCloth#inline_textile_span contains iterators nested 2 deep (
|
246
|
-
RedCloth#inline_textile_span has approx 8 statements (
|
247
|
-
RedCloth#inline_textile_span has the variable name 'm' (
|
248
|
-
RedCloth#lT has the name 'lT' (
|
249
|
-
RedCloth#no_textile doesn't depend on instance state (
|
250
|
-
RedCloth#no_textile refers to text more than self (
|
215
|
+
RedCloth#clean_html contains iterators nested 3 deep (NestedIterators)
|
216
|
+
RedCloth#clean_html doesn't depend on instance state (LowCohesion)
|
217
|
+
RedCloth#clean_html has approx 14 statements (LongMethod)
|
218
|
+
RedCloth#clean_html has the variable name 'q' (UncommunicativeName)
|
219
|
+
RedCloth#clean_html has the variable name 'q2' (UncommunicativeName)
|
220
|
+
RedCloth#clean_html refers to raw more than self (LowCohesion)
|
221
|
+
RedCloth#clean_html refers to tags more than self (LowCohesion)
|
222
|
+
RedCloth#clean_white_space has approx 7 statements (LongMethod)
|
223
|
+
RedCloth#clean_white_space refers to text more than self (LowCohesion)
|
224
|
+
RedCloth#flush_left doesn't depend on instance state (LowCohesion)
|
225
|
+
RedCloth#flush_left refers to indt more than self (LowCohesion)
|
226
|
+
RedCloth#flush_left refers to text more than self (LowCohesion)
|
227
|
+
RedCloth#footnote_ref refers to text more than self (LowCohesion)
|
228
|
+
RedCloth#glyphs_textile has approx 10 statements (LongMethod)
|
229
|
+
RedCloth#htmlesc doesn't depend on instance state (LowCohesion)
|
230
|
+
RedCloth#htmlesc refers to str more than self (LowCohesion)
|
231
|
+
RedCloth#incoming_entities refers to text more than self (LowCohesion)
|
232
|
+
RedCloth#initialize has the variable name 'r' (UncommunicativeName)
|
233
|
+
RedCloth#inline contains iterators nested 2 deep (NestedIterators)
|
234
|
+
RedCloth#inline_markdown_link has approx 6 statements (LongMethod)
|
235
|
+
RedCloth#inline_markdown_link has the variable name 'm' (UncommunicativeName)
|
236
|
+
RedCloth#inline_markdown_reflink has approx 8 statements (LongMethod)
|
237
|
+
RedCloth#inline_markdown_reflink has the variable name 'm' (UncommunicativeName)
|
238
|
+
RedCloth#inline_textile_code has the variable name 'm' (UncommunicativeName)
|
239
|
+
RedCloth#inline_textile_image has approx 17 statements (LongMethod)
|
240
|
+
RedCloth#inline_textile_image has the variable name 'href_a1' (UncommunicativeName)
|
241
|
+
RedCloth#inline_textile_image has the variable name 'href_a2' (UncommunicativeName)
|
242
|
+
RedCloth#inline_textile_image has the variable name 'm' (UncommunicativeName)
|
243
|
+
RedCloth#inline_textile_link has approx 9 statements (LongMethod)
|
244
|
+
RedCloth#inline_textile_link has the variable name 'm' (UncommunicativeName)
|
245
|
+
RedCloth#inline_textile_span contains iterators nested 2 deep (NestedIterators)
|
246
|
+
RedCloth#inline_textile_span has approx 8 statements (LongMethod)
|
247
|
+
RedCloth#inline_textile_span has the variable name 'm' (UncommunicativeName)
|
248
|
+
RedCloth#lT has the name 'lT' (UncommunicativeName)
|
249
|
+
RedCloth#no_textile doesn't depend on instance state (LowCohesion)
|
250
|
+
RedCloth#no_textile refers to text more than self (LowCohesion)
|
251
251
|
RedCloth#pba calls $1.length twice (Duplication)
|
252
|
-
RedCloth#pba has approx 21 statements (
|
253
|
-
RedCloth#pba is controlled by argument text_in (
|
254
|
-
RedCloth#pba refers to style more than self (
|
255
|
-
RedCloth#pba refers to text more than self (
|
256
|
-
RedCloth#refs_markdown has the variable name 'm' (
|
257
|
-
RedCloth#refs_textile has the variable name 'm' (
|
258
|
-
RedCloth#retrieve has the variable name 'i' (
|
259
|
-
RedCloth#retrieve has the variable name 'r' (
|
252
|
+
RedCloth#pba has approx 21 statements (LongMethod)
|
253
|
+
RedCloth#pba is controlled by argument text_in (ControlCouple)
|
254
|
+
RedCloth#pba refers to style more than self (LowCohesion)
|
255
|
+
RedCloth#pba refers to text more than self (LowCohesion)
|
256
|
+
RedCloth#refs_markdown has the variable name 'm' (UncommunicativeName)
|
257
|
+
RedCloth#refs_textile has the variable name 'm' (UncommunicativeName)
|
258
|
+
RedCloth#retrieve has the variable name 'i' (UncommunicativeName)
|
259
|
+
RedCloth#retrieve has the variable name 'r' (UncommunicativeName)
|
260
260
|
RedCloth#rip_offtags calls ((codepre - used_offtags.length) > 0) twice (Duplication)
|
261
261
|
RedCloth#rip_offtags calls (@pre_list.last << line) twice (Duplication)
|
262
262
|
RedCloth#rip_offtags calls (codepre - used_offtags.length) twice (Duplication)
|
@@ -265,16 +265,16 @@ Feature: Basic smell detection
|
|
265
265
|
RedCloth#rip_offtags calls htmlesc(line, :NoQuotes) twice (Duplication)
|
266
266
|
RedCloth#rip_offtags calls used_offtags.length twice (Duplication)
|
267
267
|
RedCloth#rip_offtags calls used_offtags["notextile"] 3 times (Duplication)
|
268
|
-
RedCloth#rip_offtags has approx 18 statements (
|
269
|
-
RedCloth#textile_bq has 4 parameters (
|
270
|
-
RedCloth#textile_bq is controlled by argument atts (
|
271
|
-
RedCloth#textile_bq is controlled by argument cite (
|
272
|
-
RedCloth#textile_fn_ has 5 parameters (
|
273
|
-
RedCloth#textile_fn_ is controlled by argument atts (
|
274
|
-
RedCloth#textile_p has 4 parameters (
|
275
|
-
RedCloth#textile_p is controlled by argument atts (
|
276
|
-
RedCloth#textile_popup_help has the parameter name 'windowH' (
|
277
|
-
RedCloth#textile_popup_help has the parameter name 'windowW' (
|
278
|
-
RedCloth#to_html has approx 24 statements (
|
268
|
+
RedCloth#rip_offtags has approx 18 statements (LongMethod)
|
269
|
+
RedCloth#textile_bq has 4 parameters (LongParameterList)
|
270
|
+
RedCloth#textile_bq is controlled by argument atts (ControlCouple)
|
271
|
+
RedCloth#textile_bq is controlled by argument cite (ControlCouple)
|
272
|
+
RedCloth#textile_fn_ has 5 parameters (LongParameterList)
|
273
|
+
RedCloth#textile_fn_ is controlled by argument atts (ControlCouple)
|
274
|
+
RedCloth#textile_p has 4 parameters (LongParameterList)
|
275
|
+
RedCloth#textile_p is controlled by argument atts (ControlCouple)
|
276
|
+
RedCloth#textile_popup_help has the parameter name 'windowH' (UncommunicativeName)
|
277
|
+
RedCloth#textile_popup_help has the parameter name 'windowW' (UncommunicativeName)
|
278
|
+
RedCloth#to_html has approx 24 statements (LongMethod)
|
279
279
|
|
280
280
|
"""
|