Object
The Generator class is an abstract class that provides the skeleton for producing different types of metrics.
It drives the production of the metrics through a template method - generate_report(options={}). This method calls emit, analyze and to_h in order to produce the metrics.
To implement a concrete class to generate a metric, therefore, the class must implement those three methods.
emit should take care of running the metric tool and gathering its output.
analyze should take care of manipulating the output from emit and making it possible to store it in a programmatic way.
to_h should provide a hash representation of the output from analyze ready to be serialized into yaml at some point.
Based on the class name of the concrete class implementing a Generator, the Generator class will create a ‘metric_directory’ named after the class under the MetricFu.scratch_directory, where any output from the emit method should go.
It will also create the MetricFu.output_directory if neccessary, and in general setup the directory structure that the MetricFu system expects.
Provides the unqualified class name of an implemented concrete class, as a string. For example:
class Flay < Generator; end klass = Flay.new klass.class_name > "flay"
@return String
The unqualified class name of this concrete class, returned as a string.
# File lib/base/generator.rb, line 67 def self.class_name self.to_s.split('::').last.downcase end
Creates a new generator and returns the output of the generate_report method. This is the typical way to generate a new MetricFu report. For more information see the generate_report instance method.
@params options Hash
A currently unused hash to configure the Generator
@see generate_report
# File lib/base/generator.rb, line 51 def self.generate_report(options={}) generator = self.new(options) generator.generate_report end
Returns the directory where the Generator will write any output
# File lib/base/generator.rb, line 72 def self.metric_directory File.join(MetricFu.scratch_directory, class_name) end
Provides a template method to drive the production of a metric from a concrete implementation of this class. Each concrete class must implement the three methods that this template method calls: emit, analyze and to_h. For more details, see the class documentation.
This template method also calls before_emit, after_emit… etc. methods to allow extra hooks into the processing methods, and help to keep the logic of your Generators clean.
# File lib/base/generator.rb, line 124 def generate_report ]emit analyze].each do |meth| send("before_#{meth}".to_sym) send("#{meth}".to_sym) send("after_#{meth}".to_sym) end before_to_h() to_h() end
@return String
The path of the metric directory this class is using.
# File lib/base/generator.rb, line 96 def metric_directory self.class.metric_directory end
# File lib/base/generator.rb, line 100 def remove_excluded_files(paths, globs_to_remove = MetricFu.file_globs_to_ignore) files_to_remove = [] globs_to_remove.each do |glob| files_to_remove.concat(Dir[glob]) end paths - files_to_remove end
Generated with the Darkfish Rdoc Generator 2.