Class: Mihari::Analyzers::Base

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Retriable

#retry_on_error

Methods included from Configurable

#config_keys, #configuration_values, #configured?

Constructor Details

#initializeBase

Returns a new instance of Base.



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

def initialize
  @ignore_old_artifacts = false
  @ignore_threshold = 0
end

Instance Attribute Details

#ignore_old_artifactsObject

Returns the value of attribute ignore_old_artifacts.



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

def ignore_old_artifacts
  @ignore_old_artifacts
end

#ignore_thresholdObject

Returns the value of attribute ignore_threshold.



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

def ignore_threshold
  @ignore_threshold
end

Class Method Details

.inherited(child) ⇒ Object



56
57
58
# File 'lib/mihari/analyzers/base.rb', line 56

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

Instance Method Details

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

Returns:

Raises:

  • (NotImplementedError)


19
20
21
# File 'lib/mihari/analyzers/base.rb', line 19

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

#descriptionString

Returns:

  • (String)

Raises:

  • (NotImplementedError)


29
30
31
# File 'lib/mihari/analyzers/base.rb', line 29

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

#runObject



42
43
44
45
46
47
48
# File 'lib/mihari/analyzers/base.rb', line 42

def run
  set_unique_artifacts

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

#run_emitter(emitter) ⇒ Object



50
51
52
53
54
# File 'lib/mihari/analyzers/base.rb', line 50

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

#sourceObject



33
34
35
# File 'lib/mihari/analyzers/base.rb', line 33

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

#tagsArray<String>

Returns:

  • (Array<String>)


38
39
40
# File 'lib/mihari/analyzers/base.rb', line 38

def tags
  []
end

#titleString

Returns:

  • (String)


24
25
26
# File 'lib/mihari/analyzers/base.rb', line 24

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