reek 1.2.7.2 → 1.2.7.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/History.txt +9 -1
  2. data/config/defaults.reek +4 -4
  3. data/features/masking_smells.feature +14 -57
  4. data/features/options.feature +1 -2
  5. data/features/rake_task.feature +6 -6
  6. data/features/reports.feature +8 -38
  7. data/features/samples.feature +181 -181
  8. data/features/stdin.feature +3 -3
  9. data/lib/reek.rb +1 -1
  10. data/lib/reek/cli/command_line.rb +2 -7
  11. data/lib/reek/cli/reek_command.rb +6 -6
  12. data/lib/reek/cli/report.rb +27 -49
  13. data/lib/reek/core/code_parser.rb +6 -15
  14. data/lib/reek/core/method_context.rb +1 -1
  15. data/lib/reek/core/module_context.rb +0 -18
  16. data/lib/reek/core/smell_configuration.rb +0 -4
  17. data/lib/reek/core/sniffer.rb +11 -19
  18. data/lib/reek/core/warning_collector.rb +27 -0
  19. data/lib/reek/examiner.rb +43 -35
  20. data/lib/reek/rake/task.rb +2 -0
  21. data/lib/reek/smell_warning.rb +10 -25
  22. data/lib/reek/smells/boolean_parameter.rb +1 -1
  23. data/lib/reek/smells/control_couple.rb +4 -1
  24. data/lib/reek/smells/data_clump.rb +40 -33
  25. data/lib/reek/smells/feature_envy.rb +1 -1
  26. data/lib/reek/smells/long_parameter_list.rb +4 -1
  27. data/lib/reek/smells/long_yield_list.rb +6 -3
  28. data/lib/reek/smells/simulated_polymorphism.rb +1 -1
  29. data/lib/reek/smells/smell_detector.rb +4 -32
  30. data/lib/reek/smells/uncommunicative_method_name.rb +1 -1
  31. data/lib/reek/smells/uncommunicative_module_name.rb +1 -1
  32. data/lib/reek/smells/uncommunicative_parameter_name.rb +2 -2
  33. data/lib/reek/smells/uncommunicative_variable_name.rb +11 -18
  34. data/lib/reek/smells/utility_function.rb +7 -4
  35. data/lib/reek/source/reference_collector.rb +9 -2
  36. data/lib/reek/source/source_locator.rb +6 -0
  37. data/lib/reek/spec/should_reek.rb +3 -6
  38. data/lib/reek/spec/should_reek_only_of.rb +4 -3
  39. data/reek.gemspec +4 -4
  40. data/spec/reek/cli/reek_command_spec.rb +3 -4
  41. data/spec/reek/cli/report_spec.rb +10 -6
  42. data/spec/reek/cli/yaml_command_spec.rb +1 -1
  43. data/spec/reek/core/code_context_spec.rb +1 -3
  44. data/spec/reek/core/module_context_spec.rb +1 -1
  45. data/spec/reek/core/warning_collector_spec.rb +27 -0
  46. data/spec/reek/examiner_spec.rb +80 -19
  47. data/spec/reek/smell_warning_spec.rb +4 -61
  48. data/spec/reek/smells/attribute_spec.rb +4 -7
  49. data/spec/reek/smells/behaves_like_variable_detector.rb +2 -2
  50. data/spec/reek/smells/class_variable_spec.rb +0 -1
  51. data/spec/reek/smells/control_couple_spec.rb +8 -15
  52. data/spec/reek/smells/data_clump_spec.rb +85 -1
  53. data/spec/reek/smells/duplication_spec.rb +7 -8
  54. data/spec/reek/smells/feature_envy_spec.rb +2 -32
  55. data/spec/reek/smells/long_parameter_list_spec.rb +9 -16
  56. data/spec/reek/smells/long_yield_list_spec.rb +8 -15
  57. data/spec/reek/smells/smell_detector_shared.rb +12 -0
  58. data/spec/reek/smells/uncommunicative_variable_name_spec.rb +9 -10
  59. data/spec/reek/smells/utility_function_spec.rb +11 -15
  60. data/spec/reek/spec/should_reek_only_of_spec.rb +6 -6
  61. data/spec/reek/spec/should_reek_spec.rb +3 -3
  62. metadata +36 -22
  63. data/lib/reek/core/class_context.rb +0 -22
  64. data/lib/reek/core/detector_stack.rb +0 -33
  65. data/lib/reek/core/masking_collection.rb +0 -52
  66. data/spec/reek/core/class_context_spec.rb +0 -53
  67. data/spec/reek/core/masking_collection_spec.rb +0 -235
@@ -1,4 +1,12 @@
1
- == 1.2.8 (in development)
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
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  UncommunicativeParameterName:
3
- accept:
4
- - Inline::C
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
- - Inline::C
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' (Uncommunicative Name)
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 (Nested Iterators)
17
- Dirty#a has the name 'a' (Uncommunicative Name)
18
- Dirty#a has the variable name 'x' (Uncommunicative Name)
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 (Irresponsible Module)
29
- Dirty has the variable name '@s' (Uncommunicative Name)
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 (Nested Iterators)
33
- Dirty#a has the name 'a' (Uncommunicative Name)
34
- Dirty#a has the variable name 'x' (Uncommunicative Name)
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 (Nested Iterators)
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 (Nested Iterators)
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' (Uncommunicative Name)
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 (Nested Iterators)
101
- Dirty#a has the name 'a' (Uncommunicative Name)
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
- """
@@ -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 -a lib
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
 
@@ -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 (Nested Iterators)
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 (Nested Iterators)
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' (Uncommunicative Name)
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 (Nested Iterators)
65
- Dirty#a has the name 'a' (Uncommunicative Name)
66
- Dirty#a has the variable name 'x' (Uncommunicative Name)
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
  """
@@ -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' (Uncommunicative Name)
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 (Nested Iterators)
17
- Dirty#a has the name 'a' (Uncommunicative Name)
18
- Dirty#a has the variable name 'x' (Uncommunicative Name)
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' (Uncommunicative Name)
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 (Nested Iterators)
24
- Dirty#a has the name 'a' (Uncommunicative Name)
25
- Dirty#a has the variable name 'x' (Uncommunicative Name)
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 |
@@ -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 (Irresponsible Module)
15
- Inline declares the class variable @@directory (Class Variable)
16
- Inline declares the class variable @@rootdir (Class Variable)
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 (Long Method)
19
- Inline::C declares the class variable @@type_map (Class Variable)
20
- Inline::C has at least 13 instance variables (Large Class)
21
- Inline::C takes parameters [options, src] to 5 methods (Data Clump)
22
- Inline::C tests $DEBUG at least 7 times (Simulated Polymorphism)
23
- Inline::C tests $TESTING at least 4 times (Simulated Polymorphism)
24
- Inline::C tests @@type_map.has_key?(type) at least 3 times (Simulated Polymorphism)
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 (Nested Iterators)
33
- Inline::C#build has approx 60 statements (Long Method)
34
- Inline::C#build has the variable name 'n' (Uncommunicative Name)
35
- Inline::C#build has the variable name 't' (Uncommunicative Name)
36
- Inline::C#c has the name 'c' (Uncommunicative Name)
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 (Long Method)
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' (Uncommunicative Name)
45
- Inline::C#module_name has the variable name 'x' (Uncommunicative Name)
46
- Inline::C#parse_signature has approx 15 statements (Long Method)
47
- Inline::C#parse_signature has boolean parameter 'raw' (Control Couple)
48
- Inline::C#parse_signature has the variable name 'x' (Uncommunicative Name)
49
- Inline::C#parse_signature is controlled by argument raw (Control Couple)
50
- Inline::C#strip_comments doesn't depend on instance state (Low Cohesion)
51
- Inline::C#strip_comments refers to src more than self (Low Cohesion)
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 (Long Method)
54
- Module#inline is controlled by argument options (Control Couple)
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 (Large Class)
65
- OptionParser has the variable name 'f' (Uncommunicative Name)
66
- OptionParser has the variable name 'k' (Uncommunicative Name)
67
- OptionParser has the variable name 'o' (Uncommunicative Name)
68
- OptionParser has the variable name 's' (Uncommunicative Name)
69
- OptionParser has the variable name 'v' (Uncommunicative Name)
70
- OptionParser tests ((argv.size == 1) and Array.===(argv[0])) at least 3 times (Simulated Polymorphism)
71
- OptionParser tests a at least 7 times (Simulated Polymorphism)
72
- OptionParser tests default_pattern at least 7 times (Simulated Polymorphism)
73
- OptionParser tests not_style at least 3 times (Simulated Polymorphism)
74
- OptionParser tests s at least 7 times (Simulated Polymorphism)
75
- OptionParser#complete contains iterators nested 2 deep (Nested Iterators)
76
- OptionParser#complete has 4 parameters (Long Parameter List)
77
- OptionParser#complete has boolean parameter 'icase' (Control Couple)
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 (Long Method)
80
- OptionParser#load has the variable name 's' (Uncommunicative Name)
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 (Nested Iterators)
93
- OptionParser#make_switch contains iterators nested 3 deep (Nested Iterators)
94
- OptionParser#make_switch has approx 68 statements (Long Method)
95
- OptionParser#make_switch has the variable name 'a' (Uncommunicative Name)
96
- OptionParser#make_switch has the variable name 'c' (Uncommunicative Name)
97
- OptionParser#make_switch has the variable name 'n' (Uncommunicative Name)
98
- OptionParser#make_switch has the variable name 'o' (Uncommunicative Name)
99
- OptionParser#make_switch has the variable name 'q' (Uncommunicative Name)
100
- OptionParser#make_switch has the variable name 's' (Uncommunicative Name)
101
- OptionParser#make_switch has the variable name 'v' (Uncommunicative Name)
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 (Low Cohesion)
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 (Low Cohesion)
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 (Nested Iterators)
114
- OptionParser#parse_in_order contains iterators nested 3 deep (Nested Iterators)
115
- OptionParser#parse_in_order has approx 28 statements (Long Method)
116
- OptionParser#parse_in_order is controlled by argument setter (Control Couple)
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 (Low Cohesion)
119
- OptionParser#search has the variable name 'k' (Uncommunicative Name)
120
- OptionParser#summarize has 4 parameters (Long Parameter List)
121
- OptionParser#summarize has the variable name 'l' (Uncommunicative Name)
122
- OptionParser#ver has the variable name 'v' (Uncommunicative Name)
123
- OptionParser::CompletingHash#match contains iterators nested 2 deep (Nested Iterators)
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 (Long Method)
127
- OptionParser::Completion#complete has boolean parameter 'icase' (Control Couple)
128
- OptionParser::Completion#complete has the variable name 'k' (Uncommunicative Name)
129
- OptionParser::Completion#complete has the variable name 'v' (Uncommunicative Name)
130
- OptionParser::Completion#complete refers to candidates more than self (Low Cohesion)
131
- OptionParser::List#accept has the parameter name 't' (Uncommunicative Name)
132
- OptionParser::List#accept is controlled by argument pat (Control Couple)
133
- OptionParser::List#accept refers to pat more than self (Low Cohesion)
134
- OptionParser::List#add_banner refers to opt more than self (Low Cohesion)
135
- OptionParser::List#complete has 4 parameters (Long Parameter List)
136
- OptionParser::List#complete has boolean parameter 'icase' (Control Couple)
137
- OptionParser::List#reject has the parameter name 't' (Uncommunicative Name)
138
- OptionParser::List#summarize refers to opt more than self (Low Cohesion)
139
- OptionParser::List#update has 5 parameters (Long Parameter List)
140
- OptionParser::List#update has approx 6 statements (Long Method)
141
- OptionParser::List#update has the variable name 'o' (Uncommunicative Name)
142
- OptionParser::List#update is controlled by argument lopts (Control Couple)
143
- OptionParser::List#update is controlled by argument sopts (Control Couple)
144
- OptionParser::ParseError#set_option is controlled by argument eq (Control Couple)
145
- OptionParser::Switch#add_banner has the variable name 's' (Uncommunicative Name)
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 (Long Parameter List)
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 (Long Method)
151
- OptionParser::Switch#parse_arg has the variable name 'm' (Uncommunicative Name)
152
- OptionParser::Switch#parse_arg has the variable name 's' (Uncommunicative Name)
153
- OptionParser::Switch#self.guess has the variable name 't' (Uncommunicative Name)
154
- OptionParser::Switch#self.incompatible_argument_styles has the parameter name 't' (Uncommunicative Name)
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 (Nested Iterators)
164
- OptionParser::Switch#summarize has 5 parameters (Long Parameter List)
165
- OptionParser::Switch#summarize has approx 25 statements (Long Method)
166
- OptionParser::Switch#summarize has the variable name 'l' (Uncommunicative Name)
167
- OptionParser::Switch#summarize has the variable name 'r' (Uncommunicative Name)
168
- OptionParser::Switch#summarize has the variable name 's' (Uncommunicative Name)
169
- OptionParser::Switch::NoArgument#parse is controlled by argument arg (Control Couple)
170
- OptionParser::Switch::OptionalArgument#parse is controlled by argument arg (Control Couple)
171
- OptionParser::Switch::PlacedArgument#parse has approx 6 statements (Long Method)
172
- OptionParser::Switch::RequiredArgument#parse is controlled by argument arg (Control Couple)
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 (Large Class)
183
- RedCloth has the variable name 'a' (Uncommunicative Name)
184
- RedCloth has the variable name 'b' (Uncommunicative Name)
185
- RedCloth takes parameters [atts, cite, content, tag] to 3 methods (Data Clump)
186
- RedCloth tests atts at least 6 times (Simulated Polymorphism)
187
- RedCloth tests codepre.zero? at least 3 times (Simulated Polymorphism)
188
- RedCloth tests href at least 3 times (Simulated Polymorphism)
189
- RedCloth tests title at least 4 times (Simulated Polymorphism)
190
- RedCloth#block_markdown_atx refers to text more than self (Low Cohesion)
191
- RedCloth#block_markdown_bq has approx 6 statements (Long Method)
192
- RedCloth#block_markdown_rule refers to text more than self (Low Cohesion)
193
- RedCloth#block_markdown_setext refers to text more than self (Low Cohesion)
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 (Nested Iterators)
201
- RedCloth#block_textile_lists has approx 20 statements (Long Method)
202
- RedCloth#block_textile_lists has the variable name 'i' (Uncommunicative Name)
203
- RedCloth#block_textile_lists has the variable name 'v' (Uncommunicative Name)
204
- RedCloth#block_textile_lists refers to depth more than self (Low Cohesion)
205
- RedCloth#block_textile_table contains iterators nested 2 deep (Nested Iterators)
206
- RedCloth#block_textile_table contains iterators nested 3 deep (Nested Iterators)
207
- RedCloth#block_textile_table has approx 18 statements (Long Method)
208
- RedCloth#block_textile_table has the variable name 'x' (Uncommunicative Name)
209
- RedCloth#blocks contains iterators nested 2 deep (Nested Iterators)
210
- RedCloth#blocks has approx 18 statements (Long Method)
211
- RedCloth#blocks has boolean parameter 'deep_code' (Control Couple)
212
- RedCloth#blocks is controlled by argument deep_code (Control Couple)
213
- RedCloth#check_refs is controlled by argument text (Control Couple)
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 (Nested Iterators)
216
- RedCloth#clean_html doesn't depend on instance state (Low Cohesion)
217
- RedCloth#clean_html has approx 14 statements (Long Method)
218
- RedCloth#clean_html has the variable name 'q' (Uncommunicative Name)
219
- RedCloth#clean_html has the variable name 'q2' (Uncommunicative Name)
220
- RedCloth#clean_html refers to raw more than self (Low Cohesion)
221
- RedCloth#clean_html refers to tags more than self (Low Cohesion)
222
- RedCloth#clean_white_space has approx 7 statements (Long Method)
223
- RedCloth#clean_white_space refers to text more than self (Low Cohesion)
224
- RedCloth#flush_left doesn't depend on instance state (Low Cohesion)
225
- RedCloth#flush_left refers to indt more than self (Low Cohesion)
226
- RedCloth#flush_left refers to text more than self (Low Cohesion)
227
- RedCloth#footnote_ref refers to text more than self (Low Cohesion)
228
- RedCloth#glyphs_textile has approx 10 statements (Long Method)
229
- RedCloth#htmlesc doesn't depend on instance state (Low Cohesion)
230
- RedCloth#htmlesc refers to str more than self (Low Cohesion)
231
- RedCloth#incoming_entities refers to text more than self (Low Cohesion)
232
- RedCloth#initialize has the variable name 'r' (Uncommunicative Name)
233
- RedCloth#inline contains iterators nested 2 deep (Nested Iterators)
234
- RedCloth#inline_markdown_link has approx 6 statements (Long Method)
235
- RedCloth#inline_markdown_link has the variable name 'm' (Uncommunicative Name)
236
- RedCloth#inline_markdown_reflink has approx 8 statements (Long Method)
237
- RedCloth#inline_markdown_reflink has the variable name 'm' (Uncommunicative Name)
238
- RedCloth#inline_textile_code has the variable name 'm' (Uncommunicative Name)
239
- RedCloth#inline_textile_image has approx 17 statements (Long Method)
240
- RedCloth#inline_textile_image has the variable name 'href_a1' (Uncommunicative Name)
241
- RedCloth#inline_textile_image has the variable name 'href_a2' (Uncommunicative Name)
242
- RedCloth#inline_textile_image has the variable name 'm' (Uncommunicative Name)
243
- RedCloth#inline_textile_link has approx 9 statements (Long Method)
244
- RedCloth#inline_textile_link has the variable name 'm' (Uncommunicative Name)
245
- RedCloth#inline_textile_span contains iterators nested 2 deep (Nested Iterators)
246
- RedCloth#inline_textile_span has approx 8 statements (Long Method)
247
- RedCloth#inline_textile_span has the variable name 'm' (Uncommunicative Name)
248
- RedCloth#lT has the name 'lT' (Uncommunicative Name)
249
- RedCloth#no_textile doesn't depend on instance state (Low Cohesion)
250
- RedCloth#no_textile refers to text more than self (Low Cohesion)
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 (Long Method)
253
- RedCloth#pba is controlled by argument text_in (Control Couple)
254
- RedCloth#pba refers to style more than self (Low Cohesion)
255
- RedCloth#pba refers to text more than self (Low Cohesion)
256
- RedCloth#refs_markdown has the variable name 'm' (Uncommunicative Name)
257
- RedCloth#refs_textile has the variable name 'm' (Uncommunicative Name)
258
- RedCloth#retrieve has the variable name 'i' (Uncommunicative Name)
259
- RedCloth#retrieve has the variable name 'r' (Uncommunicative Name)
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 (Long Method)
269
- RedCloth#textile_bq has 4 parameters (Long Parameter List)
270
- RedCloth#textile_bq is controlled by argument atts (Control Couple)
271
- RedCloth#textile_bq is controlled by argument cite (Control Couple)
272
- RedCloth#textile_fn_ has 5 parameters (Long Parameter List)
273
- RedCloth#textile_fn_ is controlled by argument atts (Control Couple)
274
- RedCloth#textile_p has 4 parameters (Long Parameter List)
275
- RedCloth#textile_p is controlled by argument atts (Control Couple)
276
- RedCloth#textile_popup_help has the parameter name 'windowH' (Uncommunicative Name)
277
- RedCloth#textile_popup_help has the parameter name 'windowW' (Uncommunicative Name)
278
- RedCloth#to_html has approx 24 statements (Long Method)
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
  """