hashira 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +141 -0
- data/README.md +53 -5
- data/lib/hashira/analysis/catalog.rb +27 -0
- data/lib/hashira/analysis/census.rb +42 -35
- data/lib/hashira/analysis/constant_registry.rb +43 -0
- data/lib/hashira/analysis/cycle_findings.rb +34 -29
- data/lib/hashira/analysis/cycle_search.rb +28 -35
- data/lib/hashira/analysis/cycles.rb +14 -0
- data/lib/hashira/analysis/definition.rb +22 -0
- data/lib/hashira/analysis/definitions.rb +22 -18
- data/lib/hashira/analysis/edge.rb +4 -3
- data/lib/hashira/analysis/edge_map.rb +23 -26
- data/lib/hashira/analysis/finding.rb +7 -6
- data/lib/hashira/analysis/folder_placement.rb +17 -0
- data/lib/hashira/analysis/folding.rb +54 -0
- data/lib/hashira/analysis/graph.rb +35 -38
- data/lib/hashira/analysis/metric.rb +8 -7
- data/lib/hashira/analysis/namespace_placement.rb +28 -0
- data/lib/hashira/analysis/namespace_prefix.rb +32 -0
- data/lib/hashira/analysis/naming.rb +14 -0
- data/lib/hashira/analysis/no_folding.rb +13 -0
- data/lib/hashira/analysis/node_walk.rb +3 -3
- data/lib/hashira/analysis/placement.rb +19 -0
- data/lib/hashira/analysis/references.rb +14 -13
- data/lib/hashira/analysis/resolver.rb +28 -0
- data/lib/hashira/analysis/roster.rb +25 -0
- data/lib/hashira/analysis/rule.rb +10 -14
- data/lib/hashira/analysis/sdp_check.rb +8 -12
- data/lib/hashira/analysis/sdp_violation_findings.rb +20 -18
- data/lib/hashira/analysis/syntax.rb +21 -6
- data/lib/hashira/analysis/type_walk.rb +7 -9
- data/lib/hashira/churn.rb +11 -13
- data/lib/hashira/ci/accepted.rb +27 -31
- data/lib/hashira/ci/baseline.rb +22 -24
- data/lib/hashira/ci/diff.rb +8 -7
- data/lib/hashira/ci/edge_diff_report.rb +13 -17
- data/lib/hashira/ci/finding_diff_report.rb +14 -18
- data/lib/hashira/ci/gate.rb +19 -23
- data/lib/hashira/ci/improvement.rb +9 -14
- data/lib/hashira/ci/ratchet.rb +36 -27
- data/lib/hashira/ci/ratchet_report.rb +26 -32
- data/lib/hashira/cli/arguments.rb +23 -0
- data/lib/hashira/cli/command_line.rb +55 -71
- data/lib/hashira/cli/fail_on.rb +15 -20
- data/lib/hashira/cli/options.rb +9 -4
- data/lib/hashira/cli/package_by.rb +14 -0
- data/lib/hashira/cli/run.rb +29 -27
- data/lib/hashira/cli/skip.rb +14 -20
- data/lib/hashira/cli/usage.rb +41 -41
- data/lib/hashira/cli.rb +17 -19
- data/lib/hashira/complexity/analyzer.rb +30 -32
- data/lib/hashira/complexity/boolean_run.rb +11 -15
- data/lib/hashira/complexity/cognitive_score.rb +61 -66
- data/lib/hashira/complexity/if_chain.rb +33 -38
- data/lib/hashira/complexity/method_finding.rb +43 -48
- data/lib/hashira/complexity/method_score.rb +9 -7
- data/lib/hashira/complexity/rescue_scan.rb +16 -21
- data/lib/hashira/complexity/rollup.rb +13 -15
- data/lib/hashira/diagram/dot.rb +8 -11
- data/lib/hashira/diagram/mermaid.rb +11 -16
- data/lib/hashira/diagram/renderer.rb +10 -15
- data/lib/hashira/duplication/analyzer.rb +10 -14
- data/lib/hashira/duplication/cluster.rb +15 -12
- data/lib/hashira/duplication/clusterer.rb +31 -29
- data/lib/hashira/duplication/delta.rb +29 -30
- data/lib/hashira/duplication/duplication_finding.rb +19 -21
- data/lib/hashira/duplication/extractor.rb +15 -19
- data/lib/hashira/duplication/fragment.rb +19 -23
- data/lib/hashira/duplication/grouping.rb +12 -16
- data/lib/hashira/duplication/index.rb +20 -24
- data/lib/hashira/duplication/maximal.rb +11 -15
- data/lib/hashira/duplication/near_miss.rb +19 -22
- data/lib/hashira/duplication/sequence.rb +20 -22
- data/lib/hashira/duplication/similarity.rb +28 -35
- data/lib/hashira/duplication/union_find.rb +10 -14
- data/lib/hashira/duplication/variance.rb +36 -44
- data/lib/hashira/error.rb +4 -2
- data/lib/hashira/hotspots/file_cost.rb +8 -7
- data/lib/hashira/hotspots/rollup.rb +19 -21
- data/lib/hashira/pipeline.rb +36 -31
- data/lib/hashira/project.rb +53 -32
- data/lib/hashira/report/complexity_table.rb +27 -31
- data/lib/hashira/report/dependency_map.rb +17 -22
- data/lib/hashira/report/finding_lines.rb +15 -19
- data/lib/hashira/report/graph_payload.rb +14 -20
- data/lib/hashira/report/hotspot_table.rb +32 -37
- data/lib/hashira/report/json.rb +30 -32
- data/lib/hashira/report/metrics_table.rb +46 -33
- data/lib/hashira/report/text.rb +59 -52
- data/lib/hashira/version.rb +1 -1
- data/lib/hashira.rb +92 -55
- metadata +16 -2
- data/lib/hashira/analysis/root_namespace.rb +0 -14
data/lib/hashira/report/json.rb
CHANGED
|
@@ -2,47 +2,45 @@
|
|
|
2
2
|
|
|
3
3
|
require "json"
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@io = io
|
|
11
|
-
end
|
|
5
|
+
class Hashira::Report::Json
|
|
6
|
+
def initialize(view, io: $stdout)
|
|
7
|
+
@view = view
|
|
8
|
+
@io = io
|
|
9
|
+
end
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
def print
|
|
12
|
+
@io.puts(JSON.pretty_generate(payload))
|
|
13
|
+
0
|
|
14
|
+
end
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
private
|
|
19
17
|
|
|
20
|
-
|
|
18
|
+
def payload = base.merge(coupling).merge(sections.compact)
|
|
21
19
|
|
|
22
|
-
|
|
20
|
+
def base = { findings: @view.findings.all.map(&:to_h), accepted: accepted }
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
def coupling
|
|
23
|
+
graph = @view.graph
|
|
24
|
+
graph ? Hashira::Report::GraphPayload.new(graph).to_h : {}
|
|
25
|
+
end
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
def sections
|
|
28
|
+
{
|
|
29
|
+
complexity: (complexity if @view.complexity),
|
|
30
|
+
duplication: (duplication if @view.duplication),
|
|
31
|
+
hotspots: @view.hotspots&.files&.map(&:to_h)
|
|
32
|
+
}
|
|
33
|
+
end
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
def accepted
|
|
36
|
+
@view.findings.accepted.map { |finding, reason| finding.to_h.merge(reason:) }
|
|
37
|
+
end
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
def complexity = { methods: the_methods, classes: the_classes }
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
def the_methods = @view.complexity.methods.map(&:to_h)
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
def the_classes = @view.complexity.classes.map(&:to_h)
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
end
|
|
47
|
-
end
|
|
45
|
+
def duplication = @view.duplication.clusters.map { Hashira::Duplication::Delta.new(it).to_h }
|
|
48
46
|
end
|
|
@@ -1,37 +1,50 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
3
|
+
class Hashira::Report::MetricsTable
|
|
4
|
+
def initialize(graph, io: $stdout)
|
|
5
|
+
@graph = graph
|
|
6
|
+
@io = io
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
LIMIT = 25
|
|
10
|
+
|
|
11
|
+
def print
|
|
12
|
+
heading
|
|
13
|
+
kept.each { |package, metric| @io.puts(row(package, metric)) }
|
|
14
|
+
note unless spared.empty?
|
|
15
|
+
legend
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def ranked = @graph.metrics.sort_by { |_package, metric| metric.instability }
|
|
21
|
+
|
|
22
|
+
def split = @split ||= (ranked.size > LIMIT ? ranked.partition { |_package, metric| !leaf?(metric) } : [ranked, []])
|
|
23
|
+
|
|
24
|
+
def kept = split.first
|
|
25
|
+
|
|
26
|
+
def spared = split.last
|
|
27
|
+
|
|
28
|
+
def leaf?(metric) = metric.types <= 1 && metric.efferent.zero? && metric.afferent <= 1
|
|
29
|
+
|
|
30
|
+
def note
|
|
31
|
+
@io.puts(" + #{spared.size} single-type leaf packages (TC ≤ 1, Ca ≤ 1, Ce = 0) — hidden for brevity")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def heading
|
|
35
|
+
@io.puts(format("%-12s %3s %3s %3s %5s %-3s", *%w[package TC Ca Ce I Cyc]))
|
|
36
|
+
@io.puts("-" * 40)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def row(package, metric)
|
|
40
|
+
format(
|
|
41
|
+
"%-12s %3d %3d %3d %5.2f %-3s", package, *metric.to_h.values,
|
|
42
|
+
(@graph.cycles.through?(package) ? "YES" : "-")
|
|
43
|
+
)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def legend
|
|
47
|
+
@io.puts("\nLegend: TC total types, Ca afferent (incoming), Ce efferent (outgoing),")
|
|
48
|
+
@io.puts(" I=Ce/(Ce+Ca) instability (0=maximally stable, 1=maximally unstable)\n\n")
|
|
36
49
|
end
|
|
37
50
|
end
|
data/lib/hashira/report/text.rb
CHANGED
|
@@ -1,68 +1,75 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
@io = io
|
|
9
|
-
end
|
|
3
|
+
class Hashira::Report::Text
|
|
4
|
+
def initialize(view, io: $stdout)
|
|
5
|
+
@view = view
|
|
6
|
+
@io = io
|
|
7
|
+
end
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
def print
|
|
10
|
+
coupling if @view.graph
|
|
11
|
+
complexity if @view.complexity
|
|
12
|
+
hotspots if @view.hotspots
|
|
13
|
+
findings
|
|
14
|
+
0
|
|
15
|
+
end
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
private
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
def coupling
|
|
20
|
+
graph = @view.graph
|
|
21
|
+
header(graph)
|
|
22
|
+
Hashira::Report::MetricsTable.new(graph, io: @io).print
|
|
23
|
+
Hashira::Report::DependencyMap.new(graph, io: @io).print
|
|
24
|
+
folded(graph.folds)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def folded(folds)
|
|
28
|
+
return if folds.empty?
|
|
29
|
+
@io.puts("\nFolded (single-type classes joined to their base or domain):")
|
|
30
|
+
folds.each { @io.puts(" #{it[:from]} -> #{it[:to]} (#{it[:via]})") }
|
|
31
|
+
end
|
|
27
32
|
|
|
28
|
-
|
|
33
|
+
def complexity = Hashira::Report::ComplexityTable.new(@view.complexity, io: @io).print
|
|
29
34
|
|
|
30
|
-
|
|
35
|
+
def hotspots = Hashira::Report::HotspotTable.new(@view.hotspots, io: @io).print
|
|
31
36
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
single_package_note if packages == 1
|
|
38
|
-
end
|
|
37
|
+
def header(graph)
|
|
38
|
+
packages = graph.packages.size
|
|
39
|
+
@io.puts(banner(packages))
|
|
40
|
+
caveat if packages == 1
|
|
41
|
+
end
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
end
|
|
43
|
+
def banner(packages)
|
|
44
|
+
"Package (layer) metrics for #{@view.project.label} (#{packages} packages, #{total} files)\n\n"
|
|
45
|
+
end
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
all = @view.findings.all
|
|
47
|
-
@io.puts "\nFindings (#{all.size}):"
|
|
48
|
-
print_findings(all)
|
|
49
|
-
accepted_section
|
|
50
|
-
@io.puts "\n Full evidence + machine format: hashira --json" unless all.empty?
|
|
51
|
-
end
|
|
47
|
+
def total = @view.project.files.size
|
|
52
48
|
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
def caveat
|
|
50
|
+
@io.puts(
|
|
51
|
+
"Only one package found — there are no boundaries to analyze. " \
|
|
52
|
+
"Pass subdirectories to set them (e.g. hashira lib/gem/*/).\n\n"
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
def findings
|
|
57
|
+
all = @view.findings.all
|
|
58
|
+
@io.puts("\nFindings (#{all.size}):")
|
|
59
|
+
list(all)
|
|
60
|
+
accepted
|
|
61
|
+
@io.puts("\n Full evidence + machine format: hashira --json") unless all.empty?
|
|
62
|
+
end
|
|
58
63
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
def list(all)
|
|
65
|
+
return @io.puts(" none ✓ — structure is healthy") if all.empty?
|
|
66
|
+
all.each { Hashira::Report::FindingLines.new(it, indent: " ", io: @io).emit }
|
|
67
|
+
end
|
|
62
68
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
69
|
+
def accepted
|
|
70
|
+
accepted = @view.findings.accepted
|
|
71
|
+
return if accepted.empty?
|
|
72
|
+
@io.puts("\nAccepted (#{accepted.size}):")
|
|
73
|
+
accepted.each { |finding, reason| @io.puts(" ~ #{finding.kind}/#{finding.package} — #{reason}") }
|
|
67
74
|
end
|
|
68
75
|
end
|
data/lib/hashira/version.rb
CHANGED
data/lib/hashira.rb
CHANGED
|
@@ -1,77 +1,114 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
3
|
+
module Hashira
|
|
4
|
+
module Analysis
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
module CI
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
module Complexity
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
module Diagram
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
module Duplication
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
module Hotspots
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
module Report
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
require_relative "hashira/analysis/catalog"
|
|
13
27
|
require_relative "hashira/analysis/census"
|
|
28
|
+
require_relative "hashira/analysis/constant_registry"
|
|
29
|
+
require_relative "hashira/analysis/cycle_findings"
|
|
30
|
+
require_relative "hashira/analysis/cycle_search"
|
|
31
|
+
require_relative "hashira/analysis/cycles"
|
|
32
|
+
require_relative "hashira/analysis/definition"
|
|
33
|
+
require_relative "hashira/analysis/definitions"
|
|
14
34
|
require_relative "hashira/analysis/edge"
|
|
15
35
|
require_relative "hashira/analysis/edge_map"
|
|
16
|
-
require_relative "hashira/analysis/metric"
|
|
17
|
-
require_relative "hashira/analysis/sdp_check"
|
|
18
|
-
require_relative "hashira/analysis/cycle_search"
|
|
19
|
-
require_relative "hashira/analysis/graph"
|
|
20
36
|
require_relative "hashira/analysis/finding"
|
|
37
|
+
require_relative "hashira/analysis/folder_placement"
|
|
38
|
+
require_relative "hashira/analysis/folding"
|
|
39
|
+
require_relative "hashira/analysis/graph"
|
|
40
|
+
require_relative "hashira/analysis/metric"
|
|
41
|
+
require_relative "hashira/analysis/namespace_placement"
|
|
42
|
+
require_relative "hashira/analysis/namespace_prefix"
|
|
43
|
+
require_relative "hashira/analysis/naming"
|
|
44
|
+
require_relative "hashira/analysis/no_folding"
|
|
45
|
+
require_relative "hashira/analysis/node_walk"
|
|
46
|
+
require_relative "hashira/analysis/placement"
|
|
47
|
+
require_relative "hashira/analysis/references"
|
|
48
|
+
require_relative "hashira/analysis/resolver"
|
|
49
|
+
require_relative "hashira/analysis/roster"
|
|
21
50
|
require_relative "hashira/analysis/rule"
|
|
22
|
-
require_relative "hashira/analysis/
|
|
51
|
+
require_relative "hashira/analysis/sdp_check"
|
|
23
52
|
require_relative "hashira/analysis/sdp_violation_findings"
|
|
24
|
-
require_relative "hashira/
|
|
25
|
-
require_relative "hashira/
|
|
26
|
-
require_relative "hashira/
|
|
53
|
+
require_relative "hashira/analysis/syntax"
|
|
54
|
+
require_relative "hashira/analysis/type_walk"
|
|
55
|
+
require_relative "hashira/churn"
|
|
56
|
+
require_relative "hashira/ci/accepted"
|
|
57
|
+
require_relative "hashira/ci/baseline"
|
|
58
|
+
require_relative "hashira/ci/diff"
|
|
59
|
+
require_relative "hashira/ci/edge_diff_report"
|
|
60
|
+
require_relative "hashira/ci/finding_diff_report"
|
|
61
|
+
require_relative "hashira/ci/gate"
|
|
62
|
+
require_relative "hashira/ci/improvement"
|
|
63
|
+
require_relative "hashira/ci/ratchet"
|
|
64
|
+
require_relative "hashira/ci/ratchet_report"
|
|
65
|
+
require_relative "hashira/cli"
|
|
66
|
+
require_relative "hashira/cli/arguments"
|
|
67
|
+
require_relative "hashira/cli/command_line"
|
|
68
|
+
require_relative "hashira/cli/fail_on"
|
|
69
|
+
require_relative "hashira/cli/options"
|
|
70
|
+
require_relative "hashira/cli/package_by"
|
|
71
|
+
require_relative "hashira/cli/run"
|
|
72
|
+
require_relative "hashira/cli/skip"
|
|
73
|
+
require_relative "hashira/cli/usage"
|
|
74
|
+
require_relative "hashira/complexity/analyzer"
|
|
27
75
|
require_relative "hashira/complexity/boolean_run"
|
|
28
|
-
require_relative "hashira/complexity/rescue_scan"
|
|
29
76
|
require_relative "hashira/complexity/cognitive_score"
|
|
77
|
+
require_relative "hashira/complexity/if_chain"
|
|
30
78
|
require_relative "hashira/complexity/method_finding"
|
|
31
|
-
require_relative "hashira/complexity/
|
|
32
|
-
require_relative "hashira/
|
|
33
|
-
require_relative "hashira/
|
|
34
|
-
require_relative "hashira/
|
|
35
|
-
require_relative "hashira/
|
|
36
|
-
require_relative "hashira/
|
|
79
|
+
require_relative "hashira/complexity/method_score"
|
|
80
|
+
require_relative "hashira/complexity/rescue_scan"
|
|
81
|
+
require_relative "hashira/complexity/rollup"
|
|
82
|
+
require_relative "hashira/diagram/dot"
|
|
83
|
+
require_relative "hashira/diagram/mermaid"
|
|
84
|
+
require_relative "hashira/diagram/renderer"
|
|
85
|
+
require_relative "hashira/duplication/analyzer"
|
|
37
86
|
require_relative "hashira/duplication/cluster"
|
|
87
|
+
require_relative "hashira/duplication/clusterer"
|
|
88
|
+
require_relative "hashira/duplication/delta"
|
|
89
|
+
require_relative "hashira/duplication/duplication_finding"
|
|
90
|
+
require_relative "hashira/duplication/extractor"
|
|
91
|
+
require_relative "hashira/duplication/fragment"
|
|
38
92
|
require_relative "hashira/duplication/grouping"
|
|
39
93
|
require_relative "hashira/duplication/index"
|
|
40
|
-
require_relative "hashira/duplication/near_miss"
|
|
41
94
|
require_relative "hashira/duplication/maximal"
|
|
42
|
-
require_relative "hashira/duplication/
|
|
95
|
+
require_relative "hashira/duplication/near_miss"
|
|
96
|
+
require_relative "hashira/duplication/sequence"
|
|
97
|
+
require_relative "hashira/duplication/similarity"
|
|
98
|
+
require_relative "hashira/duplication/union_find"
|
|
43
99
|
require_relative "hashira/duplication/variance"
|
|
44
|
-
require_relative "hashira/
|
|
45
|
-
require_relative "hashira/duplication/duplication_finding"
|
|
46
|
-
require_relative "hashira/duplication/analyzer"
|
|
47
|
-
require_relative "hashira/diagram/dot"
|
|
48
|
-
require_relative "hashira/diagram/mermaid"
|
|
49
|
-
require_relative "hashira/diagram/renderer"
|
|
50
|
-
require_relative "hashira/ci/accepted"
|
|
51
|
-
require_relative "hashira/ci/baseline"
|
|
52
|
-
require_relative "hashira/ci/diff"
|
|
53
|
-
require_relative "hashira/ci/improvement"
|
|
54
|
-
require_relative "hashira/ci/edge_diff_report"
|
|
55
|
-
require_relative "hashira/ci/finding_diff_report"
|
|
56
|
-
require_relative "hashira/ci/ratchet_report"
|
|
57
|
-
require_relative "hashira/ci/gate"
|
|
58
|
-
require_relative "hashira/ci/ratchet"
|
|
100
|
+
require_relative "hashira/error"
|
|
59
101
|
require_relative "hashira/hotspots/file_cost"
|
|
60
102
|
require_relative "hashira/hotspots/rollup"
|
|
61
|
-
require_relative "hashira/
|
|
62
|
-
require_relative "hashira/
|
|
63
|
-
require_relative "hashira/report/finding_lines"
|
|
64
|
-
require_relative "hashira/report/dependency_map"
|
|
65
|
-
require_relative "hashira/report/metrics_table"
|
|
103
|
+
require_relative "hashira/pipeline"
|
|
104
|
+
require_relative "hashira/project"
|
|
66
105
|
require_relative "hashira/report/complexity_table"
|
|
106
|
+
require_relative "hashira/report/dependency_map"
|
|
107
|
+
require_relative "hashira/report/finding_lines"
|
|
108
|
+
require_relative "hashira/report/graph_payload"
|
|
67
109
|
require_relative "hashira/report/hotspot_table"
|
|
68
110
|
require_relative "hashira/report/json"
|
|
111
|
+
require_relative "hashira/report/metrics_table"
|
|
69
112
|
require_relative "hashira/report/text"
|
|
70
|
-
require_relative "hashira/
|
|
71
|
-
require_relative "hashira/
|
|
72
|
-
require_relative "hashira/cli/fail_on"
|
|
73
|
-
require_relative "hashira/cli/skip"
|
|
74
|
-
require_relative "hashira/cli/options"
|
|
75
|
-
require_relative "hashira/cli/command_line"
|
|
76
|
-
require_relative "hashira/cli/usage"
|
|
77
|
-
require_relative "hashira/cli/run"
|
|
113
|
+
require_relative "hashira/report/view"
|
|
114
|
+
require_relative "hashira/version"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hashira
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Giacomo GK
|
|
@@ -26,18 +26,30 @@ files:
|
|
|
26
26
|
- README.md
|
|
27
27
|
- exe/hashira
|
|
28
28
|
- lib/hashira.rb
|
|
29
|
+
- lib/hashira/analysis/catalog.rb
|
|
29
30
|
- lib/hashira/analysis/census.rb
|
|
31
|
+
- lib/hashira/analysis/constant_registry.rb
|
|
30
32
|
- lib/hashira/analysis/cycle_findings.rb
|
|
31
33
|
- lib/hashira/analysis/cycle_search.rb
|
|
34
|
+
- lib/hashira/analysis/cycles.rb
|
|
35
|
+
- lib/hashira/analysis/definition.rb
|
|
32
36
|
- lib/hashira/analysis/definitions.rb
|
|
33
37
|
- lib/hashira/analysis/edge.rb
|
|
34
38
|
- lib/hashira/analysis/edge_map.rb
|
|
35
39
|
- lib/hashira/analysis/finding.rb
|
|
40
|
+
- lib/hashira/analysis/folder_placement.rb
|
|
41
|
+
- lib/hashira/analysis/folding.rb
|
|
36
42
|
- lib/hashira/analysis/graph.rb
|
|
37
43
|
- lib/hashira/analysis/metric.rb
|
|
44
|
+
- lib/hashira/analysis/namespace_placement.rb
|
|
45
|
+
- lib/hashira/analysis/namespace_prefix.rb
|
|
46
|
+
- lib/hashira/analysis/naming.rb
|
|
47
|
+
- lib/hashira/analysis/no_folding.rb
|
|
38
48
|
- lib/hashira/analysis/node_walk.rb
|
|
49
|
+
- lib/hashira/analysis/placement.rb
|
|
39
50
|
- lib/hashira/analysis/references.rb
|
|
40
|
-
- lib/hashira/analysis/
|
|
51
|
+
- lib/hashira/analysis/resolver.rb
|
|
52
|
+
- lib/hashira/analysis/roster.rb
|
|
41
53
|
- lib/hashira/analysis/rule.rb
|
|
42
54
|
- lib/hashira/analysis/sdp_check.rb
|
|
43
55
|
- lib/hashira/analysis/sdp_violation_findings.rb
|
|
@@ -54,9 +66,11 @@ files:
|
|
|
54
66
|
- lib/hashira/ci/ratchet.rb
|
|
55
67
|
- lib/hashira/ci/ratchet_report.rb
|
|
56
68
|
- lib/hashira/cli.rb
|
|
69
|
+
- lib/hashira/cli/arguments.rb
|
|
57
70
|
- lib/hashira/cli/command_line.rb
|
|
58
71
|
- lib/hashira/cli/fail_on.rb
|
|
59
72
|
- lib/hashira/cli/options.rb
|
|
73
|
+
- lib/hashira/cli/package_by.rb
|
|
60
74
|
- lib/hashira/cli/run.rb
|
|
61
75
|
- lib/hashira/cli/skip.rb
|
|
62
76
|
- lib/hashira/cli/usage.rb
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Hashira
|
|
4
|
-
module Analysis
|
|
5
|
-
module RootNamespace
|
|
6
|
-
module_function
|
|
7
|
-
|
|
8
|
-
def infer(definitions)
|
|
9
|
-
definitions.map { |_node, full, _package| full.first }
|
|
10
|
-
.tally.max_by { |_name, count| count }&.first
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|