codemonitor 0.3.5 → 0.3.6
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/README.md +15 -1
- data/engines/scc/extractor.rb +62 -0
- data/exe/codemonitor +2 -0
- data/lib/codemonitor/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32f7be0ad2a196ea1dd1e420c56b9a2b1c87c2b7e0381f6e968fd1df706f86c0
|
4
|
+
data.tar.gz: 5a88b2dec7531acc15f99085ee4f456ee18a0e535cec5f242feaabc718974c96
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d34229aa5e21856c951a9b707f5269cdffbe4c4c1839b741fdddadf672829e3c94a83a08075f3abeff2e414f33eaedbebdbb42a36ab3abfecd5d7165abc54657
|
7
|
+
data.tar.gz: d6a0d476275b4738887fa4acf83948fac95700142fb3fbe0092a54dd778ee5da4182d7b8cba4f781678d4ae85d8fe34fa106dbe7c4db598f8b4baf9c3595f102
|
data/README.md
CHANGED
@@ -12,7 +12,7 @@ Collect multiple metrics from the a Git repository.
|
|
12
12
|
|
13
13
|
**Requirements / Setup**:
|
14
14
|
|
15
|
-
You need a `.git` folder present in the current folder:
|
15
|
+
You need a `.git` folder present in the current folder:
|
16
16
|
|
17
17
|
**Options**:
|
18
18
|
|
@@ -103,6 +103,20 @@ You can generate the `sorbet.output.json` file with this example command:
|
|
103
103
|
bundle exec srb tc --metrics-prefix 'codemetrics' --metrics-file sorbet.output.json
|
104
104
|
```
|
105
105
|
|
106
|
+
## SCC
|
107
|
+
|
108
|
+
Collect multiple metrics from [SCC](https://github.com/boyter/scc) configured.
|
109
|
+
|
110
|
+
**Requirements / Setup**:
|
111
|
+
|
112
|
+
You need a `scc.output.json` file present in the current folder.
|
113
|
+
|
114
|
+
You can generate the `scc.output.json` file with this example command:
|
115
|
+
|
116
|
+
```
|
117
|
+
scc -f json scc.output.json
|
118
|
+
```
|
119
|
+
|
106
120
|
# Providers
|
107
121
|
|
108
122
|
## Console
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module Engines
|
6
|
+
module Scc
|
7
|
+
class Extractor
|
8
|
+
METRICS = %i[].freeze
|
9
|
+
FIELDS = %w[Bytes Lines Code Comment Blank Complexity Count WeightedComplexity]
|
10
|
+
|
11
|
+
def initialize; end
|
12
|
+
|
13
|
+
def call(provider)
|
14
|
+
return unless requirements?
|
15
|
+
|
16
|
+
metrics = METRICS.map do |metric|
|
17
|
+
[metric, send(metric)]
|
18
|
+
end.to_h
|
19
|
+
|
20
|
+
metrics
|
21
|
+
.merge!(scc_totals)
|
22
|
+
.merge!(scc_by_file_type)
|
23
|
+
|
24
|
+
provider.emit(metrics)
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def requirements?
|
30
|
+
File.exist?('scc.output.json')
|
31
|
+
end
|
32
|
+
|
33
|
+
# NOTE: This output file must be created by an external command
|
34
|
+
def scc
|
35
|
+
@scc ||= JSON.parse(File.read('scc.output.json'))
|
36
|
+
end
|
37
|
+
|
38
|
+
def scc_totals
|
39
|
+
scc.each_with_object({}) do |type, totals|
|
40
|
+
FIELDS.each do |field|
|
41
|
+
key = "scc_total_#{clean(field)}"
|
42
|
+
totals[key] = 0 unless totals.key?(key)
|
43
|
+
|
44
|
+
totals[key] += type[field]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def scc_by_file_type
|
50
|
+
scc.map do |type|
|
51
|
+
FIELDS.map do |field|
|
52
|
+
["scc_type_#{clean(type['Name'])}_#{clean(field)}", type[field]]
|
53
|
+
end.to_h
|
54
|
+
end.inject(&:merge)
|
55
|
+
end
|
56
|
+
|
57
|
+
def clean(key)
|
58
|
+
key.gsub(%r{[-,./ ]}, '_').downcase
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/exe/codemonitor
CHANGED
@@ -13,6 +13,7 @@ require_relative '../engines/packwerk/extractor'
|
|
13
13
|
require_relative '../engines/rubocop/extractor'
|
14
14
|
require_relative '../engines/semgrep/extractor'
|
15
15
|
require_relative '../engines/sorbet/extractor'
|
16
|
+
require_relative '../engines/scc/extractor'
|
16
17
|
require_relative '../engines/custom/extractor'
|
17
18
|
|
18
19
|
PROVIDERS = {
|
@@ -30,6 +31,7 @@ EXTRACTORS = {
|
|
30
31
|
rubocop: Engines::Rubocop::Extractor,
|
31
32
|
semgrep: Engines::Semgrep::Extractor,
|
32
33
|
sorbet: Engines::Sorbet::Extractor,
|
34
|
+
scc: Engines::Scc::Extractor,
|
33
35
|
custom: Engines::Custom::Extractor
|
34
36
|
}.freeze
|
35
37
|
|
data/lib/codemonitor/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codemonitor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ferran Basora
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01-
|
11
|
+
date: 2022-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dogapi
|
@@ -137,6 +137,7 @@ files:
|
|
137
137
|
- engines/npm/extractor.rb
|
138
138
|
- engines/packwerk/extractor.rb
|
139
139
|
- engines/rubocop/extractor.rb
|
140
|
+
- engines/scc/extractor.rb
|
140
141
|
- engines/semgrep/extractor.rb
|
141
142
|
- engines/sorbet/extractor.rb
|
142
143
|
- exe/codemonitor
|