lifen-ruby-style 1.0.0 → 1.0.5

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
  SHA256:
3
- metadata.gz: f1f86ee33406608d1b9b2cf8d14d80585a09dcb798a2528c1b06a7205d61bb47
4
- data.tar.gz: 42914e1c8155e225d5fcedce3d9d14ef8d5116b51df50213cd24f899aca039c8
3
+ metadata.gz: 98bf06dfd5e89c45b0db61d216c7bebf02d9c0c2c3f5b0f5bf541d7f7ac04549
4
+ data.tar.gz: fe187d143ebf8f45d14aaa4840036f07e298e50a685779b4fa5d7cf4146d75d1
5
5
  SHA512:
6
- metadata.gz: b86279d1645d36567b71689f3f5b634086975cf0be3f0f29436da8ff9171d3739df1017aa21b8f4323ff423dab23410b315cbb12f11008a081fa9e6e31d3dadc
7
- data.tar.gz: 28df7786610a74fe2b4bdc7534409f857962020002c7bce2271c18dfd10bf717e25ddaf0d4f3bfcf1785d2430f36feb4cf80ed700585ce812180fc2c3943ce4e
6
+ metadata.gz: 0bbfa947d38b858e4b7f16f5b20d4fb3c6e09916c2541c246b43fb50b9ee0e3c12a3f5c227b86475588046a71cdacce1b9a30bc59dd03f366b5e040606863dd9
7
+ data.tar.gz: 194a8cd141680f1acbad8e0eb2e5f247cf17b06e65f92066232d3b5832397a0ec9625afa9692bd92a2395b0683249160c9ee7f346690c45c790f9d2bfc58b729
@@ -16,8 +16,10 @@
16
16
  # Uncomment the following lines to make the configuration take effect.
17
17
 
18
18
  PreCommit:
19
- Pronto:
19
+ RuboCop:
20
20
  enabled: true
21
+ command: ["bundle", "exec", "rubocop"]
22
+ problem_on_unmodified_line: ignore
21
23
 
22
24
  GoFmt:
23
25
  enabled: false
@@ -32,16 +34,11 @@ CommitMsg:
32
34
 
33
35
  TextWidth:
34
36
  enabled: true
35
- on_warn: fail
36
37
 
37
38
  TrailingPeriod:
38
39
  enabled: true
39
40
  on_warn: fail
40
41
  #PreCommit:
41
- # RuboCop:
42
- # enabled: true
43
- # on_warn: fail # Treat all warnings as failures
44
- #
45
42
  # TrailingWhitespace:
46
43
  # enabled: true
47
44
  # exclude:
data/README.md CHANGED
@@ -10,17 +10,14 @@
10
10
  - [Rubocop-rspec](https://github.com/rubocop-hq/rubocop-rspec) pour l'analyse des tests RSpec
11
11
  - [Rubocop-rails](https://github.com/rubocop-hq/rubocop-rails) pour les vérifications spécifiques à Rails.
12
12
 
13
- 3. [Pronto](https://github.com/prontolabs/pronto) permet de lancer simultanément **plusieurs outils d'analyse** (e.g. Rubocop, Reek, Fasterer) **sur un sous-ensemble de lignes** (e.g. le contenu de l'index ou le diff entre 2 commits). Nous ne l'utilisons pour le moment que pour l'analyse Rubocop. [Pronto Rubocop](https://github.com/prontolabs/pronto-rubocop) est l'extension qui va permettre de lancer RuboCop via Pronto.
14
-
15
- 4. [Overcommit](https://github.com/sds/overcommit) permet de gérer et paramétrer les hooks Git.
13
+ 3. [Overcommit](https://github.com/sds/overcommit) permet de gérer et paramétrer les hooks Git.
16
14
 
17
15
  ## Sommaire
18
16
 
19
17
  - [Installation](#installation)
20
18
  - [Usage](#usage)
21
- - [Rubocop](#rubocop)
22
- - [Pronto](#pronto)
23
- - [Overcommit](#overcommit)
19
+ - [Rubocop](#commandes-rubocop)
20
+ - [Overcommit](#commandes-overcommit)
24
21
  - [Utilisation d'une version locale](#utilisation-dune-version-locale)
25
22
  - [Contributions](#contributions)
26
23
  - [TODO](#todo)
@@ -28,10 +25,6 @@
28
25
 
29
26
  ## Installation
30
27
 
31
- <details>
32
-
33
- <summary>Pour un nouveau projet ou un repo Lifen non configuré</summary>
34
-
35
28
  ### 1. Ajout de la gem au projet
36
29
 
37
30
  Ajouter dans le `Gemfile` :
@@ -58,36 +51,31 @@ inherit_gem:
58
51
  - default_rubocop.yml
59
52
  ```
60
53
 
61
- ### 3. Config Overcommit
62
-
63
- Créer le fichier `.overcommit.yml` à partir du contenu de [ce fichier](./default_overcommit.yml).
64
-
65
- Note : Il n'est pas nécessaire d'ajouter Rubocop dans les dépendances de l'application.
54
+ Forcer rubocop à respecter les exclusions définies dans le fichier de paramétrage :
66
55
 
67
- </details>
68
-
69
- <details>
70
- <summary>Pour un repo Lifen déjà configuré</summary>
56
+ ```bash
57
+ $ cd my_project # aller à la racine du projet
58
+ $ echo '--force-exclusion' > .rubocop
59
+ ```
71
60
 
72
- ### 1. Installer les dépendences :
61
+ ### 3. Config Overcommit
73
62
 
74
63
  ```bash
75
- $ bundle install
64
+ $ curl https://raw.githubusercontent.com/honestica/lifen-ruby-style/master/default_overcommit.yml > .overcommit_test.yml
76
65
  ```
77
66
 
78
- En cas de problème avec l'installation de la sous-dépendance `rugged` il faudra vous assurer que `cmake` est installé sur votre machine. Si elle n'est pas installée il faudra le faire de la façon suivante :
67
+ ### 4. Installer les dépendances
68
+
79
69
  ```bash
80
- brew install cmake
70
+ $ bundle install
81
71
  ```
82
72
 
83
- ### 2. Installer les hooks Git :
73
+ ### 5. Installer les hooks Git
84
74
 
85
75
  ```bash
86
76
  $ bundle exec overcommit --install
87
77
  ```
88
78
 
89
- </details>
90
-
91
79
  <details>
92
80
  <summary>Recommandations spécifiques pour VSCode</summary>
93
81
 
@@ -128,23 +116,27 @@ $ bundle exec overcommit --install
128
116
  - **FORCER RUBOCOP À RESPECTER LES EXCLUSIONS DÉFINIES DANS LE FICHIER DE PARAMÉTRAGE :**
129
117
 
130
118
  ```bash
119
+ $ cd my_project # aller à la racine du projet
131
120
  $ echo '--force-exclusion' > .rubocop
132
121
  ```
133
122
 
134
123
  - Paramétrage recommandé pour l'auto-formatting :
135
124
 
136
125
  ```json
126
+ "editor.formatOnPaste": true, // global auto-format code when pasting
127
+ "editor.formatOnSave": true, // global auto-format code when saving
137
128
  "[ruby]": {
138
- "editor.formatOnPaste": true, // auto-format ruby code when pasting
139
- "editor.formatOnSave": true // auto-format ruby code when saving
129
+ "editor.formatOnSave": false // disable auto-format on save only for ruby files
140
130
  },
141
131
  ```
142
132
 
143
133
  ou
144
134
 
145
135
  ```json
146
- "editor.formatOnPaste": true, // auto-format code when pasting
147
- "editor.formatOnSave": true, // auto-format code when saving
136
+ "[ruby]": {
137
+ "editor.formatOnPaste": true, // auto-format ruby code when pasting
138
+ "editor.formatOnSave": false // auto-format ruby code when saving
139
+ },
148
140
  ```
149
141
 
150
142
  ### 3. Bonus - Autres extensions utiles :
@@ -161,7 +153,9 @@ $ bundle exec overcommit --install
161
153
  <summary>Recommandations spécifiques pour Sublime Text</summary>
162
154
 
163
155
  ### Configuration de Sublime Text
156
+
164
157
  Il faut aller dans `Preferences > Settings` et modifier le fichier `Preferences.sublime-settings -- User` et y ajouter les paramètres suivants :
158
+
165
159
  ```json
166
160
  {
167
161
  ...,
@@ -179,10 +173,13 @@ Il faut aller dans `Preferences > Settings` et modifier le fichier `Preferences.
179
173
  ```
180
174
 
181
175
  ### Configuration de Rubocop
176
+
182
177
  #### 1. Installation du plugin
178
+
183
179
  Il faut installer l'extension [sublime_rubocop](https://packagecontrol.io/packages/RuboCop)
184
180
 
185
181
  Et tout devrait marcher par défaut si votre système n'utilise pas rvm ou rbenv. Le cas échéant il faut personnaliser la configuration en allant dans `Preferences > Package Settings > Rubocop > Settings - User` et mettre la configuration qui va bien dans le fichier, par exemple ceci si vous utilisez Rbenv :
182
+
186
183
  ```
187
184
  {
188
185
  "check_for_rvm": false,
@@ -192,7 +189,9 @@ Et tout devrait marcher par défaut si votre système n'utilise pas rvm ou rbenv
192
189
  ```
193
190
 
194
191
  #### 2. Utilisation
192
+
195
193
  Une fois le plugin installé vous accéderez à des commandes supplémentaires liées à Rubocop et vous pourrez par exemple :
194
+
196
195
  - Corriger automatiquement des fichiers
197
196
  - Activer/Désactiver l'auto-check des fichiers
198
197
 
@@ -254,11 +253,27 @@ https://github.com/dense-analysis/ale
254
253
  ### Workflow
255
254
 
256
255
  - Je code ma feature en local. Mon environnement (projet + IDE) étant configuré, je suis alerté en direct des règles de style que j'enfreins. Certaines sont mêmes corrigées automatiquement, lors de la sauvegarde du fichier.
256
+ - Pour ignorer manuellement RuboCop sur des lignes données :
257
+
258
+ ```ruby
259
+ "I want to ignore the Style/StringLiterals rule on this line only" # rubocop:disable Style/StringLiterals
260
+
261
+ # rubocop:disable Style/StringLiterals
262
+ "I want to ignore the Style/StringLiterals rule on this line."
263
+ "and also on this one, because I like double quotes."
264
+ # rubocop:enable Style/StringLiterals
265
+ ```
266
+
257
267
  - Je commit :
258
- - Un hook de pre-commit lance une analyse Pronto (= RuboCop pour le moment) sur les lignes "staged". D'autres vérifications fournies par défaut par la gem `overcommit` sont également faites. Si l'analye renvoie des erreurs, le commit est bloqué.
268
+ - Un hook de pre-commit lance une analyse RuboCop sur les fichiers "staged". Si l'analye renvoie des erreurs, le commit est bloqué.
259
269
  - Un hook vérifie le message de commit
260
270
  - Si je veux bypasser les hooks (déconseillé) : `OVERCOMMIT_DISABLE=1 git commit ...`
261
- - Je push (pas de hooks paramétrés pour l'instant)
271
+ - Je push (pas de hooks de pre-push paramétrés pour l'instant)
272
+
273
+ Attention :
274
+
275
+ - si vous faites "Ctrl+C" pendant qu'un hook overcommit tourne, overcommit fait un `git stash save` et vous pouvez retrouver ce qui a disparu avec `git stast list / show / pop`
276
+ - dans le même registre, ne faites pas de `watch .git/hooks/pre-commit`, si vous éditez vos fichiers dans une autre fenêtre, overcommit va régulièrement stasher vos modifs, et vous allez tourner en rond à éditer des fichiers qui changent sous vos pieds.
262
277
 
263
278
  ### Commandes Rubocop
264
279
 
@@ -286,33 +301,11 @@ Liste des commandes disponibles :
286
301
  $ bundle exec rubocop --help
287
302
  ```
288
303
 
289
- ### Commandes Pronto
290
-
291
- ```bash
292
- $ bundle exec pronto run [PATH] # Runs Pronto on the diff between last commit and master
293
- ```
294
-
295
- Vous pouvez ajouter les options suivantes :
296
-
297
- ```bash
298
- -c, [--commit=COMMIT] # Runs Pronto on the diff between last commit and specified commit
299
- -i, --index # Analyze changes not staged for commit (does not include untracked files)
300
- --unstaged, --no-unstaged # Analyze only untracked files
301
- --staged, --no-staged # Analyze changes to be committed (git staging area)
302
- ```
303
-
304
- Liste des commandes disponibles :
305
-
306
- ```bash
307
- $ bundle exec pronto --help
308
- $ bundle exec pronto help run
309
- ```
310
-
311
304
  ### Commandes Overcommit
312
305
 
313
306
  ```bash
314
307
  $ OVERCOMMIT_DISABLE=1 git [command] # Executes the git command without running the hooks
315
- $ bundle exec overcommit --run # Run pre-commit hook against all git tracked files
308
+ $ bundle exec overcommit --run # Run pre-commit hook against all git tracked files
316
309
  ```
317
310
 
318
311
  Liste des commandes disponibles :
@@ -352,7 +345,7 @@ Pour utiliser une version locale de la gem `lifen-ruby-style` :
352
345
 
353
346
  - Créer le fichier `.overcommit.yml` et coller le contenu du fichier `lifen-ruby-style/default_overcommit.yml`
354
347
 
355
- - Installer les dépendences et les hooks Git :
348
+ - Installer les dépendances et les hooks Git :
356
349
 
357
350
  ```bash
358
351
  $ bundle install
@@ -377,14 +370,13 @@ Vous allez vouloir tester localement les modifications de règle de style que vo
377
370
 
378
371
  ## TODO
379
372
 
380
- [ ] Recommandations spécifiques pour Sublime Text
381
- [ ] Lier la configuration d'overcommit aux repos
382
- [ ] Ajouter un hook de pre-push ?
373
+ [ ] Ajouter rubocop-daemon (arriver à faire une bonne intégration aux IDE)
383
374
  [ ] Ajouter le hook de pre-commit au CI
384
- [ ] Ajouter `pronto-faster` si pertinent
385
- [ ] Ajouter `pronto-reek` si pertinent
386
- [ ] Ajouter `pronto-slim_lint` si pertinent
387
- [ ] Ajouter `pronto-scss` si pertinent
375
+ [ ] Ajouter un hook de pre-push ?
376
+ [ ] Ajouter `fasterer` si pertinent
377
+ [ ] Ajouter `reek` si pertinent
378
+ [ ] Ajouter `slim_lint` si pertinent
379
+ [ ] Ajouter `scss` si pertinent
388
380
 
389
381
  ## Archives
390
382
 
@@ -16,8 +16,10 @@
16
16
  # Uncomment the following lines to make the configuration take effect.
17
17
 
18
18
  PreCommit:
19
- Pronto:
19
+ RuboCop:
20
20
  enabled: true
21
+ command: ["bundle", "exec", "rubocop"]
22
+ problem_on_unmodified_line: ignore
21
23
 
22
24
  GoFmt:
23
25
  enabled: false
@@ -32,16 +34,11 @@ CommitMsg:
32
34
 
33
35
  TextWidth:
34
36
  enabled: true
35
- on_warn: fail
36
37
 
37
38
  TrailingPeriod:
38
39
  enabled: true
39
40
  on_warn: fail
40
41
  #PreCommit:
41
- # RuboCop:
42
- # enabled: true
43
- # on_warn: fail # Treat all warnings as failures
44
- #
45
42
  # TrailingWhitespace:
46
43
  # enabled: true
47
44
  # exclude:
@@ -17,6 +17,10 @@ AllCops:
17
17
  - "node_modules/**/*"
18
18
 
19
19
  # Waiting for default config
20
+ Lint/RaiseException:
21
+ Enabled: true
22
+ Lint/StructNewOverride:
23
+ Enabled: true
20
24
  Style/HashEachMethods:
21
25
  Enabled: true
22
26
  Style/HashTransformKeys:
@@ -87,12 +91,23 @@ Metrics/PerceivedComplexity:
87
91
  Naming/MemoizedInstanceVariableName:
88
92
  EnforcedStyleForLeadingUnderscores: required
89
93
 
94
+ RSpec/DescribeClass:
95
+ Exclude:
96
+ - spec/lib/tasks/deployment/**/*
97
+
98
+ Style/BlockDelimiters:
99
+ EnforcedStyle: braces_for_chaining
100
+
90
101
  Style/ClassAndModuleChildren:
91
102
  Enabled: false
92
103
 
93
104
  Style/Documentation:
94
105
  Enabled: false
95
106
 
107
+ Style/IfUnlessModifier:
108
+ Enabled: true
109
+ AutoCorrect: false
110
+
96
111
  Style/NumericLiterals:
97
112
  Strict: true
98
113
 
@@ -108,6 +123,17 @@ Style/SymbolArray:
108
123
  Style/WordArray:
109
124
  EnforcedStyle: brackets
110
125
 
126
+ Rails/DynamicFindBy:
127
+ Enabled: true
128
+ AutoCorrect: false
129
+
130
+ Rails/UnknownEnv:
131
+ Environments:
132
+ - production
133
+ - development
134
+ - test
135
+ - staging
136
+
111
137
  RSpec/AnyInstance:
112
138
  Enabled: false
113
139
 
@@ -120,11 +146,14 @@ RSpec/ExampleLength:
120
146
  RSpec/HookArgument:
121
147
  EnforcedStyle: each
122
148
 
149
+ RSpec/LetSetup:
150
+ Enabled: false
151
+
123
152
  RSpec/MultipleExpectations:
124
153
  Enabled: false
125
154
 
126
155
  RSpec/NestedGroups:
127
- Max: 4
156
+ Max: 5
128
157
 
129
158
  RSpec/NotToNot:
130
159
  EnforcedStyle: to_not
@@ -3,7 +3,7 @@
3
3
  module Lifen
4
4
  module RubyStyle
5
5
 
6
- VERSION = '1.0.0'
6
+ VERSION = '1.0.5'
7
7
 
8
8
  end
9
9
  end
@@ -30,9 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.require_paths = ['lib']
31
31
 
32
32
  spec.add_dependency 'overcommit'
33
- spec.add_dependency 'pronto', '~> 0.1'
34
- spec.add_dependency 'pronto-rubocop', '~> 0.1'
35
- spec.add_dependency 'rubocop', '~> 0.8'
33
+ spec.add_dependency 'rubocop', '0.81'
36
34
  spec.add_dependency 'rubocop-performance', '~> 1.5'
37
35
  spec.add_dependency 'rubocop-rails', '~> 2.4'
38
36
  spec.add_dependency 'rubocop-rspec', '~> 1.38'
@@ -619,6 +619,12 @@ before(:each) do
619
619
  end
620
620
  ```
621
621
 
622
+ #### LetSetup
623
+
624
+ ```yaml
625
+ Enabled: false // does not check unreferenced let! calls being used for test setup
626
+ ```
627
+
622
628
  #### MultipleExpectations
623
629
 
624
630
  ```yaml
@@ -651,6 +657,22 @@ end
651
657
  Enabled: false // example groups can have the same description string.
652
658
  ```
653
659
 
660
+ #### Block Delimiters
661
+
662
+ ##### EnforcedStyle: braces_for_chaining
663
+
664
+ ```ruby
665
+ # bad
666
+ words.each do |word|
667
+ word.flip.flop
668
+ end.join("-")
669
+
670
+ # good
671
+ words.each { |word|
672
+ word.flip.flop
673
+ }.join("-")
674
+ ```
675
+
654
676
  </details>
655
677
 
656
678
  ### Default rules
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lifen-ruby-style
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Team Lifen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-04 00:00:00.000000000 Z
11
+ date: 2020-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: overcommit
@@ -24,48 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: pronto
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '0.1'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '0.1'
41
- - !ruby/object:Gem::Dependency
42
- name: pronto-rubocop
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '0.1'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '0.1'
55
27
  - !ruby/object:Gem::Dependency
56
28
  name: rubocop
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
- - - "~>"
31
+ - - '='
60
32
  - !ruby/object:Gem::Version
61
- version: '0.8'
33
+ version: '0.81'
62
34
  type: :runtime
63
35
  prerelease: false
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
- - - "~>"
38
+ - - '='
67
39
  - !ruby/object:Gem::Version
68
- version: '0.8'
40
+ version: '0.81'
69
41
  - !ruby/object:Gem::Dependency
70
42
  name: rubocop-performance
71
43
  requirement: !ruby/object:Gem::Requirement