lifen-ruby-style 1.0.0 → 1.0.5

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