30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/roku_builder/plugins/analyzer.rb', line 30
def analyze(options:, quiet: false)
@options = options
@warnings = []
analyzer_config = get_config("inspector_config.json")
performance_config = get_config("performance_config.json")
linter_config = get_config(".roku_builder_linter.json", true)
@inspector_config = analyzer_config[:inspectors]
loader = Loader.new(config: @config)
Dir.mktmpdir do |dir|
loader.copy(options: options, path: dir)
raf_inspector = RafInspector.new(config: @config, dir: dir)
manifest_inspector = ManifestInspector.new(config: @config, dir: dir, raf: raf_inspector)
@warnings.concat(manifest_inspector.run(analyzer_config[:inspectors]))
has_source_dir = false
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]
if File.file?(file_path) and file_path.end_with?(".brs", ".xml")
line_inspector_config = analyzer_config[:lineInspectors]
line_inspector_config += performance_config
line_inspector_config += linter_config if linter_config
line_inspector = LineInspector.new(config: @config, raf: raf_inspector, inspector_config: line_inspector_config)
@warnings.concat(line_inspector.run(file_path))
end
if file_path.end_with?("__MACOSX")
add_warning(warning: :packageMacosxDirectory, path: file_path)
end
if file_path.end_with?(".zip", ".md", ".pkg")
add_warning(warning: :packageExtraneousFiles, path: file_path)
end
end
has_source_dir = true if file_path.end_with?("source")
end
unless has_source_dir
add_warning(warning: :packageSourceDirectory, path: "source")
end
@warnings.concat(raf_inspector.run(analyzer_config[:inspectors]))
format_messages(dir)
print_warnings unless quiet
end
@warnings
end
|