platformos-check 0.0.1

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 (240) hide show
  1. checksums.yaml +7 -0
  2. data/.dockerignore +2 -0
  3. data/.gitignore +22 -0
  4. data/.rubocop.yml +555 -0
  5. data/CHANGELOG.md +5 -0
  6. data/CODE_OF_CONDUCT.md +74 -0
  7. data/CONTRIBUTING.md +209 -0
  8. data/Gemfile +33 -0
  9. data/Guardfile +7 -0
  10. data/LICENSE.md +10 -0
  11. data/Makefile +18 -0
  12. data/README.md +189 -0
  13. data/RELEASING.md +35 -0
  14. data/Rakefile +83 -0
  15. data/TROUBLESHOOTING.md +35 -0
  16. data/bin/platformos-check +29 -0
  17. data/bin/platformos-check-language-server +29 -0
  18. data/config/default.yml +98 -0
  19. data/config/nothing.yml +11 -0
  20. data/data/platformos_liquid/built_in_liquid_objects.json +66 -0
  21. data/data/platformos_liquid/deprecated_filters.json +22 -0
  22. data/data/platformos_liquid/documentation/filters.json +6 -0
  23. data/data/platformos_liquid/documentation/latest.json +2 -0
  24. data/data/platformos_liquid/documentation/objects.json +6 -0
  25. data/data/platformos_liquid/documentation/tags.json +6 -0
  26. data/docker/check.Dockerfile +3 -0
  27. data/docker/lsp.Dockerfile +21 -0
  28. data/docs/api/check.md +15 -0
  29. data/docs/api/html_check.md +46 -0
  30. data/docs/api/liquid_check.md +115 -0
  31. data/docs/api/yaml_check.md +19 -0
  32. data/docs/checks/TEMPLATE.md.erb +52 -0
  33. data/docs/checks/convert_include_to_render.md +48 -0
  34. data/docs/checks/deprecated_filter.md +30 -0
  35. data/docs/checks/html_parsing_error.md +50 -0
  36. data/docs/checks/img_lazy_loading.md +63 -0
  37. data/docs/checks/img_width_and_height.md +79 -0
  38. data/docs/checks/invalid_args.md +56 -0
  39. data/docs/checks/liquid_tag.md +65 -0
  40. data/docs/checks/missing_enable_comment.md +50 -0
  41. data/docs/checks/missing_template.md +65 -0
  42. data/docs/checks/parse_json_format.md +76 -0
  43. data/docs/checks/parser_blocking_javascript.md +97 -0
  44. data/docs/checks/required_layout_object.md +28 -0
  45. data/docs/checks/space_inside_braces.md +89 -0
  46. data/docs/checks/syntax_error.md +49 -0
  47. data/docs/checks/template_length.md +45 -0
  48. data/docs/checks/undefined_object.md +71 -0
  49. data/docs/checks/unknown_filter.md +46 -0
  50. data/docs/checks/unused_assign.md +63 -0
  51. data/docs/checks/unused_partial.md +32 -0
  52. data/docs/checks/valid_yaml.md +48 -0
  53. data/docs/flamegraph.svg +18488 -0
  54. data/docs/language_server/code-action-command-palette.png +0 -0
  55. data/docs/language_server/code-action-flow.png +0 -0
  56. data/docs/language_server/code-action-keyboard.png +0 -0
  57. data/docs/language_server/code-action-light-bulb.png +0 -0
  58. data/docs/language_server/code-action-problem.png +0 -0
  59. data/docs/language_server/code-action-quickfix.png +0 -0
  60. data/docs/language_server/how_to_correct_code_with_code_actions_and_execute_command.md +197 -0
  61. data/docs/preview.png +0 -0
  62. data/exe/platformos-check +6 -0
  63. data/exe/platformos-check-language-server +7 -0
  64. data/lib/platformos_check/analyzer.rb +178 -0
  65. data/lib/platformos_check/api_call_file.rb +9 -0
  66. data/lib/platformos_check/app.rb +138 -0
  67. data/lib/platformos_check/app_file.rb +89 -0
  68. data/lib/platformos_check/app_file_rewriter.rb +79 -0
  69. data/lib/platformos_check/asset_file.rb +34 -0
  70. data/lib/platformos_check/bug.rb +23 -0
  71. data/lib/platformos_check/check.rb +163 -0
  72. data/lib/platformos_check/checks/TEMPLATE.rb.erb +11 -0
  73. data/lib/platformos_check/checks/convert_include_to_render.rb +17 -0
  74. data/lib/platformos_check/checks/deprecated_filter.rb +123 -0
  75. data/lib/platformos_check/checks/html_parsing_error.rb +13 -0
  76. data/lib/platformos_check/checks/img_lazy_loading.rb +18 -0
  77. data/lib/platformos_check/checks/img_width_and_height.rb +46 -0
  78. data/lib/platformos_check/checks/invalid_args.rb +81 -0
  79. data/lib/platformos_check/checks/liquid_tag.rb +47 -0
  80. data/lib/platformos_check/checks/missing_enable_comment.rb +37 -0
  81. data/lib/platformos_check/checks/missing_template.rb +107 -0
  82. data/lib/platformos_check/checks/parse_json_format.rb +31 -0
  83. data/lib/platformos_check/checks/parser_blocking_javascript.rb +17 -0
  84. data/lib/platformos_check/checks/required_layout_object.rb +41 -0
  85. data/lib/platformos_check/checks/space_inside_braces.rb +150 -0
  86. data/lib/platformos_check/checks/syntax_error.rb +31 -0
  87. data/lib/platformos_check/checks/template_length.rb +20 -0
  88. data/lib/platformos_check/checks/undefined_object.rb +206 -0
  89. data/lib/platformos_check/checks/unknown_filter.rb +27 -0
  90. data/lib/platformos_check/checks/unused_assign.rb +101 -0
  91. data/lib/platformos_check/checks/unused_partial.rb +93 -0
  92. data/lib/platformos_check/checks/valid_yaml.rb +16 -0
  93. data/lib/platformos_check/checks.rb +73 -0
  94. data/lib/platformos_check/checks_tracking.rb +9 -0
  95. data/lib/platformos_check/cli.rb +239 -0
  96. data/lib/platformos_check/config.rb +219 -0
  97. data/lib/platformos_check/config_file.rb +6 -0
  98. data/lib/platformos_check/corrector.rb +68 -0
  99. data/lib/platformos_check/disabled_check.rb +44 -0
  100. data/lib/platformos_check/disabled_checks.rb +96 -0
  101. data/lib/platformos_check/email_file.rb +9 -0
  102. data/lib/platformos_check/exceptions.rb +36 -0
  103. data/lib/platformos_check/file_system_storage.rb +93 -0
  104. data/lib/platformos_check/graphql_file.rb +68 -0
  105. data/lib/platformos_check/html_check.rb +8 -0
  106. data/lib/platformos_check/html_node.rb +210 -0
  107. data/lib/platformos_check/html_visitor.rb +36 -0
  108. data/lib/platformos_check/in_memory_storage.rb +68 -0
  109. data/lib/platformos_check/json_file.rb +57 -0
  110. data/lib/platformos_check/json_helper.rb +73 -0
  111. data/lib/platformos_check/json_helpers.rb +24 -0
  112. data/lib/platformos_check/json_printer.rb +32 -0
  113. data/lib/platformos_check/language_server/bridge.rb +167 -0
  114. data/lib/platformos_check/language_server/channel.rb +69 -0
  115. data/lib/platformos_check/language_server/client_capabilities.rb +27 -0
  116. data/lib/platformos_check/language_server/code_action_engine.rb +32 -0
  117. data/lib/platformos_check/language_server/code_action_provider.rb +41 -0
  118. data/lib/platformos_check/language_server/code_action_providers/quickfix_code_action_provider.rb +85 -0
  119. data/lib/platformos_check/language_server/code_action_providers/source_fix_all_code_action_provider.rb +41 -0
  120. data/lib/platformos_check/language_server/completion_context.rb +52 -0
  121. data/lib/platformos_check/language_server/completion_engine.rb +32 -0
  122. data/lib/platformos_check/language_server/completion_helper.rb +26 -0
  123. data/lib/platformos_check/language_server/completion_provider.rb +53 -0
  124. data/lib/platformos_check/language_server/completion_providers/assignments_completion_provider.rb +40 -0
  125. data/lib/platformos_check/language_server/completion_providers/filter_completion_provider.rb +102 -0
  126. data/lib/platformos_check/language_server/completion_providers/object_attribute_completion_provider.rb +48 -0
  127. data/lib/platformos_check/language_server/completion_providers/object_completion_provider.rb +38 -0
  128. data/lib/platformos_check/language_server/completion_providers/render_snippet_completion_provider.rb +50 -0
  129. data/lib/platformos_check/language_server/completion_providers/tag_completion_provider.rb +41 -0
  130. data/lib/platformos_check/language_server/configuration.rb +89 -0
  131. data/lib/platformos_check/language_server/constants.rb +29 -0
  132. data/lib/platformos_check/language_server/diagnostic.rb +129 -0
  133. data/lib/platformos_check/language_server/diagnostics_engine.rb +131 -0
  134. data/lib/platformos_check/language_server/diagnostics_manager.rb +184 -0
  135. data/lib/platformos_check/language_server/document_change_corrector.rb +271 -0
  136. data/lib/platformos_check/language_server/document_link_engine.rb +21 -0
  137. data/lib/platformos_check/language_server/document_link_provider.rb +71 -0
  138. data/lib/platformos_check/language_server/document_link_providers/asset_document_link_provider.rb +11 -0
  139. data/lib/platformos_check/language_server/document_link_providers/include_document_link_provider.rb +11 -0
  140. data/lib/platformos_check/language_server/document_link_providers/render_document_link_provider.rb +11 -0
  141. data/lib/platformos_check/language_server/document_link_providers/section_document_link_provider.rb +11 -0
  142. data/lib/platformos_check/language_server/execute_command_engine.rb +19 -0
  143. data/lib/platformos_check/language_server/execute_command_provider.rb +30 -0
  144. data/lib/platformos_check/language_server/execute_command_providers/correction_execute_command_provider.rb +48 -0
  145. data/lib/platformos_check/language_server/execute_command_providers/run_checks_execute_command_provider.rb +28 -0
  146. data/lib/platformos_check/language_server/handler.rb +310 -0
  147. data/lib/platformos_check/language_server/hover_engine.rb +32 -0
  148. data/lib/platformos_check/language_server/hover_provider.rb +53 -0
  149. data/lib/platformos_check/language_server/hover_providers/filter_hover_provider.rb +113 -0
  150. data/lib/platformos_check/language_server/io_messenger.rb +109 -0
  151. data/lib/platformos_check/language_server/messenger.rb +27 -0
  152. data/lib/platformos_check/language_server/protocol.rb +55 -0
  153. data/lib/platformos_check/language_server/server.rb +188 -0
  154. data/lib/platformos_check/language_server/tokens.rb +55 -0
  155. data/lib/platformos_check/language_server/type_helper.rb +22 -0
  156. data/lib/platformos_check/language_server/uri_helper.rb +39 -0
  157. data/lib/platformos_check/language_server/variable_lookup_finder/assignments_finder/node_handler.rb +87 -0
  158. data/lib/platformos_check/language_server/variable_lookup_finder/assignments_finder/scope.rb +60 -0
  159. data/lib/platformos_check/language_server/variable_lookup_finder/assignments_finder/scope_visitor.rb +44 -0
  160. data/lib/platformos_check/language_server/variable_lookup_finder/assignments_finder.rb +76 -0
  161. data/lib/platformos_check/language_server/variable_lookup_finder/constants.rb +44 -0
  162. data/lib/platformos_check/language_server/variable_lookup_finder/liquid_fixer.rb +103 -0
  163. data/lib/platformos_check/language_server/variable_lookup_finder/potential_lookup.rb +10 -0
  164. data/lib/platformos_check/language_server/variable_lookup_finder/tolerant_parser.rb +94 -0
  165. data/lib/platformos_check/language_server/variable_lookup_finder.rb +262 -0
  166. data/lib/platformos_check/language_server/variable_lookup_traverser.rb +70 -0
  167. data/lib/platformos_check/language_server/versioned_in_memory_storage.rb +84 -0
  168. data/lib/platformos_check/language_server.rb +71 -0
  169. data/lib/platformos_check/layout_file.rb +15 -0
  170. data/lib/platformos_check/liquid_check.rb +10 -0
  171. data/lib/platformos_check/liquid_file.rb +102 -0
  172. data/lib/platformos_check/liquid_node.rb +570 -0
  173. data/lib/platformos_check/liquid_visitor.rb +39 -0
  174. data/lib/platformos_check/migration_file.rb +9 -0
  175. data/lib/platformos_check/node.rb +53 -0
  176. data/lib/platformos_check/offense.rb +228 -0
  177. data/lib/platformos_check/page_file.rb +9 -0
  178. data/lib/platformos_check/parsing_helpers.rb +21 -0
  179. data/lib/platformos_check/partial_file.rb +15 -0
  180. data/lib/platformos_check/platformos_liquid/deprecated_filter.rb +31 -0
  181. data/lib/platformos_check/platformos_liquid/documentation/markdown_template.rb +51 -0
  182. data/lib/platformos_check/platformos_liquid/documentation.rb +45 -0
  183. data/lib/platformos_check/platformos_liquid/filter.rb +19 -0
  184. data/lib/platformos_check/platformos_liquid/object.rb +15 -0
  185. data/lib/platformos_check/platformos_liquid/source_index/base_entry.rb +66 -0
  186. data/lib/platformos_check/platformos_liquid/source_index/base_state.rb +23 -0
  187. data/lib/platformos_check/platformos_liquid/source_index/filter_entry.rb +26 -0
  188. data/lib/platformos_check/platformos_liquid/source_index/filter_state.rb +11 -0
  189. data/lib/platformos_check/platformos_liquid/source_index/object_entry.rb +20 -0
  190. data/lib/platformos_check/platformos_liquid/source_index/object_state.rb +11 -0
  191. data/lib/platformos_check/platformos_liquid/source_index/parameter_entry.rb +25 -0
  192. data/lib/platformos_check/platformos_liquid/source_index/property_entry.rb +21 -0
  193. data/lib/platformos_check/platformos_liquid/source_index/return_type_entry.rb +41 -0
  194. data/lib/platformos_check/platformos_liquid/source_index/tag_entry.rb +24 -0
  195. data/lib/platformos_check/platformos_liquid/source_index/tag_state.rb +11 -0
  196. data/lib/platformos_check/platformos_liquid/source_index.rb +79 -0
  197. data/lib/platformos_check/platformos_liquid/source_manager.rb +116 -0
  198. data/lib/platformos_check/platformos_liquid/tag.rb +59 -0
  199. data/lib/platformos_check/platformos_liquid.rb +21 -0
  200. data/lib/platformos_check/position.rb +180 -0
  201. data/lib/platformos_check/position_helper.rb +57 -0
  202. data/lib/platformos_check/printer.rb +87 -0
  203. data/lib/platformos_check/regex_helpers.rb +21 -0
  204. data/lib/platformos_check/releaser.rb +43 -0
  205. data/lib/platformos_check/schema_file.rb +6 -0
  206. data/lib/platformos_check/sms_file.rb +9 -0
  207. data/lib/platformos_check/storage.rb +29 -0
  208. data/lib/platformos_check/string_helpers.rb +48 -0
  209. data/lib/platformos_check/tags/background.rb +67 -0
  210. data/lib/platformos_check/tags/base.rb +14 -0
  211. data/lib/platformos_check/tags/base_block.rb +14 -0
  212. data/lib/platformos_check/tags/base_tag_methods.rb +59 -0
  213. data/lib/platformos_check/tags/cache.rb +13 -0
  214. data/lib/platformos_check/tags/export.rb +30 -0
  215. data/lib/platformos_check/tags/form.rb +19 -0
  216. data/lib/platformos_check/tags/function.rb +58 -0
  217. data/lib/platformos_check/tags/graphql.rb +70 -0
  218. data/lib/platformos_check/tags/hash_assign.rb +75 -0
  219. data/lib/platformos_check/tags/log.rb +15 -0
  220. data/lib/platformos_check/tags/parse_json.rb +24 -0
  221. data/lib/platformos_check/tags/print.rb +20 -0
  222. data/lib/platformos_check/tags/redirect_to.rb +15 -0
  223. data/lib/platformos_check/tags/render.rb +60 -0
  224. data/lib/platformos_check/tags/response_headers.rb +20 -0
  225. data/lib/platformos_check/tags/response_status.rb +20 -0
  226. data/lib/platformos_check/tags/return.rb +20 -0
  227. data/lib/platformos_check/tags/session.rb +27 -0
  228. data/lib/platformos_check/tags/sign_in.rb +27 -0
  229. data/lib/platformos_check/tags/spam_protection.rb +15 -0
  230. data/lib/platformos_check/tags/theme_render.rb +58 -0
  231. data/lib/platformos_check/tags/try.rb +59 -0
  232. data/lib/platformos_check/tags.rb +65 -0
  233. data/lib/platformos_check/translation_file.rb +6 -0
  234. data/lib/platformos_check/user_schema_file.rb +6 -0
  235. data/lib/platformos_check/version.rb +5 -0
  236. data/lib/platformos_check/yaml_check.rb +11 -0
  237. data/lib/platformos_check/yaml_file.rb +57 -0
  238. data/lib/platformos_check.rb +106 -0
  239. data/platformos-check.gemspec +34 -0
  240. metadata +329 -0
@@ -0,0 +1,28 @@
1
+ # Prevent missing required objects in layouts (`RequiredLayoutThemeObject`)
2
+
3
+ ## Check Details
4
+
5
+ This check prevents missing `{{ content_for_layout }}` objects in layouts.
6
+
7
+ ## Check Options
8
+
9
+ The default configuration for this check is the following:
10
+
11
+ ```yaml
12
+ RequiredLayoutObject:
13
+ enabled: true
14
+ ```
15
+
16
+ ## Version
17
+
18
+ This check has been introduced in PlatformOS Check 0.0.1.
19
+
20
+ ## Resources
21
+
22
+ - [platformOS layout requirements][layout]
23
+ - [Rule Source][codesource]
24
+ - [Documentation Source][docsource]
25
+
26
+ [codesource]: /lib/platformos_check/checks/required_layout_object.rb
27
+ [docsource]: /docs/checks/required_layout_object.md
28
+ [layout]: https://documentation.platformos.com/developer-guide/pages/layouts
@@ -0,0 +1,89 @@
1
+ # Ensure consistent spacing inside Liquid tags and variables (`SpaceInsideBraces`)
2
+
3
+ Warns against inconsistent spacing inside liquid tags and variables.
4
+
5
+ ## Check Details
6
+
7
+ This check is aimed at eliminating ugly Liquid:
8
+
9
+ :-1: Examples of **incorrect** code for this check:
10
+
11
+ ```liquid
12
+ <!-- Around braces -->
13
+ {% assign x = 1%}
14
+ {{ x}}
15
+ {{x }}
16
+
17
+ <!-- After commas and semicolons -->
18
+ {% background source_name: 'type', object, key:value %}
19
+ {% endbackground %}
20
+
21
+ <!-- Arround filter pipelines -->
22
+ {{ url | asset_url | strip }}
23
+ {% assign my_upcase_string = "Hello world"| upcase %}
24
+
25
+ <!-- Arround symbol operators -->
26
+ {%- if target == product and product.price_varies -%}
27
+ {%- if product.featured_media.width >=165 -%}
28
+ ```
29
+
30
+ :+1: Examples of **correct** code for this check:
31
+
32
+ ```liquid
33
+ {% assign x = 1 %}
34
+ {{ x }}
35
+ {% background source_name: 'type', object, key: value, key2: value %}
36
+ {% endbackground %}
37
+ {{ "ignore:stuff, indeed" }}
38
+ {% render 'product-card',
39
+ product_card_product: product_recommendation,
40
+ show_vendor: section.settings.show_vendor,
41
+ media_size: section.settings.product_recommendations_image_ratio,
42
+ center_align_text: section.settings.center_align_text
43
+ %}
44
+ {{ url | asset_url | strip }}
45
+ {% assign my_upcase_string = "Hello world" | upcase %}
46
+ {%- if target == product and product.price_varies -%}
47
+ {%- if product.featured_media.width >= 165 -%}
48
+ ```
49
+
50
+ ## Check Options
51
+
52
+ The default configuration for this check is the following:
53
+
54
+ ```yaml
55
+ SpaceInsideBraces:
56
+ enabled: true
57
+ ```
58
+
59
+ ## Auto-correction
60
+
61
+ This check can automatically trim or add spaces around `{{ ... }}`.
62
+
63
+ ```liquid
64
+ {{ x}}
65
+ {{x}}
66
+ {{ x }}
67
+ ```
68
+
69
+ Can all be auto-corrected with the `--auto-correct` option to:
70
+
71
+ ```liquid
72
+ {{ x }}
73
+ ```
74
+
75
+ ## When Not To Use It
76
+
77
+ If you don't care about the look of your code.
78
+
79
+ ## Version
80
+
81
+ This check has been introduced in PlatformOS Check 0.0.1.
82
+
83
+ ## Resources
84
+
85
+ - [Rule Source][codesource]
86
+ - [Documentation Source][docsource]
87
+
88
+ [codesource]: /lib/platformos_check/checks/space_inside_braces.rb
89
+ [docsource]: /docs/checks/space_inside_braces.md
@@ -0,0 +1,49 @@
1
+ # Prevent Syntax Errors (`SyntaxError`)
2
+
3
+ This check exists to inform the user of Liquid syntax error earlier.
4
+
5
+ ## Check Details
6
+
7
+ This check is aimed at eliminating syntax errors.
8
+
9
+ :-1: Examples of **incorrect** code for this check:
10
+
11
+ ```liquid
12
+ {% include 'muffin'
13
+ {% assign foo = 1 }}
14
+ {% unknown %}
15
+ {% if collection | size > 0 %}
16
+ ```
17
+
18
+ :+1: Examples of **correct** code for this check:
19
+
20
+ ```liquid
21
+ {% include 'muffin' %}
22
+ {% assign foo = 1 %}
23
+ {% if collection.size > 0 %}
24
+ ```
25
+
26
+ ## Check Options
27
+
28
+ The default configuration for this check is the following:
29
+
30
+ ```yaml
31
+ SyntaxError:
32
+ enabled: true
33
+ ```
34
+
35
+ ## When Not To Use It
36
+
37
+ It is not safe to disable this rule.
38
+
39
+ ## Version
40
+
41
+ This check has been introduced in PlatformOS Check 0.0.1.
42
+
43
+ ## Resources
44
+
45
+ - [Rule Source][codesource]
46
+ - [Documentation Source][docsource]
47
+
48
+ [codesource]: /lib/platformos_check/checks/syntax_error.rb
49
+ [docsource]: /docs/checks/syntax_error.md
@@ -0,0 +1,45 @@
1
+ # Discourage the use of large template files (`TemplateLength`)
2
+
3
+ This check exists to discourage the use of large template files. Use partials and functions to componentize your app.
4
+
5
+ ## Check Details
6
+
7
+ This check is aimed at eliminating large template files.
8
+
9
+ :-1: Examples of **incorrect** code for this check:
10
+
11
+ - Files that have more lines than the threshold
12
+
13
+ :+1: Examples of **correct** code for this check:
14
+
15
+ - Files that have less lines than the threshold
16
+
17
+ ## Check Options
18
+
19
+ The default configuration for this check is the following:
20
+
21
+ ```yaml
22
+ TemplateLength:
23
+ enabled: true
24
+ max_length: 600
25
+ ```
26
+
27
+ ### `max_length`
28
+
29
+ The `max_length` (Default: `200`) option determines the maximum number of lines allowed inside a liquid file.
30
+
31
+ ## When Not To Use It
32
+
33
+ If you don't care about template lengths, then it's safe to disable this rule.
34
+
35
+ ## Version
36
+
37
+ This check has been introduced in PlatformOS Check 0.0.1.
38
+
39
+ ## Resources
40
+
41
+ - [Rule Source][codesource]
42
+ - [Documentation Source][docsource]
43
+
44
+ [codesource]: /lib/platformos_check/checks/template_length.rb
45
+ [docsource]: /docs/checks/template_length.md
@@ -0,0 +1,71 @@
1
+ # Prevent undefined object errors (`UndefinedObject`)
2
+
3
+ This check prevents errors by making sure that no undefined variables are being used
4
+
5
+ ## Check Details
6
+
7
+ This check is aimed at eliminating undefined object errors.
8
+
9
+ :-1: Examples of **incorrect** code for this check:
10
+
11
+ ```liquid
12
+ {% assign greetings = "Hello" %}
13
+ {% if greeting == "Hello" %}
14
+ Hello
15
+ {% endif %}
16
+ ```
17
+
18
+ :+1: Examples of **correct** code for this check:
19
+
20
+ ```liquid
21
+ {% assign greetings = "Hello" %}
22
+ {% if greetings == "Hello" %}
23
+ Hello
24
+ {% endif %}
25
+ ```
26
+
27
+ ```liquid
28
+ {% function res = 'my_function' %}
29
+ ```
30
+
31
+ ```liquid
32
+ {% liquid
33
+ # my_function body
34
+ assign my_arg = my_arg: default nil
35
+ return my_arg
36
+ %}
37
+ ```
38
+
39
+
40
+
41
+ ## Check Options
42
+
43
+ The default configuration for this check is the following:
44
+
45
+ ```yaml
46
+ UndefinedObject:
47
+ enabled: true
48
+ exclude_partials: true
49
+ ```
50
+
51
+ ### `exclude_partials`
52
+
53
+ The `exclude_partials` (Default: `true`) option determines whether to check for undefined objects in snippets file (as objects _may_ be defined as arguments)
54
+
55
+ ## When Not To Use It
56
+
57
+ It is discouraged to disable this rule.
58
+
59
+ ## Version
60
+
61
+ This check has been introduced in Theme Check 0.1.0.
62
+
63
+ ## Resources
64
+
65
+ - [platformOS Context](https://documentation.platformos.com/developer-guide/variables/context-variable#displaying-the-context-object)
66
+ - [platformOS Object Reference](https://documentation.platformos.com/api-reference/liquid/objects)
67
+ - [Rule Source][codesource]
68
+ - [Documentation Source][docsource]
69
+
70
+ [codesource]: /lib/platformos_check/checks/undefined_object.rb
71
+ [docsource]: /docs/checks/undefined_object.md
@@ -0,0 +1,46 @@
1
+ # Prevent use of unknown filters (`UnknownFilter`)
2
+
3
+ This check exists to prevent user errors.
4
+
5
+ ## Check Details
6
+
7
+ This check is aimed at preventing the use of unknown filters.
8
+
9
+ :-1: Examples of **incorrect** code for this check:
10
+
11
+ ```liquid
12
+ {{ x | some_unknown_filter }}
13
+ ```
14
+
15
+ :+1: Examples of **correct** code for this check:
16
+
17
+ ```liquid
18
+ {{ x | upcase }}
19
+ ```
20
+
21
+ ## Check Options
22
+
23
+ The default configuration for this check is the following:
24
+
25
+ ```yaml
26
+ UnknownFilter:
27
+ enabled: true
28
+ ```
29
+
30
+ ## When Not To Use It
31
+
32
+ It is not safe to disable this rule.
33
+
34
+ ## Version
35
+
36
+ This check has been introduced in PlatformOS Check 0.0.1.
37
+
38
+ ## Resources
39
+
40
+ - [Liquid Filter Reference](https://documentation.platformos.com/api-reference/liquid/filters)
41
+ - [platformOS Filter Reference](https://documentation.platformos.com/api-reference/liquid/platformos-filters)
42
+ - [Rule Source][codesource]
43
+ - [Documentation Source][docsource]
44
+
45
+ [codesource]: /lib/platformos_check/checks/unknown_filter.rb
46
+ [docsource]: /docs/checks/unknown_filter.md
@@ -0,0 +1,63 @@
1
+ # Prevent unused assigns (`UnusedAssign`)
2
+
3
+ This check exists to prevent bloat in themes by surfacing variable definitions that are not used.
4
+
5
+ ## Check Details
6
+
7
+ This check is aimed at eliminating bloat in apps and highlight user errors.
8
+
9
+ :-1: Examples of **incorrect** code for this check:
10
+
11
+ ```liquid
12
+ {% assign this_variable_is_not_used = 1 %}
13
+ ```
14
+
15
+ ```liquid
16
+ {% function this_variable_is_not_used = 'my_function' %}
17
+ ```
18
+
19
+ :+1: Examples of **correct** code for this check:
20
+
21
+ ```liquid
22
+ {% assign this_variable_is_used = 1 %}
23
+ {% if this_variable_is_used == 1 %}
24
+ <span>Hello!</span>
25
+ {% endif %}
26
+ ```
27
+
28
+ ```liquid
29
+ {% function this_variable_is_used = 'my_function' %}
30
+ {% if this_variable_is_used == 1 %}
31
+ <span>Hello!</span>
32
+ {% endif %}
33
+ ```
34
+
35
+ ```liquid
36
+ {% comment %}If you do not need to use the result of the function, start variable name with underscore{% endcomment %}
37
+ {% function _ignore_this_var = 'my_function' %}
38
+ ```
39
+
40
+ ## Check Options
41
+
42
+ The default configuration for this check is the following:
43
+
44
+ ```yaml
45
+ UnusedAssign:
46
+ enabled: true
47
+ ```
48
+
49
+ ## When Not To Use It
50
+
51
+ It's safe to disable this rule.
52
+
53
+ ## Version
54
+
55
+ This check has been introduced in PlatformOS Check 0.0.1.
56
+
57
+ ## Resources
58
+
59
+ - [Rule Source][codesource]
60
+ - [Documentation Source][docsource]
61
+
62
+ [codesource]: /lib/platformos_check/checks/unused_assign.rb
63
+ [docsource]: /docs/checks/unused_assign.md
@@ -0,0 +1,32 @@
1
+ # Remove unused partials in app (`UnusedPartial`)
2
+
3
+ This check warns the user about partials that are not used (Could not find a `render` or `function` tag that uses that partial)
4
+
5
+ ## Check Details
6
+
7
+ This check is aimed at eliminating unused partials.
8
+
9
+ ## Check Options
10
+
11
+ The default configuration for this check is the following:
12
+
13
+ ```yaml
14
+ UnusedPartial:
15
+ enabled: true
16
+ ```
17
+
18
+ ## When Not To Use It
19
+
20
+ It's safe to disable this rule.
21
+
22
+ ## Version
23
+
24
+ This check has been introduced in PlatformOS Check 0.0.1.
25
+
26
+ ## Resources
27
+
28
+ - [Rule Source][codesource]
29
+ - [Documentation Source][docsource]
30
+
31
+ [codesource]: /lib/platformos_check/checks/unused_partial.rb
32
+ [docsource]: /docs/checks/unused_partial.md
@@ -0,0 +1,48 @@
1
+ # Enforce valid YAML (`ValidYaml`)
2
+
3
+ This check exists to prevent invalid Yaml files in app.
4
+
5
+ ## Check Details
6
+
7
+ This check is aimed at eliminating errors in YAML files.
8
+
9
+ :-1: Examples of **incorrect** code for this check:
10
+
11
+ ```yaml
12
+ ---
13
+ hello: world
14
+ invalid
15
+ ```
16
+
17
+ :+1: Examples of **correct** code for this check:
18
+
19
+ ```yaml
20
+ ---
21
+ hello: world
22
+ invalid:
23
+ ```
24
+
25
+ ## Check Options
26
+
27
+ The default configuration for this check is the following:
28
+
29
+ ```yaml
30
+ Validyaml:
31
+ enabled: true
32
+ ```
33
+
34
+ ## When Not To Use It
35
+
36
+ It is not safe to disable this rule.
37
+
38
+ ## Version
39
+
40
+ This check has been introduced in PlatformOS Check 0.0.1.
41
+
42
+ ## Resources
43
+
44
+ - [Rule Source][codesource]
45
+ - [Documentation Source][docsource]
46
+
47
+ [codesource]: /lib/platformos_check/checks/valid_yaml.rb
48
+ [docsource]: /docs/checks/valid_yaml.md