lib/roku_builder/plugins/analyzer.rb in roku_builder-4.26.1 vs lib/roku_builder/plugins/analyzer.rb in roku_builder-4.26.2
- old
+ new
@@ -38,11 +38,11 @@
linter_config = get_config(".roku_builder_linter.json", true)
linter_config ||= {is_ssai: false}
loader = Loader.new(config: @config)
Dir.mktmpdir do |dir|
loader.copy(options: options, path: dir)
- run_sca_tool(path: dir, ssai: linter_config[:is_ssai])
+ run_sca_tool(path: dir, linter_config: linter_config)
libraries = @config.project[:libraries]
libraries ||= []
Dir.glob(File.join(dir, "**", "*")).each do |file_path|
file = file_path.dup; file.slice!(dir)
unless libraries.any_is_start?(file) and not @options[:include_libraries]
@@ -61,49 +61,54 @@
@warnings
end
private
- def run_sca_tool(path:, ssai:)
+ def run_sca_tool(path:, linter_config:)
if OS.unix?
command = File.join(File.dirname(__FILE__), "sca-cmd", "bin", "sca-cmd")
stderr = "/dev/null"
else
command = File.join(File.dirname(__FILE__), "sca-cmd", "bin", "sca-cmd.bat")
stderr = "nul"
end
@logger.debug("Command: '#{command}'")
results = `#{command} #{path} 2>#{stderr}`.split("\n")
- process_sca_results(results, ssai)
+ process_sca_results(results, linter_config)
end
- def process_sca_results(results, ssai)
+ def process_sca_results(results, linter_config)
results.each do |result_line|
if /-----+/.match(result_line) or /\*\*\*\*\*+/.match(result_line)
- @warnings.push(@sca_warning) if add_warning?(ssai)
+ @warnings.push(@sca_warning) if add_warning?(linter_config)
@sca_warning = {}
elsif data = /^(\[WARNING\]|\[INFO\]|\[ERROR\])(.*)$/.match(result_line)
- @warnings.push(@sca_warning) if add_warning?(ssai)
+ @warnings.push(@sca_warning) if add_warning?(linter_config)
@sca_warning = {}
@sca_warning[:severity] = data[1].gsub(/(\[|\])/, "").downcase
@sca_warning[:message] = data[2]
- elsif data = /^\sPath: ([^ ]*) Line: (\d*)./.match(result_line)
+ elsif data = /^\s*Path: ([^ ]*) Line: (\d*)./.match(result_line)
@sca_warning[:path] = data[1]+":"+data[2]
elsif @sca_warning and @sca_warning[:message]
@sca_warning[:message] += " " + result_line
end
end
end
- def add_warning?(ssai)
+ def add_warning?(linter_config)
if @sca_warning and @sca_warning[:severity]
- if ssai and /SetAdUrl\(\) method is missing/.match(@sca_warning[:message])
+ if linter_config[:ssai] and /SetAdUrl\(\) method is missing/.match(@sca_warning[:message])
return false
end
libraries = @config.project[:libraries]
libraries ||= []
if @sca_warning[:path] and libraries.any_is_start?(@sca_warning[:path].gsub(/pkg:/, "")) and not @options[:include_libraries]
return false
+ end
+ if linter_config[:ignore_warnings]
+ linter_config[:ignore_warnings].each do |regexp|
+ return false if @sca_warning[:message] =~ /#{regexp}/
+ end
end
return true
end
return false
end