codemonitor 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 54b2ce0b7c2997591225e5e7487433854b3fff767e3272b3d02210de337253cf
4
- data.tar.gz: aa9a60e54480ec4602ec108f45b84323aa04aa46f3df622a4db2a303cb1e6ec3
3
+ metadata.gz: 32f7be0ad2a196ea1dd1e420c56b9a2b1c87c2b7e0381f6e968fd1df706f86c0
4
+ data.tar.gz: 5a88b2dec7531acc15f99085ee4f456ee18a0e535cec5f242feaabc718974c96
5
5
  SHA512:
6
- metadata.gz: 47fb68d254802463f047d96ef409b111ee3f65c6e007a74122bb90151a4e4d457ed2b7b3c4e2bb6da0cc7da45284a933a43167714b39d7d6ebe291f68e8a1822
7
- data.tar.gz: 2a466e51f3cd2e5936600680068af4bdb0ee717e9fcbfcc657394d08640f2b00799e2f82a3f183093bd6e1e8c0ee286c2948b3f5f777b5eb8e2e45fd464d4fcf
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
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CodeMonitor
4
- VERSION = '0.3.5'
4
+ VERSION = '0.3.6'
5
5
  end
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.5
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-12 00:00:00.000000000 Z
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