Class: GemXray::Scanner
- Inherits:
-
Object
- Object
- GemXray::Scanner
- Defined in:
- lib/gemxray/scanner.rb
Constant Summary collapse
- ANALYZERS =
{ unused: GemXray::Analyzers::UnusedAnalyzer, redundant: GemXray::Analyzers::RedundantAnalyzer, version: GemXray::Analyzers::VersionAnalyzer, license: GemXray::Analyzers::LicenseAnalyzer, archive: GemXray::Analyzers::ArchiveAnalyzer }.freeze
Instance Method Summary collapse
-
#initialize(config) ⇒ Scanner
constructor
A new instance of Scanner.
- #run ⇒ Object
Constructor Details
#initialize(config) ⇒ Scanner
Returns a new instance of Scanner.
13 14 15 16 |
# File 'lib/gemxray/scanner.rb', line 13 def initialize(config) @config = config @gemfile_parser = GemfileParser.new(config.gemfile_path) end |
Instance Method Details
#run ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/gemxray/scanner.rb', line 18 def run gems = gemfile_parser.parse results = build_analyzers.flat_map { |analyzer| analyzer.analyze(gems) } merged_results = merge_results(results) merged_results.each do |result| override = config.override_severity_for(result.gem_name) result.severity = override if override end filtered = merged_results.select { |result| config.severity_in_scope?(result.severity) } sorted = filtered.sort_by { |result| [result.severity_order, result.gem_name] } Report.new( version: GemXray::VERSION, ruby_version: gemfile_parser.ruby_version, rails_version: gemfile_parser.rails_version(gems), scanned_at: Time.now.iso8601, results: sorted ) end |