audit: Fetch formula name from file path rather than class name in cops
This commit is contained in:
parent
b582ed513b
commit
337d5c6470
@ -18,7 +18,7 @@ module RuboCop
|
|||||||
|
|
||||||
def audit_formula(_node, _class_node, _parent_class_node, body)
|
def audit_formula(_node, _class_node, _parent_class_node, body)
|
||||||
return unless versioned_formula?
|
return unless versioned_formula?
|
||||||
problem MSG if !formula_file_name.start_with?(*WHITELIST) &&
|
problem MSG if !@formula_name.start_with?(*WHITELIST) &&
|
||||||
method_called_ever?(body, :conflicts_with)
|
method_called_ever?(body, :conflicts_with)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -14,7 +14,7 @@ module RuboCop
|
|||||||
return unless formula_class?(node)
|
return unless formula_class?(node)
|
||||||
return unless respond_to?(:audit_formula)
|
return unless respond_to?(:audit_formula)
|
||||||
class_node, parent_class_node, @body = *node
|
class_node, parent_class_node, @body = *node
|
||||||
@formula_name = class_name(class_node)
|
@formula_name = Pathname.new(@file_path).basename(".rb").to_s
|
||||||
audit_formula(node, class_node, parent_class_node, @body)
|
audit_formula(node, class_node, parent_class_node, @body)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -404,12 +404,7 @@ module RuboCop
|
|||||||
|
|
||||||
# Returns true if the formula is versioned
|
# Returns true if the formula is versioned
|
||||||
def versioned_formula?
|
def versioned_formula?
|
||||||
formula_file_name.include?("@") || @formula_name.match(/AT\d+/)
|
@formula_name.include?("@")
|
||||||
end
|
|
||||||
|
|
||||||
# Returns filename of the formula without the extension
|
|
||||||
def formula_file_name
|
|
||||||
File.basename(processed_source.buffer.name, ".rb")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns printable component name
|
# Returns printable component name
|
||||||
|
|||||||
@ -21,7 +21,7 @@ module RuboCop
|
|||||||
begin_pos = start_column(parent_class_node)
|
begin_pos = start_column(parent_class_node)
|
||||||
end_pos = end_column(class_node)
|
end_pos = end_column(class_node)
|
||||||
return unless begin_pos-end_pos != 3
|
return unless begin_pos-end_pos != 3
|
||||||
problem "Use a space in class inheritance: class #{@formula_name} < #{class_name(parent_class_node)}"
|
problem "Use a space in class inheritance: class #{class_name(class_node)} < #{class_name(parent_class_node)}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -86,12 +86,13 @@ module RuboCop
|
|||||||
end
|
end
|
||||||
|
|
||||||
find_method_with_args(body_node, :system, /^(otool|install_name_tool|lipo)$/) do
|
find_method_with_args(body_node, :system, /^(otool|install_name_tool|lipo)$/) do
|
||||||
next if @formula_name == "Cctools"
|
next if @formula_name == "cctools"
|
||||||
problem "Use ruby-macho instead of calling #{@offensive_node.source}"
|
problem "Use ruby-macho instead of calling #{@offensive_node.source}"
|
||||||
end
|
end
|
||||||
|
|
||||||
find_every_method_call_by_name(body_node, :system).each do |method_node|
|
find_every_method_call_by_name(body_node, :system).each do |method_node|
|
||||||
next if @formula_name =~ /^Kibana(\@\d+(\.\d+)?)?$/
|
# Skip Kibana: npm cache edge (see formula for more details)
|
||||||
|
next if @formula_name =~ /^kibana(\@\d+(\.\d+)?)?$/
|
||||||
first_param, second_param = parameters(method_node)
|
first_param, second_param = parameters(method_node)
|
||||||
next if !node_equals?(first_param, "npm") ||
|
next if !node_equals?(first_param, "npm") ||
|
||||||
!node_equals?(second_param, "install")
|
!node_equals?(second_param, "install")
|
||||||
@ -115,8 +116,8 @@ module RuboCop
|
|||||||
end
|
end
|
||||||
|
|
||||||
find_instance_method_call(body_node, :build, :universal?) do
|
find_instance_method_call(body_node, :build, :universal?) do
|
||||||
next if @formula_name == "Wine"
|
next if @formula_name == "wine"
|
||||||
problem "macOS has been 64-bit only so build.universal? is deprecated."
|
problem "macOS has been 64-bit only since 10.6 so build.universal? is deprecated."
|
||||||
end
|
end
|
||||||
|
|
||||||
find_instance_method_call(body_node, "ENV", :universal_binary) do
|
find_instance_method_call(body_node, "ENV", :universal_binary) do
|
||||||
|
|||||||
@ -22,7 +22,7 @@ describe RuboCop::Cop::FormulaAudit::Conflicts do
|
|||||||
column: 2,
|
column: 2,
|
||||||
source: source }]
|
source: source }]
|
||||||
|
|
||||||
inspect_source(cop, source)
|
inspect_source(cop, source, "/homebrew-core/Formula/foo@2.0.rb")
|
||||||
|
|
||||||
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
||||||
expect_offense(expected, actual)
|
expect_offense(expected, actual)
|
||||||
@ -36,7 +36,7 @@ describe RuboCop::Cop::FormulaAudit::Conflicts do
|
|||||||
desc 'Bar'
|
desc 'Bar'
|
||||||
end
|
end
|
||||||
EOS
|
EOS
|
||||||
inspect_source(cop, source)
|
inspect_source(cop, source, "/homebrew-core/Formula/foo@2.0.rb")
|
||||||
expect(cop.offenses).to eq([])
|
expect(cop.offenses).to eq([])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -37,7 +37,7 @@ describe RuboCop::Cop::FormulaAuditStrict::DescLength do
|
|||||||
|
|
||||||
msg = <<-EOS.undent
|
msg = <<-EOS.undent
|
||||||
Description is too long. "name: desc" should be less than 80 characters.
|
Description is too long. "name: desc" should be less than 80 characters.
|
||||||
Length is calculated as Foo + desc. (currently 95)
|
Length is calculated as foo + desc. (currently 95)
|
||||||
EOS
|
EOS
|
||||||
expected_offenses = [{ message: msg,
|
expected_offenses = [{ message: msg,
|
||||||
severity: :convention,
|
severity: :convention,
|
||||||
@ -45,7 +45,7 @@ describe RuboCop::Cop::FormulaAuditStrict::DescLength do
|
|||||||
column: 2,
|
column: 2,
|
||||||
source: source }]
|
source: source }]
|
||||||
|
|
||||||
inspect_source(cop, source)
|
inspect_source(cop, source, "/homebrew-core/Formula/foo.rb")
|
||||||
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
||||||
expect_offense(expected, actual)
|
expect_offense(expected, actual)
|
||||||
end
|
end
|
||||||
@ -62,7 +62,7 @@ describe RuboCop::Cop::FormulaAuditStrict::DescLength do
|
|||||||
|
|
||||||
msg = <<-EOS.undent
|
msg = <<-EOS.undent
|
||||||
Description is too long. "name: desc" should be less than 80 characters.
|
Description is too long. "name: desc" should be less than 80 characters.
|
||||||
Length is calculated as Foo + desc. (currently 98)
|
Length is calculated as foo + desc. (currently 98)
|
||||||
EOS
|
EOS
|
||||||
expected_offenses = [{ message: msg,
|
expected_offenses = [{ message: msg,
|
||||||
severity: :convention,
|
severity: :convention,
|
||||||
@ -70,7 +70,7 @@ describe RuboCop::Cop::FormulaAuditStrict::DescLength do
|
|||||||
column: 2,
|
column: 2,
|
||||||
source: source }]
|
source: source }]
|
||||||
|
|
||||||
inspect_source(cop, source)
|
inspect_source(cop, source, "/homebrew-core/Formula/foo.rb")
|
||||||
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
||||||
expect_offense(expected, actual)
|
expect_offense(expected, actual)
|
||||||
end
|
end
|
||||||
@ -156,7 +156,7 @@ describe RuboCop::Cop::FormulaAuditStrict::Desc do
|
|||||||
column: 8,
|
column: 8,
|
||||||
source: source }]
|
source: source }]
|
||||||
|
|
||||||
inspect_source(cop, source)
|
inspect_source(cop, source, "/homebrew-core/Formula/foo.rb")
|
||||||
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
||||||
expect_offense(expected, actual)
|
expect_offense(expected, actual)
|
||||||
end
|
end
|
||||||
@ -176,7 +176,7 @@ describe RuboCop::Cop::FormulaAuditStrict::Desc do
|
|||||||
end
|
end
|
||||||
EOS
|
EOS
|
||||||
|
|
||||||
corrected_source = autocorrect_source(cop, source)
|
corrected_source = autocorrect_source(cop, source, "/homebrew-core/Formula/foo.rb")
|
||||||
expect(corrected_source).to eq(correct_source)
|
expect(corrected_source).to eq(correct_source)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user