Class: FeatureMap::Private::AdditionalMetricsFile
- Inherits:
-
Object
- Object
- FeatureMap::Private::AdditionalMetricsFile
show all
- Defined in:
- lib/feature_map/private/additional_metrics_file.rb
Defined Under Namespace
Classes: FileContentError
Constant Summary
collapse
- FEATURES_KEY =
'features'
Class Method Summary
collapse
Class Method Details
.generate_content(feature_metrics, feature_test_coverage, health_config) ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/feature_map/private/additional_metrics_file.rb', line 35
def self.generate_content(feature_metrics, feature_test_coverage, health_config)
feature_additional_metrics = {}
percentile_metrics = PercentileMetricsCalculator.new(metrics: feature_metrics, test_coverage: feature_test_coverage)
health_calculator = HealthCalculator.new(percentile_metrics: percentile_metrics, health_config: health_config)
Private.feature_file_assignments.each_key do |feature_name|
feature_additional_metrics[feature_name] = {
'cyclomatic_complexity' => percentile_metrics.cyclomatic_complexity_for(feature_name),
'encapsulation' => percentile_metrics.encapsulation_for(feature_name),
'feature_size' => percentile_metrics.feature_size_for(feature_name),
'test_coverage' => percentile_metrics.test_coverage_for(feature_name),
'todo_count' => percentile_metrics.todo_count_for(feature_name),
'health' => health_calculator.health_score_for(feature_name)
}
end
{ FEATURES_KEY => feature_additional_metrics }
end
|
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/feature_map/private/additional_metrics_file.rb', line 21
def self.
<<~HEADER
# STOP! - DO NOT EDIT THIS FILE MANUALLY
# This file was automatically generated by "bin/featuremap additional_metrics". The next time this file
# is generated any changes will be lost. For more details:
# https://github.com/Beyond-Finance/feature_map
#
# It is NOT recommended to commit this file into your source control. It will change as a
# result of nearly all other source code changes. This file should be ignored by your source
# control but can be used for other feature analysis operations (e.g. documentation
# generation, etc).
HEADER
end
|
.load_features! ⇒ Object
55
56
57
58
59
60
61
62
63
64
65
|
# File 'lib/feature_map/private/additional_metrics_file.rb', line 55
def self.load_features!
metrics_content = YAML.load_file(path)
return metrics_content[FEATURES_KEY] if metrics_content.is_a?(Hash) && metrics_content[FEATURES_KEY]
raise FileContentError, "Unexpected content found in #{path}. Use `bin/featuremap additional_metrics` to regenerate it and try again."
rescue Psych::SyntaxError => e
raise FileContentError, "Invalid YAML content found at #{path}. Error: #{e.message} Use `bin/featuremap additional_metrics` to generate it and try again."
rescue Errno::ENOENT
raise FileContentError, "No feature metrics file found at #{path}. Use `bin/featuremap additional_metrics` to generate it and try again."
end
|
.path ⇒ Object
17
18
19
|
# File 'lib/feature_map/private/additional_metrics_file.rb', line 17
def self.path
Pathname.pwd.join('.feature_map/additional-metrics.yml')
end
|
.write!(metrics, test_coverage, health_config) ⇒ Object
11
12
13
14
15
|
# File 'lib/feature_map/private/additional_metrics_file.rb', line 11
def self.write!(metrics, test_coverage, health_config)
FileUtils.mkdir_p(path.dirname) if !path.dirname.exist?
path.write([, "\n", generate_content(metrics, test_coverage, health_config).to_yaml].join)
end
|