codemonitor 0.5.0 → 0.6.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f85a1e1dbcae9d0bd26c461505a12449283dbf2029ee34ba59b36a2277e00321
4
- data.tar.gz: 2cc548a6646d98cbeab3b72ce2dff06fd0d40175bf599fec2db5e12659aec7c4
3
+ metadata.gz: 6854cd74465f779883ad7539cc646a32ad387b0cc7e931ad01de628af2a27953
4
+ data.tar.gz: c925c23934babe9928c9ad39a5a57a36ccb05e7239183bca0b4e76fe3571b7d2
5
5
  SHA512:
6
- metadata.gz: 7af9d278c2c2fcbba028ecb161cf7ee49b374ef701aee25bbb2ccfc3fe714a2fcf54d05c18a43653dee3e3d7263904668b38fa74569c8168c22a87be4bd6b4e2
7
- data.tar.gz: f928807e202db2c1b60b3cec7e5df66abd44b04c8c4ddc165a201476c8e04a36ac3f3bd036abc5e3eb54aac66299bc99ac8827aae822d4587d00a1d22a6ff96d
6
+ metadata.gz: 03c48fbc3e40b6ed2e308aeefb05da788d2efabafbf40ff0da732d9b5669fbffeb6c08e48d4f882da3f9392c682a24688b18e8a9de2cd382074fecba37ce1d2f
7
+ data.tar.gz: 3b73b806ca5b85b459858c3d0490d2aca20d1c24082f116de6384fcb7e3fd34b0a21db32b6d8c4e51ef9474f7f989622132302b9fa8980b943b7787a2cb84061
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- codemonitor (0.5.0)
4
+ codemonitor (0.6.2)
5
5
  dogapi (~> 1.45)
6
6
  octokit (~> 4.0)
7
7
 
@@ -15,35 +15,15 @@ GEM
15
15
  diff-lcs (1.3)
16
16
  dogapi (1.45.0)
17
17
  multi_json
18
- faraday (1.10.0)
19
- faraday-em_http (~> 1.0)
20
- faraday-em_synchrony (~> 1.0)
21
- faraday-excon (~> 1.1)
22
- faraday-httpclient (~> 1.0)
23
- faraday-multipart (~> 1.0)
24
- faraday-net_http (~> 1.0)
25
- faraday-net_http_persistent (~> 1.0)
26
- faraday-patron (~> 1.0)
27
- faraday-rack (~> 1.0)
28
- faraday-retry (~> 1.0)
18
+ faraday (2.3.0)
19
+ faraday-net_http (~> 2.0)
29
20
  ruby2_keywords (>= 0.0.4)
30
- faraday-em_http (1.0.0)
31
- faraday-em_synchrony (1.0.0)
32
- faraday-excon (1.1.0)
33
- faraday-httpclient (1.0.1)
34
- faraday-multipart (1.0.3)
35
- multipart-post (>= 1.2, < 3)
36
- faraday-net_http (1.0.1)
37
- faraday-net_http_persistent (1.2.0)
38
- faraday-patron (1.0.0)
39
- faraday-rack (1.0.0)
40
- faraday-retry (1.0.3)
21
+ faraday-net_http (2.0.3)
41
22
  method_source (1.0.0)
42
23
  multi_json (1.15.0)
43
- multipart-post (2.1.1)
44
- octokit (4.22.0)
45
- faraday (>= 0.9)
46
- sawyer (~> 0.8.0, >= 0.5.3)
24
+ octokit (4.25.0)
25
+ faraday (>= 1, < 3)
26
+ sawyer (~> 0.9)
47
27
  parallel (1.20.1)
48
28
  parser (3.0.1.1)
49
29
  ast (~> 2.4.1)
@@ -81,9 +61,9 @@ GEM
81
61
  parser (>= 3.0.1.1)
82
62
  ruby-progressbar (1.11.0)
83
63
  ruby2_keywords (0.0.5)
84
- sawyer (0.8.2)
64
+ sawyer (0.9.2)
85
65
  addressable (>= 2.3.5)
86
- faraday (> 0.8, < 2.0)
66
+ faraday (>= 0.17.3, < 3)
87
67
  unicode-display_width (1.7.0)
88
68
 
89
69
  PLATFORMS
@@ -3,6 +3,10 @@
3
3
  module Engines
4
4
  module Custom
5
5
  class Extractor
6
+ def initialize
7
+ @filenames = ENV.fetch('CODEMONITOR_CUSTOMS', nil)
8
+ end
9
+
6
10
  def call(provider)
7
11
  provider.emit(metrics)
8
12
  end
@@ -14,7 +18,27 @@ module Engines
14
18
  private
15
19
 
16
20
  def custom_files
17
- Dir.glob('./.codemonitor/*.rb')
21
+ return Dir.glob('./.codemonitor/*.rb') if @filenames.nil?
22
+
23
+ raise 'Forbidden access to parent folder' unless @filenames.match(/\.\./).nil?
24
+
25
+ includes = @filenames.split(',').reject do |filename|
26
+ filename.start_with?('-')
27
+ end.map do |filename|
28
+ "./.codemonitor/#{filename}.rb"
29
+ end
30
+
31
+ excludes = @filenames.split(',').filter do |filename|
32
+ filename.start_with?('-')
33
+ end.map do |filename|
34
+ "./.codemonitor/#{filename.gsub(/^-/, '')}.rb"
35
+ end
36
+
37
+ raise 'Mixed included and excluded custom paths is not allowed' if includes.size > 0 && excludes.size > 0
38
+
39
+ return Dir.glob(includes) if includes.size > 0
40
+
41
+ Dir.glob('./.codemonitor/*.rb') - Dir.glob(excludes)
18
42
  end
19
43
 
20
44
  def metrics
@@ -19,7 +19,6 @@ module Engines
19
19
  .merge!(total_statements)
20
20
  .merge!(total_functions)
21
21
  .merge!(total_branches)
22
- .merge!(total_branches_true)
23
22
 
24
23
  provider.emit(metrics)
25
24
  end
@@ -50,13 +49,9 @@ module Engines
50
49
  flatten('branches')
51
50
  end
52
51
 
53
- def total_branches_true
54
- flatten('branchesTrue', 'branches_true')
55
- end
56
-
57
52
  def flatten(member, rename = nil)
58
53
  json_summary['total'][member].map do |key, value|
59
- ["jest_json_summary_#{rename || member}_#{key}", value.to_i]
54
+ ["jest_json_summary_#{rename || member}_#{key}", value.to_f]
60
55
  end.to_h
61
56
  end
62
57
  end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module Engines
6
+ module SimpleCovJsonCoverage
7
+ class Extractor
8
+ METRICS = %i[
9
+ simplecov_json_coverage_metrics_covered_percent
10
+ simplecov_json_coverage_metrics_covered_strength
11
+ simplecov_json_coverage_metrics_covered_lines
12
+ simplecov_json_coverage_metrics_total_lines
13
+ ].freeze
14
+
15
+ def initialize; end
16
+
17
+ def call(provider)
18
+ metrics = METRICS.map do |metric|
19
+ [metric, send(metric)]
20
+ end.to_h
21
+
22
+ provider.emit(metrics)
23
+ end
24
+
25
+ def requirements?
26
+ File.exist?('simplecov_json_coverage.output.json')
27
+ end
28
+
29
+ private
30
+
31
+ def json_summary
32
+ @json_summary ||= JSON.parse(File.read('simplecov_json_coverage.output.json'))
33
+ end
34
+
35
+ def metrics
36
+ @metrics ||= json_summary['metrics']
37
+ end
38
+
39
+ def simplecov_json_coverage_metrics_covered_percent
40
+ metrics['covered_percent']
41
+ end
42
+
43
+ def simplecov_json_coverage_metrics_covered_strength
44
+ metrics['covered_strength']
45
+ end
46
+
47
+ def simplecov_json_coverage_metrics_covered_lines
48
+ metrics['covered_lines']
49
+ end
50
+
51
+ def simplecov_json_coverage_metrics_total_lines
52
+ metrics['total_lines']
53
+ end
54
+ end
55
+ end
56
+ end
data/exe/codemonitor CHANGED
@@ -16,6 +16,7 @@ require_relative '../engines/sorbet/extractor'
16
16
  require_relative '../engines/scc/extractor'
17
17
  require_relative '../engines/custom/extractor'
18
18
  require_relative '../engines/jest-json-summary/extractor'
19
+ require_relative '../engines/simplecov-json-coverage/extractor'
19
20
 
20
21
  PROVIDERS = {
21
22
  console: Providers::Console,
@@ -34,7 +35,8 @@ EXTRACTORS = {
34
35
  sorbet: Engines::Sorbet::Extractor,
35
36
  scc: Engines::Scc::Extractor,
36
37
  custom: Engines::Custom::Extractor,
37
- jest_json_summary: Engines::JestJsonSummary::Extractor
38
+ jest_json_summary: Engines::JestJsonSummary::Extractor,
39
+ simplecov_json_coverage: Engines::SimpleCovJsonCoverage::Extractor
38
40
  }.freeze
39
41
 
40
42
  config_provider = ENV['CODEMONITOR_PROVIDER'] || 'console'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CodeMonitor
4
- VERSION = '0.5.0'
4
+ VERSION = '0.6.2'
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.5.0
4
+ version: 0.6.2
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-04-26 00:00:00.000000000 Z
11
+ date: 2022-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dogapi
@@ -140,6 +140,7 @@ files:
140
140
  - engines/rubocop/extractor.rb
141
141
  - engines/scc/extractor.rb
142
142
  - engines/semgrep/extractor.rb
143
+ - engines/simplecov-json-coverage/extractor.rb
143
144
  - engines/sorbet/extractor.rb
144
145
  - exe/codemonitor
145
146
  - lib/codemonitor/version.rb
@@ -168,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
169
  - !ruby/object:Gem::Version
169
170
  version: '0'
170
171
  requirements: []
171
- rubygems_version: 3.1.2
172
+ rubygems_version: 3.3.5
172
173
  signing_key:
173
174
  specification_version: 4
174
175
  summary: Collect many metrics your code is generating