codemonitor 0.6.4 → 0.6.5

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: 7a936067f1ea47a2a2583ac67e007ee421074136151207fb34a4cec4c39346b0
4
- data.tar.gz: 61c770ce951fd6ba5cfb92ed1e1b493a039dd01bdff15dfd26925c5d5bf59b5b
3
+ metadata.gz: c2ae4cb692b07faaadf879b17c6b55cc72ac409190809049ab434eac84bf3e19
4
+ data.tar.gz: 79824fce726d21204bb8997fccdeb92c1dd6b7ff30b81b42a85f3d9edc3ff86f
5
5
  SHA512:
6
- metadata.gz: e65ca50b02d4d779749efd7da2d64ac1c534c21adbcbed1c01cae531fbdffb397ecd0be541d8d3b423284390c07a6333c0432b4d5486706b51b8c3dacc8fabf9
7
- data.tar.gz: 602cb564c35456504ef8464ea9b285a0f5edc999c0d7484d8b11fdef82b59842f1bf3a7f5ceee51edc7fbafe38d5fdddb454d36796280922d024dbc5c649704c
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/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
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.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.4
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-31 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