aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/rubocops/class_cop.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/rubocops/class_cop.rb')
-rw-r--r--Library/Homebrew/rubocops/class_cop.rb41
1 files changed, 41 insertions, 0 deletions
diff --git a/Library/Homebrew/rubocops/class_cop.rb b/Library/Homebrew/rubocops/class_cop.rb
new file mode 100644
index 000000000..dad81abfc
--- /dev/null
+++ b/Library/Homebrew/rubocops/class_cop.rb
@@ -0,0 +1,41 @@
+require_relative "./extend/formula_cop"
+
+module RuboCop
+ module Cop
+ module FormulaAudit
+ class ClassName < FormulaCop
+ DEPRECATED_CLASSES = %w[
+ GithubGistFormula
+ ScriptFileFormula
+ AmazonWebServicesFormula
+ ].freeze
+
+ def audit_formula(_node, _class_node, parent_class_node, _body_node)
+ parent_class = class_name(parent_class_node)
+ return unless DEPRECATED_CLASSES.include?(parent_class)
+ problem "#{parent_class} is deprecated, use Formula instead"
+ end
+
+ private
+
+ def autocorrect(node)
+ lambda do |corrector|
+ corrector.replace(node.source_range, "Formula")
+ end
+ end
+ end
+ end
+
+ module FormulaAuditStrict
+ # - `test do ..end` should be defined in the formula
+ class Test < FormulaCop
+ MSG = "A `test do` test block should be added".freeze
+
+ def audit_formula(_node, _class_node, _parent_class_node, body_node)
+ return if find_block(body_node, :test)
+ problem MSG
+ end
+ end
+ end
+ end
+end