Class: Mihari::Analyzers::Base

Inherits:
Object
  • Object
show all
Includes:
Configurable, Retriable
Defined in:
lib/mihari/analyzers/base.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Retriable

#retry_on_error

Methods included from Configurable

#config_keys, #configuration_status, #configured?

Class Method Details

.inherited(child) ⇒ Object



45
46
47
# File 'lib/mihari/analyzers/base.rb', line 45

def self.inherited(child)
  Mihari.analyzers << child
end

Instance Method Details

#artifactsArray<String>, Array<Mihari::Artifact>

Returns:

Raises:

  • (NotImplementedError)


12
13
14
# File 'lib/mihari/analyzers/base.rb', line 12

def artifacts
  raise NotImplementedError, "You must implement #{self.class}##{__method__}"
end

#descriptionString

Returns:

  • (String)

Raises:

  • (NotImplementedError)


22
23
24
# File 'lib/mihari/analyzers/base.rb', line 22

def description
  raise NotImplementedError, "You must implement #{self.class}##{__method__}"
end

#runObject



31
32
33
34
35
36
37
# File 'lib/mihari/analyzers/base.rb', line 31

def run
  set_unique_artifacts

  Parallel.each(valid_emitters) do |emitter|
    run_emitter emitter
  end
end

#run_emitter(emitter) ⇒ Object



39
40
41
42
43
# File 'lib/mihari/analyzers/base.rb', line 39

def run_emitter(emitter)
  emitter.run(title: title, description: description, artifacts: unique_artifacts, tags: tags)
rescue StandardError => e
  puts "Emission by #{emitter.class} is failed: #{e}"
end

#tagsArray<String>

Returns:

  • (Array<String>)


27
28
29
# File 'lib/mihari/analyzers/base.rb', line 27

def tags
  []
end

#titleString

Returns:

  • (String)


17
18
19
# File 'lib/mihari/analyzers/base.rb', line 17

def title
  self.class.to_s.split("::").last
end