pippi 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b69820f23560f62844335dba76692a5b29c40523
4
- data.tar.gz: bfdc9ccdd89aab53afc19f82c247c55e32f56eef
3
+ metadata.gz: 71a917fd7fe564b1259bbe2e1bd5816f99642c95
4
+ data.tar.gz: 04ee328c79590242bdf9901dfbf19128c20174fd
5
5
  SHA512:
6
- metadata.gz: 11480a7cce7761a9c2aeff77f31829872f79e577945082e1f6b7975f851b1968991d07c17eea8bbb3d28ae0e1eeceb0223edb99e578458e4fe987633a53b3ff1
7
- data.tar.gz: 361ff7703eb9af5c59ea6a3385c6e2d8def03be9a2b94b4a2b6342e7689055fa4bc9497b2a2b8f85d5b797dfcf0ae4ad311a7eaec2989bf6a4eaabc2e3a9a887
6
+ metadata.gz: 4322323a5f61a25e4697774e900c403aaa17a206dc721583d0778ffe32337f8a791bae64c9dd17967c2ed778f34e08b40f9b09c97ec3bbd8fe8f2f3f2a906dcb
7
+ data.tar.gz: 46c707010d0424970e002c07a90f21ab8a37a633a955afcba21be1331f7b667c477026bb5de0bfe81d35eaa42a14eec6c65ff22d7a7dcd532b64b95ab840f4e3
data/CHANGELOG.md CHANGED
@@ -1,16 +1,25 @@
1
- Nov 5, 2014 - 0.0.5:
2
- Added SelectFollowedByEmpty
1
+ ## 0.0.6 (2014-11-18)
3
2
 
4
- Oct 30, 2014 - 0.0.4:
5
- Bugfixes around method delegation
3
+ * [NEW] Added SelectFollowedBySelect
6
4
 
7
- Oct 22, 2014 - 0.0.3:
8
- Moved AssertWithNil to "buggy" checkset until I can figure out issues.
5
+ ## 0.0.5 (2014-11-05)
9
6
 
10
- Oct 22, 2014 - 0.0.2:
11
- Added AssertWithNil
7
+ * [NEW] Added SelectFollowedByEmpty
12
8
 
13
- Oct 22, 2014 - 0.0.1:
14
- Initial release.
9
+ ## 0.0.4 (2014-10-30)
10
+
11
+ * [FIXED] Bugfixes around method delegation
12
+
13
+ ## 0.0.3 (2014-10-22)
14
+
15
+ * [CHANGED] Moved AssertWithNil to "buggy" checkset until I can figure out issues.
16
+
17
+ ## 0.0.2 (2014-10-22)
18
+
19
+ * [NEW] Added AssertWithNil
20
+
21
+ ## 0.0.1 (2014-10-22)
22
+
23
+ * [NEW] Initial release.
15
24
 
16
25
 
data/README.md CHANGED
@@ -81,19 +81,28 @@ Here's a [demo Rails application](https://github.com/tcopeland/pippi_demo#pippi-
81
81
  ### Rails with rspec
82
82
 
83
83
  * Add `gem 'pippi'` to the `test` group in your project's `Gemfile`
84
- * Add this to the bottom of `spec_helper.rb`:
84
+ * Add this to the top of `spec/spec_helper.rb`:
85
85
 
86
86
  ```ruby
87
87
  if ENV['USE_PIPPI'].present?
88
+ require 'pippi'
88
89
  Pippi::AutoRunner.new(:checkset => ENV['PIPPI_CHECKSET'] || "basic")
89
90
  end
90
91
  ```
92
+
91
93
  * Run it:
92
94
 
93
95
  ```text
94
96
  USE_PIPPI=true bundle exec rake spec && cat log/pippi.log
95
97
  ```
96
98
 
99
+ ### As part of a continuous integration job
100
+
101
+ [Dan Kohn](https://github.com/dankohn) suggests you could use something like:
102
+
103
+ ```bash
104
+ if grep -v gem < log/pippi.log; then echo "$(wc -l < log/pippi.log) Pippi flaws found" && false; else echo 'No pippi flaws found'; fi
105
+ ```
97
106
 
98
107
  ### From the command line:
99
108
 
@@ -164,6 +173,22 @@ Instead, consider doing this:
164
173
  [1,2,3].detect {|x| x > 1 }
165
174
  ```
166
175
 
176
+ #### SelectFollowedBySelect
177
+
178
+ Don't use consecutive select blocks; use a single select instead
179
+
180
+ For example, rather than doing this:
181
+
182
+ ```ruby
183
+ [1,2,3].select {|x| x > 1 }.select {|x| x > 2 }
184
+ ```
185
+
186
+ Instead, consider doing this:
187
+
188
+ ```ruby
189
+ [1,2,3].select {|x| x > 2 }
190
+ ```
191
+
167
192
  #### SelectFollowedBySize
168
193
 
169
194
  Don't use select followed by size; use count instead
@@ -199,12 +224,12 @@ x = nil ; assert_nil(x)
199
224
 
200
225
  #### MapFollowedByFlatten
201
226
 
202
- Don't use map followed by flatten; use flat_map instead
227
+ Don't use map followed by flatten(1); use flat_map instead
203
228
 
204
229
  For example, rather than doing this:
205
230
 
206
231
  ```ruby
207
- [1,2,3].map {|x| [x,x+1] }.flatten
232
+ [1,2,3].map {|x| [x,x+1] }.flatten(1)
208
233
  ```
209
234
 
210
235
  Instead, consider doing this:
@@ -212,6 +237,7 @@ Instead, consider doing this:
212
237
  ```ruby
213
238
  [1,2,3].flat_map {|x| [x, x+1]}
214
239
  ```
240
+
215
241
  ## Ideas for other problems to detect:
216
242
 
217
243
  ```ruby
@@ -306,6 +332,7 @@ rm -rf pippi_debug.log pippi.log .bundle/gems/pippi-0.0.1/ .bundle/cache/pippi-0
306
332
  * Commit, push
307
333
  * `bundle exec gem build pippi.gemspec`
308
334
  * `gem push pippi-x.gem`
335
+ * Update pippi_demo
309
336
 
310
337
  ## Credits
311
338
 
data/doc/docs.md CHANGED
@@ -48,6 +48,22 @@ Instead, consider doing this:
48
48
  [1,2,3].detect {|x| x > 1 }
49
49
  ```
50
50
 
51
+ #### SelectFollowedBySelect
52
+
53
+ Don't use select followed by select; use a single select instead
54
+
55
+ For example, rather than doing this:
56
+
57
+ ```ruby
58
+ [1,2,3].select {|x| x > 1 }.select {|x| x > 2 }
59
+ ```
60
+
61
+ Instead, consider doing this:
62
+
63
+ ```ruby
64
+ [1,2,3].select {|x| x > 2 }
65
+ ```
66
+
51
67
  #### SelectFollowedBySize
52
68
 
53
69
  Don't use select followed by size; use count instead
@@ -83,12 +99,12 @@ x = nil ; assert_nil(x)
83
99
 
84
100
  #### MapFollowedByFlatten
85
101
 
86
- Don't use map followed by flatten; use flat_map instead
102
+ Don't use map followed by flatten(1); use flat_map instead
87
103
 
88
104
  For example, rather than doing this:
89
105
 
90
106
  ```ruby
91
- [1,2,3].map {|x| [x,x+1] }.flatten
107
+ [1,2,3].map {|x| [x,x+1] }.flatten(1)
92
108
  ```
93
109
 
94
110
  Instead, consider doing this:
data/lib/pippi.rb CHANGED
@@ -13,5 +13,6 @@ require 'pippi/checks/reverse_followed_by_each'
13
13
  require 'pippi/checks/select_followed_by_first'
14
14
  require 'pippi/checks/select_followed_by_size'
15
15
  require 'pippi/checks/select_followed_by_empty'
16
+ require 'pippi/checks/select_followed_by_select'
16
17
  require 'pippi/checks/assert_with_nil'
17
18
  require 'pippi/checks/debug_check'
@@ -24,6 +24,7 @@ module Pippi
24
24
  "SelectFollowedBySize",
25
25
  "SelectFollowedByEmpty",
26
26
  "ReverseFollowedByEach",
27
+ "SelectFollowedBySelect"
27
28
  ],
28
29
  "training" => [
29
30
  ],
@@ -41,11 +41,11 @@ module Pippi::Checks
41
41
 
42
42
  class Documentation
43
43
  def description
44
- "Don't use map followed by flatten; use flat_map instead"
44
+ "Don't use map followed by flatten(1); use flat_map instead"
45
45
  end
46
46
 
47
47
  def sample
48
- '[1,2,3].map {|x| [x,x+1] }.flatten'
48
+ '[1,2,3].map {|x| [x,x+1] }.flatten(1)'
49
49
  end
50
50
 
51
51
  def instead_use
@@ -0,0 +1,49 @@
1
+ module Pippi::Checks
2
+
3
+ class SelectFollowedBySelect < Check
4
+
5
+ module MySecondSelect
6
+ def select(&blk)
7
+ self.class._pippi_check_select_followed_by_select.add_problem
8
+ super
9
+ end
10
+ end
11
+
12
+ module MyFirstSelect
13
+ def select(&blk)
14
+ result = super
15
+ if !self.class._pippi_check_select_followed_by_select.nil?
16
+ result.extend MySecondSelect
17
+ self.class._pippi_check_select_followed_by_select.array_mutator_methods.each do |this_means_its_ok_sym|
18
+ result.define_singleton_method(this_means_its_ok_sym, self.class._pippi_check_select_followed_by_select.its_ok_watcher_proc(MySecondSelect, :select))
19
+ end
20
+ end
21
+ result
22
+ end
23
+ end
24
+
25
+ def decorate
26
+ Array.class_exec(self) do |my_check|
27
+ @_pippi_check_select_followed_by_select = my_check
28
+ def self._pippi_check_select_followed_by_select
29
+ @_pippi_check_select_followed_by_select
30
+ end
31
+ end
32
+ Array.prepend MyFirstSelect
33
+ end
34
+
35
+ class Documentation
36
+ def description
37
+ "Don't use consecutive select blocks; use a single select instead"
38
+ end
39
+ def sample
40
+ "[1,2,3].select {|x| x > 1 }.select {|x| x > 2 }"
41
+ end
42
+ def instead_use
43
+ "[1,2,3].select {|x| x > 2 }"
44
+ end
45
+ end
46
+
47
+ end
48
+
49
+ end
data/lib/pippi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pippi
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pippi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Copeland
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-05 00:00:00.000000000 Z
11
+ date: 2014-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -76,6 +76,7 @@ files:
76
76
  - lib/pippi/checks/reverse_followed_by_each.rb
77
77
  - lib/pippi/checks/select_followed_by_empty.rb
78
78
  - lib/pippi/checks/select_followed_by_first.rb
79
+ - lib/pippi/checks/select_followed_by_select.rb
79
80
  - lib/pippi/checks/select_followed_by_size.rb
80
81
  - lib/pippi/context.rb
81
82
  - lib/pippi/exec_runner.rb