foodcritic 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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.