kevinrutherford / reek

Code smell detector for Ruby

This URL has Read+Write access

Thu Nov 12 13:21:35 -0800 2009
commit  46d3caf38332941769ec9cbefc92d9ecafd0ebd9
tree    e73bb481d1803893e43db396f4a1ae47e45106d3
parent  4f597917fdce65c0cd14abacecbc6091d85cade2
reek / History.txt
100644 190 lines (143 sloc) 6.558 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
== 1.2.4 (under development in github)
 
=== Major Changes
* The -f, -c and -s options for formatting smell warnings have been removed
 
=== Minor Changes
 
== 1.2.3 (2009-11-2)
 
=== Minor Changes
* New smell: Attribute (disabled by default)
* Expanded DataClump to check modules (#9)
* Fixed LargeClass to ignore inner classes and modules
* Fixed LargeClass to ignore singleton methods
* Removed support for MyClass.should_not reek due to ParseTree EOL
* Removed internal requiring of 'rubygems'
 
== 1.2.1 (2009-10-02)
 
=== Minor Changes
* New smell: Class Variable
 
See http://wiki.github.com/kevinrutherford/reek for details
 
== 1.2 2009-09-20
 
=== Major Changes
* Reek passes all its tests under ruby 1.8.6, 1.8.7 and 1.9.1 (fixed #16)
* New smell -- Data Clump:
** Looks within a class for 3 or more methods taking the same 2 or more parameters
* New smell -- Simulated Polymorphism:
** Currently only performs basic check for multiple tests of same value
* Reek's output reports are now formatted differently:
** Reek is no longer silent about smell-free source code
** Output now reports on all files examined, even if they have no smells
** Smell warnings are indented in the report; file summary headers are not
** Reports for multiple sources are run together; no more blank lines
** Reports in spec matcher failures are quiet (fixed #38)
* The smells masked by *.reek config files can now be seen:
** The header for each source file now counts masked smells
** The --show-all (-a) option shows masked warnings in the report
* The spec matchers are now accessed by requiring 'reek/adapters/spec'
 
=== Minor Changes
* Reek's RDoc is now hosted at http://rdoc.info/projects/kevinrutherford/reek
* If a dir is passed on the command-line all **/*.rb files below it are examined (fixed #41)
* Duplication warnings now report the number of identical calls
* FeatureEnvy no longer ignores :self when passed as a method parameter
* LargeClass is disabled when checking in-memory classes (fixed #28)
* LongParameterList accepts upto 5 parameters for #initialize methods
* Several changes to the LongMethod counting algorithm:
** LongMethod now counts statements deeper into each method (fixed #25)
** LongMethod no longer counts control structures, only their contained stmts
** See http://wiki.github.com/kevinrutherford/reek/long-method for details
* UncommunicativeName warns about any name ending in a number (fixed #18)
* UtilityFunction has been relaxed somewhat:
** no longer reports methods that call 'super' (fixed #39)
** no longer reports simple helper methods
** can be configured based on number of calls out
* Now reports an error for corrupt config files
* Empty config files are ignored
* Smells can be configured with scope-specific overrides for any config item
 
 
== 1.1.3 2009-05-19
 
=== Minor Changes
* No longer depends directly on the sexp_processor gem
 
=== Fixes
* LargeClass now relies only on the given source code (fixed #26)
 
== 1.1.2 2009-05-18
 
=== Major Enhancements
* Switched from ParseTree to ruby_parser for source code parsing
* 'MyClass.should_not reek' now only possible if ParseTree gem installed
 
== 1.1.1 2009-05-08
 
=== Minor enhancements
* LargeClass now also warns about any class with > 9 instance variables (fixed #6)
* Now depends on ruby2ruby, to display code better
* Duplication notices more repeated method calls
* Smells within blocks are now reported better
 
== 1.1.0 2009-04-10
 
=== Minor enhancements
* Now possible to write 'MyClass.should_not reek' (fixed #33)
 
=== Fixes
* Now counts attr assignments ([]= etc) in feature envy calculations
* Doesn't attempt to find *.reek files when reading code from stdin
 
== 1.0.1 2009-04-06
 
=== Fixes
* Dir[...].to_source now creates a Report that can be browsed (fixed #36)
 
== 1.0.0 2009-04-05
 
=== Major enhancements
* Use *.reek files in source tree to configure Reek's behaviour
* Added -f option to configure report format
* --sort_order replaced by -f, -c and -s
* Matchers provided for rspec; eg. foo.should_not reek
 
=== Minor enhancements
* Smells in singleton methods are now analysed
* Uncommunicative parameter names in blocks now reported
* Modules and blocks now reflected in scope of smell reports
 
=== Fixes
* Corrected false reports of long arg lists to yield
* A method can now be a UtilityFunction only when it includes a call
 
== 0.3.1 2008-11-17
 
=== Minor enhancements
* Uncommunicative Name now checks instance variables more thoroughly
* Uncommunicative Name now warns about names of the form 'x2'
* Added check for duplicated calls within a method
* Reduced scope of Feature Envy warnings to cover only overuse of lvars
* Added rdoc comments explaining what each smell is about
* Chained iterators are no longer mis-reported as nested
 
== 0.3.0 2008-11-02
 
=== Minor enhancements
* New smell: first naive checks for Control Couple
* reek now only checks sources passed on the command line
* Code snippets can be supplied on the commandline
* Added headings and warnings count when smells in multiple files
* Added Reek::RakeTask to run reek from rakefiles
 
=== Fixes
* Fixed: Returns exit status 2 when smells are reported
* Fixed: no longer claims an empty method is a Utility Function
 
== 0.2.3 2008-09-22
 
* Minor enhancements:
  * Only reports Feature Envy when the method isn't a Utility Function
  * General improvements to assessing Feature Envy
* Tweaks:
  * Fixed: coping with parameterless yield call
  * Fixed: copes with :self as an expression
  * Fixed: displaying the receiver of many more kinds of Feature Envy
  * Fixed: Large Class calculation for Object
 
== 0.2.2 2008-09-15
 
* Tweaks:
  * Fixed --version!
 
== 0.2.1 2008-09-14
 
* Tweaks:
  * Now works from the source code, instead of requiring each named file
  * Added integration tests that run reek on a couple of gems
 
== 0.2.0 2008-09-10
 
* Minor enhancements:
  * Added --help, --version options
  * Added --sort option to sort the report by smell or by code location
 
== 0.1.1 2008-09-09
 
* Some tweaks:
  * Fixed report printing for Feature Envy when the receiver is a block
  * Fixed: successive iterators reported as nested
  * Fixed: Long Method now reports the total length of the method
  * Fixed: each smell reported only once
 
== 0.1.0 2008-09-09
 
* 1 minor enhancement:
  * Added a check for nested iterators within a method
* Some tweaks:
  * Begun adding some rdoc
  * Split some of the specs into more meaningful chunks
  * Updated the rakefile so that rcov is no longer the default
 
== 0.0.1 2008-09-08
 
* 1 major enhancement:
  * Initial release