Class: ArchUnit::Metrics::FluentApi::MetricsBuilder
- Inherits:
-
Object
- Object
- ArchUnit::Metrics::FluentApi::MetricsBuilder
- Defined in:
- lib/archunit/metrics/fluentapi/metrics_builder.rb
Overview
Immutable scope builder for numeric metrics over Ruby source.
Instance Attribute Summary collapse
-
#filters ⇒ Object
readonly
Returns the value of attribute filters.
-
#project_locator ⇒ Object
readonly
Returns the value of attribute project_locator.
Instance Method Summary collapse
-
#analyze ⇒ MetricProjectInfo
Extracted files and classes in this scope.
-
#count ⇒ CountMetricsBuilder
Count metric vocabulary.
-
#custom_metric(name, description, calculation) ⇒ CustomMetricBuilder
Defines a custom numeric calculation over ClassInfo.
-
#distance ⇒ DistanceMetricsBuilder
Dependency-distance metric vocabulary.
-
#for_classes_matching(pattern, except: nil) ⇒ MetricsBuilder
Selects classes within the selected source files.
-
#in_folder(pattern, except: nil) ⇒ MetricsBuilder
Selects metric source files by containing folder.
-
#in_path(pattern, except: nil) ⇒ MetricsBuilder
Selects metric source files by complete path.
-
#initialize(project_locator: nil, filters: []) ⇒ MetricsBuilder
constructor
A new instance of MetricsBuilder.
-
#lcom ⇒ LCOMMetricsBuilder
Cohesion metric vocabulary.
-
#with_name(pattern, except: nil) ⇒ MetricsBuilder
Selects metric source files by basename.
Constructor Details
#initialize(project_locator: nil, filters: []) ⇒ MetricsBuilder
Returns a new instance of MetricsBuilder.
20 21 22 23 24 |
# File 'lib/archunit/metrics/fluentapi/metrics_builder.rb', line 20 def initialize(project_locator: nil, filters: []) @project_locator = immutable_project_locator(project_locator) @filters = immutable_filters(filters) freeze end |
Instance Attribute Details
#filters ⇒ Object (readonly)
Returns the value of attribute filters.
18 19 20 |
# File 'lib/archunit/metrics/fluentapi/metrics_builder.rb', line 18 def filters @filters end |
#project_locator ⇒ Object (readonly)
Returns the value of attribute project_locator.
18 19 20 |
# File 'lib/archunit/metrics/fluentapi/metrics_builder.rb', line 18 def project_locator @project_locator end |
Instance Method Details
#analyze ⇒ MetricProjectInfo
Returns extracted files and classes in this scope.
72 73 74 75 76 77 |
# File 'lib/archunit/metrics/fluentapi/metrics_builder.rb', line 72 def analyze project = Extraction.extract_project_info(project_locator) selected_files = project.files.filter_map { |file| selected_file_info(file) } Common::Logging::Inspection.selection('metric file', selected_files, &:path) Extraction::ProjectInfo.new(project_root: project.project_root, files: selected_files) end |
#count ⇒ CountMetricsBuilder
Returns count metric vocabulary.
51 52 53 |
# File 'lib/archunit/metrics/fluentapi/metrics_builder.rb', line 51 def count CountMetricsBuilder.new(self) end |
#custom_metric(name, description, calculation) ⇒ CustomMetricBuilder
Defines a custom numeric calculation over ClassInfo.
67 68 69 |
# File 'lib/archunit/metrics/fluentapi/metrics_builder.rb', line 67 def custom_metric(name, description, calculation) CustomMetricBuilder.new(scope: self, name:, description:, calculation:) end |
#distance ⇒ DistanceMetricsBuilder
Returns dependency-distance metric vocabulary.
61 62 63 |
# File 'lib/archunit/metrics/fluentapi/metrics_builder.rb', line 61 def distance DistanceMetricsBuilder.new(self) end |
#for_classes_matching(pattern, except: nil) ⇒ MetricsBuilder
Selects classes within the selected source files.
46 47 48 |
# File 'lib/archunit/metrics/fluentapi/metrics_builder.rb', line 46 def for_classes_matching(pattern, except: nil) with_filter(Common::RegexFactory.classname_matcher(pattern, except:)) end |
#in_folder(pattern, except: nil) ⇒ MetricsBuilder
Selects metric source files by containing folder.
34 35 36 |
# File 'lib/archunit/metrics/fluentapi/metrics_builder.rb', line 34 def in_folder(pattern, except: nil) with_filter(Common::RegexFactory.folder_matcher(pattern, except:)) end |
#in_path(pattern, except: nil) ⇒ MetricsBuilder
Selects metric source files by complete path.
40 41 42 |
# File 'lib/archunit/metrics/fluentapi/metrics_builder.rb', line 40 def in_path(pattern, except: nil) with_filter(Common::RegexFactory.path_matcher(pattern, except:)) end |
#lcom ⇒ LCOMMetricsBuilder
Returns cohesion metric vocabulary.
56 57 58 |
# File 'lib/archunit/metrics/fluentapi/metrics_builder.rb', line 56 def lcom LCOMMetricsBuilder.new(self) end |
#with_name(pattern, except: nil) ⇒ MetricsBuilder
Selects metric source files by basename.
28 29 30 |
# File 'lib/archunit/metrics/fluentapi/metrics_builder.rb', line 28 def with_name(pattern, except: nil) with_filter(Common::RegexFactory.filename_matcher(pattern, except:)) end |
ArchUnitRuby