codemonitor 0.6.4 → 0.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a936067f1ea47a2a2583ac67e007ee421074136151207fb34a4cec4c39346b0
4
- data.tar.gz: 61c770ce951fd6ba5cfb92ed1e1b493a039dd01bdff15dfd26925c5d5bf59b5b
3
+ metadata.gz: 66a75b8e6b4c58d6c59f98c5953c4d6638fbfc478ecef138f5a33af21c37b6e5
4
+ data.tar.gz: 227b8c303da35666afb239110761ed5de74866b690bc2c9b863c4fbee89c8149
5
5
  SHA512:
6
- metadata.gz: e65ca50b02d4d779749efd7da2d64ac1c534c21adbcbed1c01cae531fbdffb397ecd0be541d8d3b423284390c07a6333c0432b4d5486706b51b8c3dacc8fabf9
7
- data.tar.gz: 602cb564c35456504ef8464ea9b285a0f5edc999c0d7484d8b11fdef82b59842f1bf3a7f5ceee51edc7fbafe38d5fdddb454d36796280922d024dbc5c649704c
6
+ metadata.gz: dbf1927531abbfff9cc138efa66377591cf6e447c1092f715d2f1e555b2d2e2f56258f77aef5af4faf557ce3a7e82a3daeae7ed4fc713d1b8013f4a1142fcadb
7
+ data.tar.gz: 35983bc1a143f0b31ca64c28819cf9718e7469a7d6df212ca8fd6b680fb405d2a75575b02cb8d8903a6ea565e10ddfb307746b2f5a790bdbc280f76db0f58359
data/.gitignore CHANGED
@@ -54,3 +54,5 @@ build-iPhoneSimulator/
54
54
 
55
55
  # Used by RuboCop. Remote config files pulled in from inherit_from directive.
56
56
  # .rubocop-https?--*
57
+
58
+ *.output.json
data/Gemfile.lock CHANGED
@@ -1,27 +1,33 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- codemonitor (0.6.4)
4
+ codemonitor (0.6.6)
5
5
  dogapi (~> 1.45)
6
- octokit (~> 4.0)
6
+ octokit (~> 9.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- addressable (2.8.1)
12
- public_suffix (>= 2.0.2, < 6.0)
11
+ addressable (2.8.7)
12
+ public_suffix (>= 2.0.2, < 7.0)
13
13
  ast (2.4.2)
14
14
  coderay (1.1.3)
15
15
  diff-lcs (1.3)
16
16
  dogapi (1.45.0)
17
17
  multi_json
18
- faraday (2.7.4)
19
- faraday-net_http (>= 2.0, < 3.1)
20
- ruby2_keywords (>= 0.0.4)
21
- faraday-net_http (3.0.2)
18
+ faraday (2.12.2)
19
+ faraday-net_http (>= 2.0, < 3.5)
20
+ json
21
+ logger
22
+ faraday-net_http (3.4.0)
23
+ net-http (>= 0.5.0)
24
+ json (2.9.1)
25
+ logger (1.6.5)
22
26
  method_source (1.0.0)
23
27
  multi_json (1.15.0)
24
- octokit (4.25.1)
28
+ net-http (0.6.0)
29
+ uri
30
+ octokit (9.2.0)
25
31
  faraday (>= 1, < 3)
26
32
  sawyer (~> 0.9)
27
33
  parallel (1.20.1)
@@ -30,7 +36,7 @@ GEM
30
36
  pry (0.13.1)
31
37
  coderay (~> 1.1)
32
38
  method_source (~> 1.0)
33
- public_suffix (5.0.1)
39
+ public_suffix (6.0.1)
34
40
  rainbow (3.0.0)
35
41
  rake (13.0.3)
36
42
  regexp_parser (2.1.1)
@@ -60,11 +66,11 @@ GEM
60
66
  rubocop-ast (1.5.0)
61
67
  parser (>= 3.0.1.1)
62
68
  ruby-progressbar (1.11.0)
63
- ruby2_keywords (0.0.5)
64
69
  sawyer (0.9.2)
65
70
  addressable (>= 2.3.5)
66
71
  faraday (>= 0.17.3, < 3)
67
72
  unicode-display_width (1.7.0)
73
+ uri (1.0.2)
68
74
 
69
75
  PLATFORMS
70
76
  ruby
data/README.md CHANGED
@@ -89,9 +89,23 @@ semgrep --json -o semgrep.output.json
89
89
 
90
90
  `CODEMONITOR_SEMGREP_THRESHOLD`: Don't emit metrics about rubocop cops that are above of this threshold. (Default: `50`)
91
91
 
92
+ ## Knip
93
+
94
+ Collect multiple metrics from [Knip](https://knip.dev/)
95
+
96
+ **Requirements / Setup**:
97
+
98
+ You need a `knip.output.json` file present in the current folder.
99
+
100
+ You can generate the `knip.output.json` file with this example command:
101
+
102
+ ```
103
+ knip --reporter json > knip.output.json
104
+ ```
105
+
92
106
  ## Sorbet
93
107
 
94
- Collect multiple metrics from the a with [Sorbet](https://sorbet.org/) configured.
108
+ Collect multiple metrics from [Sorbet](https://sorbet.org/) configured.
95
109
 
96
110
  **Requirements / Setup**:
97
111
 
data/codemonitor.gemspec CHANGED
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
37
37
  spec.require_paths = ['lib']
38
38
 
39
39
  spec.add_runtime_dependency 'dogapi', '~> 1.45'
40
- spec.add_runtime_dependency 'octokit', '~> 4.0'
40
+ spec.add_runtime_dependency 'octokit', '~> 9.0'
41
41
 
42
42
  spec.add_development_dependency 'bundler', '~> 2.0'
43
43
  spec.add_development_dependency 'pry', '~> 0.13.1'
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engines
4
+ module Knip
5
+ class Extractor
6
+ METRICS = %i[
7
+ knip_number_of_dependecies
8
+ knip_number_of_devDependencies
9
+ knip_number_of_optionalPeerDependencies
10
+ knip_number_of_unlisted
11
+ knip_number_of_binaries
12
+ knip_number_of_unresolved
13
+ knip_number_of_exports
14
+ knip_number_of_types
15
+ knip_number_of_enumMembers
16
+ knip_number_of_duplicates
17
+ ].freeze
18
+
19
+ def initialize
20
+ end
21
+
22
+ def call(provider)
23
+ metrics = METRICS.map do |metric|
24
+ [metric, send(metric)]
25
+ end.to_h
26
+
27
+ provider.emit(metrics)
28
+ end
29
+
30
+ def requirements?
31
+ File.exist?('knip.output.json')
32
+ end
33
+
34
+ private
35
+
36
+ def knip
37
+ @knip ||= JSON.parse(File.read('knip.output.json'))
38
+ end
39
+
40
+ def by_type(type)
41
+ knip['issues'].reduce(0) do |total, issue|
42
+ total + issue[type].length
43
+ end
44
+ end
45
+
46
+ def knip_number_of_dependecies
47
+ by_type('dependencies')
48
+ end
49
+
50
+ def knip_number_of_devDependencies
51
+ by_type('devDependencies')
52
+ end
53
+
54
+ def knip_number_of_optionalPeerDependencies
55
+ by_type('optionalPeerDependencies')
56
+ end
57
+
58
+ def knip_number_of_unlisted
59
+ by_type('unlisted')
60
+ end
61
+
62
+ def knip_number_of_binaries
63
+ by_type('binaries')
64
+ end
65
+
66
+ def knip_number_of_unresolved
67
+ by_type('unresolved')
68
+ end
69
+
70
+ def knip_number_of_exports
71
+ by_type('exports')
72
+ end
73
+
74
+ def knip_number_of_types
75
+ by_type('types')
76
+ end
77
+
78
+ def knip_number_of_enumMembers
79
+ by_type('enumMembers')
80
+ end
81
+
82
+ def knip_number_of_duplicates
83
+ by_type('duplicates')
84
+ end
85
+ end
86
+ end
87
+ end
data/exe/codemonitor CHANGED
@@ -4,19 +4,20 @@
4
4
  require_relative '../providers/console'
5
5
  require_relative '../providers/datadog'
6
6
 
7
- require_relative '../engines/eslint/extractor'
7
+ require_relative '../engines/custom/extractor'
8
8
  require_relative '../engines/debug/extractor'
9
+ require_relative '../engines/eslint/extractor'
9
10
  require_relative '../engines/git/extractor'
10
11
  require_relative '../engines/github/extractor'
12
+ require_relative '../engines/jest-json-summary/extractor'
13
+ require_relative '../engines/knip/extractor'
11
14
  require_relative '../engines/npm/extractor'
12
15
  require_relative '../engines/packwerk/extractor'
13
16
  require_relative '../engines/rubocop/extractor'
14
- require_relative '../engines/semgrep/extractor'
15
- require_relative '../engines/sorbet/extractor'
16
17
  require_relative '../engines/scc/extractor'
17
- require_relative '../engines/custom/extractor'
18
- require_relative '../engines/jest-json-summary/extractor'
18
+ require_relative '../engines/semgrep/extractor'
19
19
  require_relative '../engines/simplecov-json-coverage/extractor'
20
+ require_relative '../engines/sorbet/extractor'
20
21
 
21
22
  PROVIDERS = {
22
23
  console: Providers::Console,
@@ -24,19 +25,20 @@ PROVIDERS = {
24
25
  }.freeze
25
26
 
26
27
  EXTRACTORS = {
27
- eslint: Engines::Eslint::Extractor,
28
+ custom: Engines::Custom::Extractor,
28
29
  debug: Engines::Debug::Extractor,
30
+ eslint: Engines::Eslint::Extractor,
29
31
  git: Engines::Git::Extractor,
30
32
  github: Engines::Github::Extractor,
33
+ jest_json_summary: Engines::JestJsonSummary::Extractor,
34
+ knip: Engines::Knip::Extractor,
31
35
  npm: Engines::Npm::Extractor,
32
36
  packwerk: Engines::Packwerk::Extractor,
33
37
  rubocop: Engines::Rubocop::Extractor,
34
- semgrep: Engines::Semgrep::Extractor,
35
- sorbet: Engines::Sorbet::Extractor,
36
38
  scc: Engines::Scc::Extractor,
37
- custom: Engines::Custom::Extractor,
38
- jest_json_summary: Engines::JestJsonSummary::Extractor,
39
- simplecov_json_coverage: Engines::SimpleCovJsonCoverage::Extractor
39
+ semgrep: Engines::Semgrep::Extractor,
40
+ simplecov_json_coverage: Engines::SimpleCovJsonCoverage::Extractor,
41
+ sorbet: Engines::Sorbet::Extractor
40
42
  }.freeze
41
43
 
42
44
  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.6.4'
4
+ VERSION = '0.6.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.6.4
4
+ version: 0.6.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ferran Basora
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-31 00:00:00.000000000 Z
11
+ date: 2025-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dogapi
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '4.0'
33
+ version: '9.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '4.0'
40
+ version: '9.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -135,6 +135,7 @@ files:
135
135
  - engines/git/extractor.rb
136
136
  - engines/github/extractor.rb
137
137
  - engines/jest-json-summary/extractor.rb
138
+ - engines/knip/extractor.rb
138
139
  - engines/npm/extractor.rb
139
140
  - engines/packwerk/extractor.rb
140
141
  - engines/rubocop/extractor.rb
@@ -154,7 +155,7 @@ licenses:
154
155
  metadata:
155
156
  source_code_uri: https://github.com/fcsonline/codemonitor
156
157
  bug_tracker_uri: https://github.com/fcsonline/codemonitor/issues
157
- post_install_message:
158
+ post_install_message:
158
159
  rdoc_options: []
159
160
  require_paths:
160
161
  - lib
@@ -169,8 +170,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
170
  - !ruby/object:Gem::Version
170
171
  version: '0'
171
172
  requirements: []
172
- rubygems_version: 3.0.3.1
173
- signing_key:
173
+ rubygems_version: 3.5.22
174
+ signing_key:
174
175
  specification_version: 4
175
176
  summary: Collect many metrics your code is generating
176
177
  test_files: []