codemonitor 0.6.4 → 0.6.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: 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: []