foodcritic 2.1.0 → 2.2.0

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.
Files changed (104) hide show
  1. data/CHANGELOG.md +691 -0
  2. data/LICENSE +21 -0
  3. data/README.md +28 -0
  4. data/chef_dsl_metadata/chef_0.10.10.json +22 -0
  5. data/chef_dsl_metadata/chef_10.12.0.json +22 -0
  6. data/chef_dsl_metadata/chef_10.14.0.json +22 -0
  7. data/chef_dsl_metadata/chef_10.14.2.json +22 -0
  8. data/chef_dsl_metadata/chef_10.14.4.json +22 -0
  9. data/chef_dsl_metadata/chef_10.16.0.json +22 -0
  10. data/chef_dsl_metadata/chef_10.16.2.json +22 -0
  11. data/chef_dsl_metadata/chef_10.16.4.json +22 -0
  12. data/chef_dsl_metadata/chef_10.16.6.json +22 -0
  13. data/chef_dsl_metadata/chef_10.18.0.json +22 -0
  14. data/chef_dsl_metadata/chef_10.18.2.json +22 -0
  15. data/chef_dsl_metadata/chef_10.20.0.json +22 -0
  16. data/chef_dsl_metadata/chef_10.22.0.json +22 -0
  17. data/chef_dsl_metadata/chef_10.24.0.json +22 -0
  18. data/chef_dsl_metadata/chef_10.24.4.json +8460 -0
  19. data/chef_dsl_metadata/chef_10.26.0.json +8460 -0
  20. data/chef_dsl_metadata/chef_11.0.0.json +22 -0
  21. data/chef_dsl_metadata/chef_11.2.0.json +22 -0
  22. data/chef_dsl_metadata/chef_11.4.0.json +22 -0
  23. data/chef_dsl_metadata/chef_11.4.2.json +8794 -0
  24. data/chef_dsl_metadata/chef_11.4.4.json +8794 -0
  25. data/features/002_check_string_interpolation.feature +45 -0
  26. data/features/003_check_for_chef_server.feature +56 -0
  27. data/features/004_check_service_resource_used.feature +53 -0
  28. data/features/005_check_for_resource_repetition.feature +64 -0
  29. data/features/006_check_file_mode.feature +35 -0
  30. data/features/007_check_for_undeclared_recipe_dependencies.feature +71 -0
  31. data/features/008_check_for_boilerplate_metadata.feature +25 -0
  32. data/features/009_check_for_unrecognised_resource_attributes.feature +77 -0
  33. data/features/010_check_search_syntax.feature +20 -0
  34. data/features/011_check_for_markdown_readme.feature +20 -0
  35. data/features/012_check_for_deprecated_readme_format.feature +20 -0
  36. data/features/013_check_for_hardcoded_tmpdir.feature +25 -0
  37. data/features/014_check_for_long_ruby_blocks.feature +30 -0
  38. data/features/015_check_for_definitions.feature +21 -0
  39. data/features/016_check_for_no_lwrp_default_action.feature +20 -0
  40. data/features/017_check_for_no_lwrp_notifications.feature +25 -0
  41. data/features/018_check_for_old_lwrp_notification_syntax.feature +25 -0
  42. data/features/019_check_for_consistent_node_access.feature +107 -0
  43. data/features/021_check_for_dodgy_lwrp_conditions.feature +28 -0
  44. data/features/022_check_for_dodgy_conditions_within_loop.feature +28 -0
  45. data/features/023_check_for_condition_around_resource.feature +52 -0
  46. data/features/024_check_for_missing_platforms.feature +43 -0
  47. data/features/025_check_for_deprecated_gem_install.feature +30 -0
  48. data/features/026_check_for_conditional_block_string.feature +20 -0
  49. data/features/027_check_for_internal_attribute_use.feature +22 -0
  50. data/features/028_check_for_incorrect_platform_method.feature +20 -0
  51. data/features/029_check_for_no_leading_cookbook_name.feature +18 -0
  52. data/features/030_check_for_debugger_breakpoints.feature +25 -0
  53. data/features/031_check_for_metadata_existence.feature +15 -0
  54. data/features/032_check_for_invalid_notification_timing.feature +22 -0
  55. data/features/033_check_for_missing_template.feature +75 -0
  56. data/features/034_check_for_unused_template_variables.feature +37 -0
  57. data/features/037_check_for_invalid_notification_action.feature +34 -0
  58. data/features/038_check_for_invalid_action.feature +51 -0
  59. data/features/039_check_for_key_access_to_node_methods.feature +33 -0
  60. data/features/040_check_raw_git_usage.feature +37 -0
  61. data/features/041_check_raw_download.feature +26 -0
  62. data/features/042_check_for_deprecated_require_recipe.feature +15 -0
  63. data/features/043_check_for_old_notification_style.feature +35 -0
  64. data/features/044_check_for_bare_attribute_keys.feature +43 -0
  65. data/features/045_check_for_cookbook_name_in_metadata.feature +20 -0
  66. data/features/046_check_for_assign_unless_nil_attributes.feature +21 -0
  67. data/features/build_framework_support.feature +99 -0
  68. data/features/checking_all_types_of_file.feature +40 -0
  69. data/features/choose_rules_to_apply.feature +49 -0
  70. data/features/command_line_help.feature +43 -0
  71. data/features/continuous_integration_support.feature +35 -0
  72. data/features/ignore_via_line_comments.feature +51 -0
  73. data/features/include_custom_rules.feature +29 -0
  74. data/features/individual_file.feature +12 -0
  75. data/features/limit_rules_to_specific_versions.feature +65 -0
  76. data/features/multiple_paths.feature +11 -0
  77. data/features/show_lines_matched.feature +20 -0
  78. data/features/sort_warnings.feature +10 -0
  79. data/features/specify_search_grammar.feature +25 -0
  80. data/features/step_definitions/cookbook_steps.rb +1791 -0
  81. data/features/support/command_helpers.rb +312 -0
  82. data/features/support/cookbook_helpers.rb +495 -0
  83. data/features/support/env.rb +11 -0
  84. data/lib/foodcritic.rb +0 -1
  85. data/lib/foodcritic/api.rb +3 -2
  86. data/lib/foodcritic/command_line.rb +4 -0
  87. data/lib/foodcritic/linter.rb +29 -6
  88. data/lib/foodcritic/output.rb +74 -26
  89. data/lib/foodcritic/rules.rb +6 -5
  90. data/lib/foodcritic/version.rb +1 -1
  91. data/man/foodcritic.1 +58 -0
  92. data/man/foodcritic.1.ronn +57 -0
  93. data/spec/foodcritic/api_spec.rb +1615 -0
  94. data/spec/foodcritic/chef_spec.rb +66 -0
  95. data/spec/foodcritic/command_line_spec.rb +51 -0
  96. data/spec/foodcritic/domain_spec.rb +24 -0
  97. data/spec/foodcritic/linter_spec.rb +91 -0
  98. data/spec/foodcritic/template_spec.rb +49 -0
  99. data/spec/regression/cookbooks.txt +135 -0
  100. data/spec/regression/expected-output.txt +443 -0
  101. data/spec/regression/regression_spec.rb +17 -0
  102. data/spec/regression_helpers.rb +37 -0
  103. data/spec/spec_helper.rb +10 -0
  104. metadata +87 -24
data/CHANGELOG.md ADDED
@@ -0,0 +1,691 @@
1
+ ## 2.2.0 (10th July, 2013)
2
+
3
+ Features:
4
+
5
+ - Additional rules may now be shipped as gems. Files matching the path
6
+ `foodcritic/rules/**/*.rb` will be loaded if the `--search-gems` option is
7
+ specified
8
+ ([related issue](https://github.com/acrmp/foodcritic/issues/143)). Thanks
9
+ to @rteabeault for implementing this feature.
10
+ - You can now control the rules applied to individual cookbooks by including
11
+ a `.foodcritic` file at the root of your cookbook with the tags you want
12
+ checked
13
+ ([related issue](https://github.com/acrmp/foodcritic/issues/141)). Thanks
14
+ to @sabat for implementing this feature.
15
+ - The [project license](https://github.com/acrmp/foodcritic/blob/master/LICENSE)
16
+ is now included in the built gem
17
+ ([related issue](https://github.com/acrmp/foodcritic/issues/145)).
18
+ Thanks @stefanor.
19
+ - Foodcritic no longer uses the `rak` gem to generate output with context
20
+ ([related issue](https://github.com/acrmp/foodcritic/issues/146)).
21
+ Thanks to @stefanor for re-implementing context output to remove this
22
+ dependency.
23
+ - A man page is now included with foodcritic in
24
+ [ronn-format](http://rtomayko.github.io/ronn/).
25
+ Thanks @stefanor.
26
+
27
+ Bugfixes:
28
+
29
+ - Definitions are now included in the files that are linted
30
+ ([related issue](https://github.com/acrmp/foodcritic/issues/142)). Thanks
31
+ @bpaquet.
32
+ - [FC009: Resource attribute not recognised](http://acrmp.github.com/foodcritic/#FC009)
33
+ would warn against Windows-specific resource attributes
34
+ ([related issue](https://github.com/acrmp/foodcritic/issues/135)). Thanks
35
+ @stormtrooperguy.
36
+ - [FC011: Missing README in markdown format](http://acrmp.github.com/foodcritic/#FC011)
37
+ was not shown when outputting with context enabled
38
+ ([related issue](https://github.com/acrmp/foodcritic/issues/146)). Thanks
39
+ @stefanor.
40
+ - [FC014: Consider extracting long ruby_block to library](http://acrmp.github.com/foodcritic/#FC014)
41
+ previously used the number of AST nodes to determine block length. This
42
+ was a poor proxy for length and this rule has been updated to warn if the
43
+ number of lines > 15
44
+ ([related issue](https://github.com/acrmp/foodcritic/issues/130)). Thanks
45
+ @adamjk-dev.
46
+ - [FC014: Consider extracting long ruby_block to library](http://acrmp.github.com/foodcritic/#FC014)
47
+ would warn against other blocks incorrectly
48
+ ([related issue](https://github.com/acrmp/foodcritic/issues/130)). Thanks
49
+ @adamjk-dev.
50
+ - [FC014: Consider extracting long ruby_block to library](http://acrmp.github.com/foodcritic/#FC014)
51
+ would raise an error if the ruby_block did not contain a nested `block`
52
+ attribute
53
+ ([related issue](https://github.com/acrmp/foodcritic/issues/139)). Thanks
54
+ @stevendanna.
55
+ - [FC033: Missing template](http://acrmp.github.com/foodcritic/#FC033)
56
+ would warn when the template file did not have an erb extension
57
+ ([related issue](https://github.com/acrmp/foodcritic/issues/131)). Thanks
58
+ @nvwls.
59
+ - [FC034: Unused template variables](http://acrmp.github.com/foodcritic/#FC034)
60
+ would warn when the template file did not have an erb extension
61
+ ([related issue](https://github.com/acrmp/foodcritic/issues/131)). Thanks
62
+ @nvwls.
63
+
64
+ ## 2.1.0 (17th April, 2013)
65
+
66
+ Features:
67
+
68
+ - DSL metadata will now reflect the version of Chef selected with
69
+ `--chef-version`. For example this means that
70
+ [FC009: Resource attribute not recognised](http://acrmp.github.com/foodcritic/#FC009)
71
+ will warn about attributes not present in the specified version of Chef.
72
+
73
+ Bugfixes:
74
+
75
+ - [FC045: Consider setting cookbook name in metadata](http://acrmp.github.com/foodcritic/#FC045)
76
+ would warn incorrectly and other rules would fail to work when activesupport
77
+ had been loaded
78
+ ([related issue](https://github.com/acrmp/foodcritic/issues/118)). This
79
+ affected Berkshelf users. Thanks @scalp42 and @c-nolic.
80
+ - Upgrade the version of Gherkin dependency to avoid deprecation warnings
81
+ ([related issue](https://github.com/acrmp/foodcritic/pull/122)).
82
+ Thanks @tmatilai.
83
+
84
+ Other:
85
+
86
+ - Known to run on MRI 2.0.0 - added to Travis CI matrix.
87
+
88
+ ## 2.0.1 (31st March, 2013)
89
+
90
+ Bugfixes:
91
+
92
+ - Matches that should be ignored were not if the rule implementation used the
93
+ `cookbook` block
94
+ ([related issue](https://github.com/acrmp/foodcritic/issues/119)).
95
+ - [FC033: Missing Template](http://acrmp.github.com/foodcritic/#FC033)
96
+ would warn incorrectly when the template resource was nested within another
97
+ resource
98
+ ([related issue](https://github.com/acrmp/foodcritic/issues/96)).
99
+ Thanks @justinforce.
100
+ - The `#resource_attributes` API method now copes with nested resources.
101
+
102
+ ## 2.0.0 (24th March, 2013)
103
+
104
+ Features
105
+
106
+ - Support added for ignoring individual matches. To ignore a match add a
107
+ comment to the affected line in your cookbook of the format `# ~FC006`
108
+ ([related issue](https://github.com/acrmp/foodcritic/issues/119)).
109
+ Big thanks to @grosser.
110
+ - Command line help now specifies the tag to use to fail the build on any
111
+ rule match
112
+ ([related issue](https://github.com/acrmp/foodcritic/issues/108)).
113
+ Thanks @grosser.
114
+ - FC046: Attribute assignment uses assign unless nil
115
+ rule added
116
+ ([related issue](https://github.com/acrmp/foodcritic/issues/52)).
117
+ Thanks @jaymzh.
118
+
119
+ Bugfixes:
120
+
121
+ - [FC003: Check whether you are running with chef server before using server-specific features](http://acrmp.github.com/foodcritic/#FC003)
122
+ updated to recognise checks that use return
123
+ ([related issue](https://github.com/acrmp/foodcritic/issues/92)).
124
+ Thanks @sethvargo, @miketheman.
125
+ - [FC003: Check whether you are running with chef server before using server-specific features](http://acrmp.github.com/foodcritic/#FC003)
126
+ updated to recognise checks that test for Chef Solo with alternation
127
+ ([related issue](https://github.com/acrmp/foodcritic/issues/103)).
128
+ Thanks @promisedlandt.
129
+ - [FC017: LWRP does not notify when updated](http://acrmp.github.com/foodcritic/#FC017)
130
+ modified to no longer warn when a notification is made without parentheses
131
+ ([related issue](https://github.com/acrmp/foodcritic/issues/121)).
132
+ Thanks @justinforce.
133
+ - [FC019: Access node attributes in a consistent manner](http://acrmp.github.com/foodcritic/#FC019)
134
+ would previously only show warnings for the first matching file.
135
+ - [FC019: Access node attributes in a consistent manner](http://acrmp.github.com/foodcritic/#FC019)
136
+ updated to avoid showing a false positive where a search is passed an
137
+ argument based on a node attribute accessed with a string.
138
+ - [FC019: Access node attributes in a consistent manner](http://acrmp.github.com/foodcritic/#FC019)
139
+ updated to exclude specs, removing a source of false positives.
140
+ - [FC019: Access node attributes in a consistent manner](http://acrmp.github.com/foodcritic/#FC019)
141
+ fixed regression in var_ref handling.
142
+ - [FC019: Access node attributes in a consistent manner](http://acrmp.github.com/foodcritic/#FC019)
143
+ updated to not trigger on quoted symbols
144
+ ([related issue](https://github.com/acrmp/foodcritic/issues/88)).
145
+ Thanks @spheromak.
146
+ - [FC024: Consider adding platform equivalents](http://acrmp.github.com/foodcritic/#FC024)
147
+ updated to only warn about platform equivalents that are listed in the
148
+ cookbook metadata
149
+ ([related issue](https://github.com/acrmp/foodcritic/issues/59)).
150
+ Thanks @tknerr.
151
+ - [FC037: Invalid notification action](http://acrmp.github.com/foodcritic/#FC037)
152
+ would cause foodcritic to halt with an error when a notification action was
153
+ specified as an expression
154
+ ([related issue](https://github.com/acrmp/foodcritic/issues/104)).
155
+ Thanks @jaymzh.
156
+ - [FC040: Execute resource used to run git commands](http://acrmp.github.com/foodcritic/#FC040)
157
+ updated to not match if the git command cannot be expressed as a `git`
158
+ resource.
159
+ ([related issue](https://github.com/acrmp/foodcritic/pull/98)).
160
+ Thanks @trobrock for raising this issue and implementing the fix.
161
+ - [FC043: Prefer new notification syntax](http://acrmp.github.com/foodcritic/#FC043)
162
+ updated to apply only to Chef versions >= 0.9.10
163
+ ([related issue](https://github.com/acrmp/foodcritic/issues/114)).
164
+ Thanks @iainbeeston.
165
+ - [FC044: Avoid bare attribute keys](http://acrmp.github.com/foodcritic/#FC044)
166
+ changed to not raise false positives against block variables
167
+ ([related issue](https://github.com/acrmp/foodcritic/issues/105)).
168
+ Thanks @jaymzh.
169
+
170
+ Other:
171
+
172
+ - The `--repl` command line flag has been removed. This feature little used
173
+ and was problematic for users attempting to use newer versions of pry or
174
+ guard
175
+ ([related issue](https://github.com/acrmp/foodcritic/issues/50)).
176
+ Thanks @jperry, @miketheman, @jtimberman.
177
+ - The `os_command?` api method has been removed.
178
+ - The deprecated `cookbook_path` and `valid_path?` methods have been removed.
179
+ This may cause breakage if you are using foodcritic programatically from
180
+ Ruby. Please update your code to use the `cookbook_paths` and `valid_paths?`
181
+ methods instead.
182
+ - Added regression test for expected output against opscode-cookbooks. Run
183
+ `bundle exec rake regressions` to perform this test.
184
+
185
+ ## 1.7.0 (27th December, 2012)
186
+
187
+ Features
188
+
189
+ - [FC038: Invalid resource action](http://acrmp.github.com/foodcritic/#FC038)
190
+ rule added
191
+ ([related issue](https://github.com/acrmp/foodcritic/issues/61)).
192
+ Thanks @jaymzh.
193
+ - [FC039: Node method cannot be accessed with key](http://acrmp.github.com/foodcritic/#FC039)
194
+ rule added.
195
+ - [FC040: Execute resource used to run git commands](http://acrmp.github.com/foodcritic/#FC040)
196
+ rule stolen from Etsy rules (ETSY003)
197
+ ([related issue](https://github.com/acrmp/foodcritic/issues/72)).
198
+ Thanks @jonlives.
199
+ - [FC041: Execute resource used to run curl or wget commands](http://acrmp.github.com/foodcritic/#FC041)
200
+ rule stolen from Etsy rules (ETSY002)
201
+ ([related issue](https://github.com/acrmp/foodcritic/issues/73)).
202
+ Thanks @jonlives.
203
+ - [FC042: Prefer include_recipe](http://acrmp.github.com/foodcritic/#FC042)
204
+ rule added
205
+ ([related issue](https://github.com/acrmp/foodcritic/pull/77)).
206
+ Thanks @pwelch.
207
+ - [FC043: Prefer new notification syntax](http://acrmp.github.com/foodcritic/#FC043)
208
+ rule added
209
+ ([related issue](https://github.com/acrmp/foodcritic/issues/80)).
210
+ Thanks @jtimberman.
211
+ - [FC044: Avoid bare attribute keys](http://acrmp.github.com/foodcritic/#FC044)
212
+ rule added
213
+ ([related issue](https://github.com/acrmp/foodcritic/issues/75)).
214
+ Thanks @jtimberman.
215
+ - [FC045: Consider setting cookbook name in metadata](http://acrmp.github.com/foodcritic/#FC045)
216
+ rule added
217
+ ([related issue](https://github.com/acrmp/foodcritic/issues/64)).
218
+ Thanks @miketheman.
219
+ - Linter `#check` method no longer requires options to be explicitly passed if
220
+ you are using the defaults
221
+ ([related issue](https://github.com/acrmp/foodcritic/pull/71)).
222
+ Thanks @kreynolds.
223
+
224
+ Bugfixes:
225
+
226
+ - Bump version of Nokogiri to
227
+ [fix installation failure on Ubuntu 12.10](https://github.com/sparklemotion/nokogiri/issues/680)
228
+ ([related issue](https://github.com/acrmp/foodcritic/issues/83)).
229
+ Thanks @dracoater.
230
+ - Support added for quoted symbols as notification actions
231
+ ([related issue](https://github.com/acrmp/foodcritic/pull/94)).
232
+ Thanks @ohm.
233
+ - Add `spec/**/*` and `features/**/*` to default rake task `:exclude_paths`
234
+ ([related issue](https://github.com/acrmp/foodcritic/pull/84)).
235
+ Thanks @fnichol.
236
+ - Remove unnecessary whitespace from rake task output
237
+ ([related issue](https://github.com/acrmp/foodcritic/pull/78)).
238
+ Thanks @ketan.
239
+ - Removed [FC001: Use strings in preference to symbols to access node attributes](http://acrmp.github.com/foodcritic/#FC001)
240
+ ([related issue](https://github.com/acrmp/foodcritic/issues/86)).
241
+ Thanks @jtimberman.
242
+ - [FC003: Check whether you are running with chef server before using server-specific features](http://acrmp.github.com/foodcritic/#FC003)
243
+ updated to also match `unless`
244
+ ([related issue](https://github.com/acrmp/foodcritic/issues/58)).
245
+ Thanks @cap10morgan.
246
+ - Decode numeric attributes.
247
+ This could cause [FC005: Avoid repetition of resource declarations](http://acrmp.github.com/foodcritic/#FC005)
248
+ to warn incorrectly
249
+ ([related issue](https://github.com/acrmp/foodcritic/issues/79)).
250
+ Thanks @masterkorp.
251
+ - Recognise attributes correctly within a block.
252
+ This could cause [FC005: Avoid repetition of resource declarations](http://acrmp.github.com/foodcritic/#FC005)
253
+ to warn incorrectly
254
+ ([related issue](https://github.com/acrmp/foodcritic/issues/76)).
255
+ Thanks @masterkorp.
256
+ - [FC009: Resource attribute not recognised](http://acrmp.github.com/foodcritic/#FC009)
257
+ would warn incorrectly on methods used within a resource block
258
+ ([related issue](https://github.com/acrmp/foodcritic/issues/85)).
259
+ Thanks @arangamani.
260
+ - [FC019: Access node attributes in a consistent manner](http://acrmp.github.com/foodcritic/#FC019)
261
+ would warn incorrectly when referencing node attributes from a user-created
262
+ hash.
263
+ ([related issue](https://github.com/acrmp/foodcritic/issues/54)).
264
+ Thanks @schubert.
265
+ - [FC033: Missing Template](http://acrmp.github.com/foodcritic/#FC033)
266
+ would warn incorrectly when using templates from another cookbook
267
+ ([related issue](https://github.com/acrmp/foodcritic/issues/74)).
268
+ Thanks @woohgit.
269
+
270
+ ## 1.6.1 (31st August, 2012)
271
+
272
+ Bugfixes:
273
+
274
+ - [FC030: Cookbook contains debugger breakpoints](http://acrmp.github.com/foodcritic/#FC030)
275
+ could prevent other rules from processing depending on the tags passed.
276
+ - [FC037: Invalid notification action](http://acrmp.github.com/foodcritic/#FC037)
277
+ would incorrectly warn against `subscribes` notifications
278
+ ([related issue](https://github.com/acrmp/foodcritic/issues/65)).
279
+ Thanks @jtimberman.
280
+
281
+ ## 1.6.0 (28th August, 2012)
282
+
283
+ Bugfixes:
284
+
285
+ - Removed FC035: Template uses node attribute directly. For a discussion of
286
+ the reasons for removal see the
287
+ [related issue](https://github.com/acrmp/foodcritic/issues/60).
288
+
289
+ ## 1.5.1 (21st August, 2012)
290
+
291
+ Bugfixes:
292
+
293
+ - Remove pry-doc dependency to resolve pry version conflict.
294
+
295
+ ## 1.5.0 (21st August, 2012)
296
+
297
+ Features:
298
+
299
+ - [FC033: Missing template](http://acrmp.github.com/foodcritic/#FC033) rule
300
+ added.
301
+ - [FC034: Unused template variables](http://acrmp.github.com/foodcritic/#FC034)
302
+ rule added
303
+ ([related issue](https://github.com/acrmp/foodcritic/issues/36)).
304
+ - [FC035: Template uses node attribute directly](http://acrmp.github.com/foodcritic/#FC035)
305
+ rule added. This is a style rule that may prove controversial.
306
+ - [FC037: Invalid notification action](http://acrmp.github.com/foodcritic/#FC037)
307
+ rule added.
308
+ - The `#read_ast` API method now supports Erb templates.
309
+ - API method `#resource_action?` added.
310
+ - DSL extended to include `library`, `metadata` and `template`.
311
+
312
+ Bugfixes:
313
+
314
+ - [FC020: Conditional execution string attribute looks like Ruby](http://acrmp.github.com/foodcritic/#FC033)
315
+ rule has been removed as unreliable.
316
+ - The `#attribute_access` API method now correctly allows a type of `:any`.
317
+ - The `#notifications` API method now supports notifications enclosed in braces
318
+ ([related issue](https://github.com/etsy/foodcritic-rules/issues/3)).
319
+ - Ensure command-line help is shown when an invalid option is passed. Thanks
320
+ to @juanje for finding and fixing this issue.
321
+
322
+ ## 1.4.0 (15th June, 2012)
323
+
324
+ Features:
325
+
326
+ - [FC027: Resource sets internal attribute](http://acrmp.github.com/foodcritic/#FC027)
327
+ rule added.
328
+ Thanks @macros.
329
+ - [FC028: Incorrect #platform? usage](http://acrmp.github.com/foodcritic/#FC028)
330
+ rule added.
331
+ - [FC029: No leading cookbook name in recipe metadata](http://acrmp.github.com/foodcritic/#FC029)
332
+ rule added.
333
+ - [FC030: Cookbook contains debugger breakpoints](http://acrmp.github.com/foodcritic/#FC030)
334
+ rule added
335
+ ([related issue](https://github.com/acrmp/foodcritic/issues/36)).
336
+ Thanks @bryanwb.
337
+ - [FC031: Cookbook without metadata file](http://acrmp.github.com/foodcritic/#FC031)
338
+ rule added
339
+ ([related issue](https://github.com/acrmp/foodcritic/issues/43)).
340
+ Thanks to @juanje for proposing and implementing this rule.
341
+ - [FC032: Invalid notification timing](http://acrmp.github.com/foodcritic/#FC032)
342
+ rule added.
343
+ - Added the [notifications](http://acrmp.github.com/foodcritic/#notifications)
344
+ API method to provide more convenient access to resource notifications
345
+ ([related issue](https://github.com/acrmp/foodcritic/issues/31)).
346
+
347
+ Bugfixes:
348
+
349
+ - [FC003: Check whether you are running with chef server before using server-specific features](http://acrmp.github.com/foodcritic/#FC003)
350
+ would warn if solo was checked for with `Chef::Config.solo`
351
+ ([related issue](https://github.com/acrmp/foodcritic/issues/26)).
352
+ Thanks to @miketheman for identifying and fixing this issue.
353
+ - [FC007: Ensure recipe dependencies are reflected in cookbook metadata](http://acrmp.github.com/foodcritic/#FC007)
354
+ would incorrectly warn if the cookbook name specified for `include_recipe`
355
+ was dynamic
356
+ ([related issue](https://github.com/acrmp/foodcritic/issues/44)).
357
+ Thanks @markjreed.
358
+ - [FC019: Access node attributes in a consistent manner](http://acrmp.github.com/foodcritic/#FC019)
359
+ has been modified to no longer warn if the method called on node is called
360
+ explicitly with brackets
361
+ ([related issue](https://github.com/acrmp/foodcritic/issues/22)).
362
+ Thanks @jaymzh.
363
+ - The [resource_attributes](http://acrmp.github.com/foodcritic/#resource_attributes)
364
+ API method has been updated to return boolean values correctly.
365
+
366
+ ## 1.3.1 (9th June, 2012)
367
+
368
+ Bugfixes:
369
+
370
+ - Changes made to support multiple cookbook paths in 1.3.0 broke
371
+ compatibility with earlier versions of the linting API. This release
372
+ restores compatibility with third party code that uses the linter
373
+ `#cookbook_path` or `#valid_path?` methods.
374
+ - The Nokogiri dependency constraint has been locked to 1.5.0 again as
375
+ Nokogiri 1.5.3 also appears to segfault in certain circumstances.
376
+
377
+ ## 1.3.0 (21st May, 2012)
378
+
379
+ Features:
380
+
381
+ - [FC026: Conditional execution block attribute contains only string](http://acrmp.github.com/foodcritic/#FC026)
382
+ rule added
383
+ ([related issue](https://github.com/acrmp/foodcritic/issues/30)).
384
+ Thanks to @mkocher for proposing this rule.
385
+ - Foodcritic now accepts multiple cookbook paths as arguments and supports
386
+ linting of individual files only. Big thanks to @cgriego for these changes.
387
+ These lay the groundwork for his new
388
+ [guard-foodcritic](https://github.com/cgriego/guard-foodcritic) project.
389
+
390
+ Bugfixes:
391
+
392
+ - [FC003: Check whether you are running with chef server before using server-specific features](http://acrmp.github.com/foodcritic/#FC003)
393
+ would still warn if solo was checked for as a string
394
+ ([related issue](https://github.com/acrmp/foodcritic/issues/26)).
395
+ Thanks to @miketheman for identifying and fixing this issue.
396
+ - [FC019: Access node attributes in a consistent manner](http://acrmp.github.com/foodcritic/#FC019)
397
+ would warn when the node object had been re-opened for extension
398
+ ([related issue](https://github.com/acrmp/foodcritic/issues/22)).
399
+ Thanks @jaymzh.
400
+ - [FC020: Conditional execution string attribute looks like Ruby](http://acrmp.github.com/foodcritic/#FC020)
401
+ updated to not warn against strings that appear to contain file paths or Windows `net use`
402
+ ([related issue](https://github.com/acrmp/foodcritic/issues/30)).
403
+ Thanks @eherot and @mconigliaro.
404
+ - [FC022: Resource condition within loop may not behave as expected](http://acrmp.github.com/foodcritic/#FC022)
405
+ would warn incorrectly if the resource name was set directly to the block
406
+ variable rather than being a string expression
407
+ ([related issue](https://github.com/acrmp/foodcritic/issues/29)).
408
+ Thanks @eherot.
409
+ - The [resource_attributes](http://acrmp.github.com/foodcritic/#resource_attributes)
410
+ API method has been updated to return the AST for resource notifications
411
+ ([related issue](https://github.com/acrmp/foodcritic/issues/31)).
412
+ Thanks @jonlives.
413
+
414
+ Other:
415
+
416
+ - [Etsy have open-sourced their Foodcritic rules](https://github.com/etsy/foodcritic-rules).
417
+ You should definitely check these out.
418
+ - The effective Chef version for determining the rules to apply has been
419
+ bumped to 0.10.10.
420
+
421
+ ## 1.2.0 (21st April, 2012)
422
+
423
+ Features:
424
+
425
+ - [FC025: Prefer chef_gem to compile-time gem install](http://acrmp.github.com/foodcritic/#FC025)
426
+ rule added.
427
+ - Rules can now declare which versions of Chef they `apply_to`. The new
428
+ command line argument `-c` (`--chef-version`) should be used to specify the
429
+ effective Chef version.
430
+
431
+ Bugfixes:
432
+
433
+ - [FC001: Use strings in preference to symbols to access node attributes](http://acrmp.github.com/foodcritic/#FC001)
434
+ could show false positives when using Chef search.
435
+ - [FC001: Use strings in preference to symbols to access node attributes](http://acrmp.github.com/foodcritic/#FC001)
436
+ would overlook the use of symbols to access node attributes when passing
437
+ template variables.
438
+ - [FC002: Avoid string interpolation where not required](http://acrmp.github.com/foodcritic/#FC002)
439
+ fixed to no longer ignore the first keypair in a Hash
440
+ ([related issue](https://github.com/acrmp/foodcritic/issues/24)).
441
+ Thanks @Ips1975.
442
+ - [FC004: Use a service resource to start and stop services](http://acrmp.github.com/foodcritic/#FC004)
443
+ modified not to warn if the action is not supported by the `service`
444
+ resource.
445
+ - [FC005: Avoid repetition of resource declarations](http://acrmp.github.com/foodcritic/#FC005)
446
+ modified not to warn when resources are branched within conditionals or
447
+ provider actions.
448
+ - [FC007: Ensure recipe dependencies are reflected in cookbook metadata](http://acrmp.github.com/foodcritic/#FC007)
449
+ modified to ignore the use of `include_recipe` with embedded expressions.
450
+ - [FC023: Prefer conditional attributes](http://acrmp.github.com/foodcritic/#FC023)
451
+ modified not to warn if the conditional expression has an `else`.
452
+ - The `resource_attributes` API method has been updated to return block
453
+ attributes which were previously ignored
454
+ ([related issue](https://github.com/acrmp/foodcritic/issues/23)).
455
+ Thanks @jonlives.
456
+
457
+ ## 1.1.0 (25th March, 2012)
458
+
459
+ Features:
460
+
461
+ - [FC024: Consider adding platform equivalents](http://acrmp.github.com/foodcritic/#FC024) rule added.
462
+ - When writing new rules it is no longer necessary to explicitly map
463
+ matching AST nodes to matches. You can now just return the AST nodes.
464
+
465
+ Bugfixes:
466
+
467
+ - The `cookbook_name` method now reflects the cookbook name if specified in
468
+ metadata. This prevents a warning from being shown by
469
+ [FC007: Ensure recipe dependencies are reflected in cookbook metadata](http://acrmp.github.com/foodcritic/#FC007)
470
+ if the cookbook is in a differently named directory.
471
+ - The `declared_dependencies` method previously would intermix version strings
472
+ in the list of cookbook names.
473
+
474
+ Other:
475
+
476
+ - Chef 0.10.10 will include a new DSL method for defining a `default_action`
477
+ for resources. Rule
478
+ [FC016: LWRP does not declare a default action](http://acrmp.github.com/foodcritic/#FC016)
479
+ has been updated to recognise the DSL change.
480
+ - Nokogiri dependency constraint changed to no longer lock to 1.5.0 as their
481
+ next release should include the fix for custom XPath functions.
482
+
483
+ ## 1.0.1 (15th March, 2012)
484
+
485
+ Bugfixes:
486
+
487
+ - Nokogiri 1.5.1 and 1.5.2 cause a segfault so prevent their use until a fix
488
+ is released
489
+ ([related issue](https://github.com/acrmp/foodcritic/issues/18)).
490
+ Thanks @miah.
491
+
492
+ ## 1.0.0 (4th March, 2012)
493
+
494
+ Features:
495
+
496
+ - New `-I` option added to specify the path to your own custom rules
497
+ ([related issue](https://github.com/acrmp/foodcritic/issues/8)).
498
+ - The
499
+ [Rule API](https://github.com/acrmp/foodcritic/blob/v1.0.0/lib/foodcritic/api.rb)
500
+ was previously not supported and subject to change without warning. From
501
+ this release it will now follow the
502
+ [same versioning policy](http://docs.rubygems.org/read/chapter/7) as the
503
+ command line interface.
504
+ - A version flag (--version or -V) has been added ([related issue](https://github.com/acrmp/foodcritic/issues/16)).
505
+
506
+ Bugfixes:
507
+
508
+ - The evaluation of rule tags has been updated to be consistent with Cucumber.
509
+ The major version number of foodcritic has been bumped to indicate that this
510
+ is a breaking change. If you make use of tags (for example in a CI build)
511
+ you may need to update your syntax. See the
512
+ [related issue](https://github.com/acrmp/foodcritic/issues/11) for more
513
+ information. Thanks @jaymzh.
514
+ - [FC003: Check whether you are running with chef server before using
515
+ server-specific features](http://acrmp.github.com/foodcritic/#FC003) has
516
+ been updated to correctly identify the new version of chef-solo-search
517
+ ([related issue](https://github.com/acrmp/foodcritic/issues/17)).
518
+
519
+ ## 0.11.1 (29th February, 2012)
520
+
521
+ Bugfixes:
522
+
523
+ - Foodcritic could fail to activate yajl-json in some circumstances, failing
524
+ with a runtime error. Whether this occurred was dependent on the version of
525
+ yajl-ruby activated by Chef, which would vary dependent on the other gems
526
+ installed on the system. See the
527
+ [related issue](https://github.com/acrmp/foodcritic/issues/14) for more
528
+ information. Thanks @jaymzh for identifying the issue and striving to get
529
+ Foodcritic playing well with Omnibus.
530
+
531
+ ## 0.11.0 (22nd February, 2012)
532
+
533
+ Bugfixes:
534
+
535
+ - Major bugfix to [FC006: Mode should be quoted or fully specified when setting file permissions](http://acrmp.github.com/foodcritic/#FC006). In earlier versions a four-digit literal file mode that set the first octet would not have been picked up by this rule ([related issue](https://github.com/acrmp/foodcritic/pull/9)). Thanks @aia for finding and fixing this bug. Check your cookbooks against FC006 after upgrading to see if you are affected.
536
+
537
+ ## 0.10.0 (20th February, 2012)
538
+
539
+ Features:
540
+
541
+ - Performance improvements.
542
+ - [FC023: Prefer conditional attributes](http://acrmp.github.com/foodcritic/#FC023) rule added. Stolen from @ampledata with thanks.
543
+ - New `-S` option added to allow an alternate search grammar to be specified.
544
+
545
+ Other:
546
+
547
+ - Chef is no longer loaded at startup for performance reasons. Foodcritic now ships with Chef DSL metadata.
548
+
549
+ ## 0.9.0 (26th January, 2012)
550
+
551
+ Features:
552
+
553
+ - New experimental `-C` option added to output context for rule matches.
554
+ - [FC021: Resource condition in provider may not behave as expected](http://acrmp.github.com/foodcritic/#FC021) rule
555
+ added.
556
+ - [FC022: Resource condition within loop may not behave as expected](http://acrmp.github.com/foodcritic/#FC022) rule
557
+ added.
558
+
559
+ Bugfixes:
560
+
561
+ - [FC005: Avoid repetition of resource declarations](http://acrmp.github.com/foodcritic/#FC005) rule modified to only
562
+ warn when there are at least three *consecutive* resources of the same type that could be 'rolled up' into a loop.
563
+ - [FC016: LWRP does not declare a default action](http://acrmp.github.com/foodcritic/#FC016) rule restored. Thanks @stevendanna
564
+ - [FC019: Access node attributes in a consistent manner](http://acrmp.github.com/foodcritic/#FC019) rule modified to no
565
+ longer treat DSL mixin methods as auto-vivified attributes. Identification of least used access method should now be
566
+ accurate.
567
+
568
+ Other:
569
+
570
+ - [FC020: Conditional execution string attribute looks like Ruby](http://acrmp.github.com/foodcritic/#FC020) rule now
571
+ grabs conditions from within single quotes.
572
+
573
+ ## 0.8.1 (20th January, 2012)
574
+
575
+ Bugfixes:
576
+
577
+ - [FC019: Access node attributes in a consistent manner](http://acrmp.github.com/foodcritic/#FC019) modified
578
+ to avoid false positives on methods invoked on values in a Mash.
579
+
580
+ ## 0.8.0 (19th January, 2012)
581
+
582
+ Features:
583
+
584
+ - [FC019: Access node attributes in a consistent manner](http://acrmp.github.com/foodcritic/#FC019) rule added.
585
+ - [FC020: Conditional execution string attribute looks like Ruby](http://acrmp.github.com/foodcritic/#FC020) rule added.
586
+
587
+ Other:
588
+
589
+ - Rule 'FC016: LWRP does not declare a default action' was incorrectly checking the provider for a default action
590
+ rather than the resource. Removed this rule temporarily to avoid showing false positives. A user has patched this
591
+ and will be submitting a pull request shortly.
592
+
593
+ ## 0.7.0 (31st December, 2011)
594
+
595
+ Features:
596
+
597
+ - New `-f` option added to allow you to specify which warnings should result in the build being failed. See the new
598
+ documentation on [using Foodcritic in Continuous Integration](http://acrmp.github.com/foodcritic/#ci) for more
599
+ information.
600
+ - New `-r` option added to drop you into the Pry REPL to interactively develop rules. See the updated documentation on
601
+ [Writing a new rule](http://acrmp.github.com/foodcritic/#writing-a-new-rule) for more information.
602
+
603
+ Bugfixes:
604
+
605
+ - [FC003: Check whether you are running with chef server before using server-specific features](http://acrmp.github.com/foodcritic/#FC003) rule
606
+ modified to not warn if the [edelight chef-solo-search library](https://github.com/edelight/chef-solo-search) has been installed. Thanks @tobami.
607
+ - [FC007: Ensure recipe dependencies are reflected in cookbook metadata](http://acrmp.github.com/foodcritic/#FC007) rule
608
+ modified to flag undeclared dependencies against the offending file rather than metadata.rb.
609
+ - Removed the unused description field from the rule dsl.
610
+
611
+ Other:
612
+
613
+ - Project features now run much faster, running in-process by default. You can set an environment variable
614
+ (`FC_FORK_PROCESS`) to specify that Cucumber runs should match the earlier behaviour and spawn a separate process
615
+ using Aruba.
616
+
617
+ ## 0.6.0 (18th December, 2011)
618
+
619
+ Features:
620
+
621
+ - [FC001: Use strings in preference to symbols to access node attributes](http://acrmp.github.com/foodcritic/#FC001)
622
+ rule added.
623
+ - [FC004: Use a service resource to start and stop services](http://acrmp.github.com/foodcritic/#FC004) rule extended
624
+ to recognise upstart and invoke-rc.d.
625
+ - [FC011: Missing README in markdown format](http://acrmp.github.com/foodcritic/#FC011) rule added.
626
+ - [FC012: Use Markdown for README rather than RDoc](http://acrmp.github.com/foodcritic/#FC012) rule added.
627
+ - [FC013: Use file_cache_path rather than hard-coding tmp paths ](http://acrmp.github.com/foodcritic/#FC013) rule added.
628
+ - [FC014: Consider extracting long ruby_block to library](http://acrmp.github.com/foodcritic/#FC014) rule added.
629
+ - [FC015: Consider converting definition to a LWRP](http://acrmp.github.com/foodcritic/#FC015) rule added.
630
+ - [FC016: LWRP does not declare a default action](http://acrmp.github.com/foodcritic/#FC016) rule added.
631
+ - [FC017: LWRP does not notify when updated](http://acrmp.github.com/foodcritic/#FC017) rule added.
632
+ - [FC018: LWRP uses deprecated notification syntax](http://acrmp.github.com/foodcritic/#FC018) rule added.
633
+
634
+ Bugfixes:
635
+
636
+ - Ensure warnings are line sorted numerically. Commit eb1762fd0fbf99fa513783d7838ceac0147c37bc
637
+ - [FC005: Avoid repetition of resource declarations](http://acrmp.github.com/foodcritic/#FC005) rule made less aggressive.
638
+
639
+ ## 0.5.2 (15th December, 2011)
640
+
641
+ Bugfixes:
642
+
643
+ - Fix JSON version range for compatibility with Bundler / Chef 0.10.6. ([related issue](https://github.com/acrmp/foodcritic/issues/6)). Thanks @dysinger.
644
+
645
+ ## 0.5.1 (14th December, 2011)
646
+
647
+ Features:
648
+
649
+ - Relaxed Ruby version constraint so we can run on 1.9.2 ([related issue](https://github.com/acrmp/foodcritic/issues/5)). Yay. Thanks @someara.
650
+
651
+ ## 0.5.0 (13th December, 2011)
652
+
653
+ Features:
654
+
655
+ - Added the ability to choose rules to apply via tags ([related issue](https://github.com/acrmp/foodcritic/issues/4)).
656
+ This uses the same syntax as [Cucumber tag expressions](https://github.com/cucumber/cucumber/wiki/tags).
657
+ - [FC010: Invalid search syntax](http://acrmp.github.com/foodcritic/#FC010) rule added.
658
+
659
+ ## 0.4.0 (10th December, 2011)
660
+
661
+ Features:
662
+
663
+ - [Spiffy new home page and documentation](http://acrmp.github.com/foodcritic/)
664
+ - [FC008: Generated cookbook metadata needs updating](http://acrmp.github.com/foodcritic/#FC008) rule added.
665
+ - [FC009: Resource attribute not recognised rule added](http://acrmp.github.com/foodcritic/#FC009).
666
+ This adds a dependency on the Chef gem.
667
+ - Performance improvement.
668
+
669
+ Bugfixes:
670
+
671
+ - Fixed typo in FC004 feature description ([related issue](https://github.com/acrmp/foodcritic/issues/2)). Thanks @smith.
672
+ - Prevented statements within nested resource blocks from being interpreted as resource attributes.
673
+
674
+ ## 0.3.0 (4th December, 2011)
675
+
676
+ Features:
677
+
678
+ - Significantly slower! But now you can write rules using [xpath or css selectors](http://nokogiri.org/).
679
+ - FC006: File mode rule added.
680
+ - FC007: Undeclared recipe dependencies rule added.
681
+
682
+ ## 0.2.0 (1st December, 2011)
683
+
684
+ Bugfixes:
685
+
686
+ - Removed 'FC001: Use symbols in preference to strings to access node attributes' until a policy mechanism is
687
+ introduced ([related issue](https://github.com/acrmp/foodcritic/issues/1)). Thanks @jtimberman
688
+
689
+ ## 0.1.0 (30th November, 2011)
690
+
691
+ Initial version.