codemonitor 0.6.3 → 0.6.5

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: 3c370a8e0a7e4888fe2b2dd1159fb96d0520e264bb9e9ab0353908e96fbd398b
4
- data.tar.gz: f272147adb0146bdcdb18134a55e1c5fd39353f662f2aa8b9a24b7407672c45f
3
+ metadata.gz: c2ae4cb692b07faaadf879b17c6b55cc72ac409190809049ab434eac84bf3e19
4
+ data.tar.gz: 79824fce726d21204bb8997fccdeb92c1dd6b7ff30b81b42a85f3d9edc3ff86f
5
5
  SHA512:
6
- metadata.gz: b4d4135652668186bb312b4800f07f8eb3ffb48b7751a79c17e2aa472fd2a58fb8e7ef246b02f6c126a75b926f5c8d76178b5385087a63770751557e5f8aa730
7
- data.tar.gz: 246eb36d5b79eb42af45fb6c6f05b7f1016fa4eb22173dbea9eee604fcb250cb1769e248a45ccf794bfbe6a9c6053508fcffe9ad13a9d8c814bfb12568a73c44
6
+ metadata.gz: efda8e213c3f22f39e5d51fea8eadec56dc809ea5b945abdfce93c1a0a99e5616c67b900151df08b76c638e5f746b5956bff8eefd0cfe315dc3c3d14ffd44d36
7
+ data.tar.gz: 15c848dd5a8d572120f68786ac6a75fe9ddb9c92578dce6cda3cc24cb4f8124e30789d68857014e910dde0f0e58910f893b8825c2d6e0940201a99f6f8e1ccde
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,27 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- codemonitor (0.6.2)
4
+ codemonitor (0.6.4)
5
5
  dogapi (~> 1.45)
6
6
  octokit (~> 4.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- addressable (2.8.0)
12
- public_suffix (>= 2.0.2, < 5.0)
11
+ addressable (2.8.1)
12
+ public_suffix (>= 2.0.2, < 6.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.3.0)
19
- faraday-net_http (~> 2.0)
18
+ faraday (2.7.4)
19
+ faraday-net_http (>= 2.0, < 3.1)
20
20
  ruby2_keywords (>= 0.0.4)
21
- faraday-net_http (2.0.3)
21
+ faraday-net_http (3.0.2)
22
22
  method_source (1.0.0)
23
23
  multi_json (1.15.0)
24
- octokit (4.25.0)
24
+ octokit (4.25.1)
25
25
  faraday (>= 1, < 3)
26
26
  sawyer (~> 0.9)
27
27
  parallel (1.20.1)
@@ -30,7 +30,7 @@ GEM
30
30
  pry (0.13.1)
31
31
  coderay (~> 1.1)
32
32
  method_source (~> 1.0)
33
- public_suffix (4.0.7)
33
+ public_suffix (5.0.1)
34
34
  rainbow (3.0.0)
35
35
  rake (13.0.3)
36
36
  regexp_parser (2.1.1)
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
 
@@ -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
@@ -26,7 +26,6 @@ module Engines
26
26
 
27
27
  private
28
28
 
29
- package-todos.yml
30
29
  def packwerk_files
31
30
  Dir.glob('./**/package_todo.yml')
32
31
  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.3'
4
+ VERSION = '0.6.5'
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.3
4
+ version: 0.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ferran Basora
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-29 00:00:00.000000000 Z
11
+ date: 2024-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dogapi
@@ -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