pippi 0.0.5 → 0.0.6

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.
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