code-ranker 1.1.0__tar.gz → 2.0.0__tar.gz
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.
- {code_ranker-1.1.0 → code_ranker-2.0.0}/Cargo.lock +34 -300
- {code_ranker-1.1.0 → code_ranker-2.0.0}/Cargo.toml +13 -10
- {code_ranker-1.1.0 → code_ranker-2.0.0}/PKG-INFO +2 -1
- {code_ranker-1.1.0 → code_ranker-2.0.0}/README.md +1 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/Cargo.toml +0 -1
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/logger.rs +0 -4
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/pipeline.rs +15 -46
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/plugin/mod.rs +39 -1
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/tests/e2e.rs +109 -10
- code_ranker-2.0.0/crates/code-ranker-cli/tests/grammar_single_version.rs +66 -0
- code_ranker-2.0.0/crates/code-ranker-ecmascript-core/Cargo.toml +28 -0
- code_ranker-2.0.0/crates/code-ranker-ecmascript-core/src/ecmascript_ts.rs +682 -0
- {code_ranker-1.1.0/crates/code-ranker-plugin-javascript → code_ranker-2.0.0/crates/code-ranker-ecmascript-core}/src/lib.rs +275 -60
- code_ranker-2.0.0/crates/code-ranker-ecmascript-core/src/metrics_tests.rs +183 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-graph/src/cycles.rs +136 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-graph/src/hk.rs +1 -1
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-graph/src/lib.rs +3 -0
- code_ranker-2.0.0/crates/code-ranker-graph/src/metrics.rs +370 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-graph/src/relativize.rs +69 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-api/src/level.rs +18 -0
- code_ranker-2.0.0/crates/code-ranker-plugin-api/src/plugin.rs +217 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-javascript/Cargo.toml +3 -3
- code_ranker-2.0.0/crates/code-ranker-plugin-javascript/src/lib.rs +154 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-python/Cargo.toml +3 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-python/src/lib.rs +145 -11
- code_ranker-2.0.0/crates/code-ranker-plugin-python/src/metrics_tests.rs +145 -0
- code_ranker-2.0.0/crates/code-ranker-plugin-python/src/python_ts.rs +536 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-rust/Cargo.toml +4 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-rust/src/crate_graph.rs +1 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-rust/src/internal.rs +24 -0
- code_ranker-2.0.0/crates/code-ranker-plugin-rust/src/lib.rs +1530 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-rust/src/module_graph.rs +296 -78
- code_ranker-2.0.0/crates/code-ranker-plugin-rust/src/rust_ts.rs +589 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-typescript/Cargo.toml +4 -5
- code_ranker-2.0.0/crates/code-ranker-plugin-typescript/src/lib.rs +315 -0
- code_ranker-2.0.0/crates/code-ranker-test-support/Cargo.toml +15 -0
- code_ranker-2.0.0/crates/code-ranker-test-support/src/lib.rs +37 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/layout.js +17 -2
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/node-table.js +8 -3
- code_ranker-1.1.0/crates/code-ranker-complexity/Cargo.toml +0 -22
- code_ranker-1.1.0/crates/code-ranker-complexity/src/lib.rs +0 -569
- code_ranker-1.1.0/crates/code-ranker-plugin-api/src/plugin.rs +0 -102
- code_ranker-1.1.0/crates/code-ranker-plugin-rust/src/lib.rs +0 -569
- code_ranker-1.1.0/crates/code-ranker-plugin-typescript/src/lib.rs +0 -139
- {code_ranker-1.1.0 → code_ranker-2.0.0}/LICENSE +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/analyze.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/check.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/cli.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/config/ignore.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/config/load.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/config/mod.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/config/model.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/config/rules.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/config/violations.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/git.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/main.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/presets.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/recommend.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-cli/src/report.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-graph/Cargo.toml +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-graph/src/attrs.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-graph/src/finalize.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-graph/src/level_graph.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-graph/src/serialize.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-graph/src/snapshot.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-graph/src/stats.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-api/Cargo.toml +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-api/src/attrs.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-api/src/edge.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-api/src/graph.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-api/src/lib.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-api/src/log.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-api/src/node.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-plugin-rust/src/ids.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/Cargo.toml +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/app.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/base.css +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/diff.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/export-popup.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/export.css +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/graphviz.umd.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/grouping.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/index.html +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/map-interactions.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/map-render.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/map-svg.css +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/map.css +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/modal-content.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/modal.css +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/modal.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/nav.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/node-popup.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/panzoom.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/schema.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/snap-controls.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/snap.css +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/snarkdown.umd.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/source-links.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/summary.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/tables.css +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/tooltip.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/ui.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/utils.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/assets/view-state.js +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/crates/code-ranker-viewer/src/lib.rs +0 -0
- {code_ranker-1.1.0 → code_ranker-2.0.0}/pyproject.toml +0 -0
|
@@ -76,12 +76,6 @@ version = "1.0.102"
|
|
|
76
76
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
77
77
|
checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
|
|
78
78
|
|
|
79
|
-
[[package]]
|
|
80
|
-
name = "arrayvec"
|
|
81
|
-
version = "0.7.6"
|
|
82
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
83
|
-
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
|
|
84
|
-
|
|
85
79
|
[[package]]
|
|
86
80
|
name = "autocfg"
|
|
87
81
|
version = "1.5.0"
|
|
@@ -214,12 +208,11 @@ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
|
|
|
214
208
|
|
|
215
209
|
[[package]]
|
|
216
210
|
name = "code-ranker"
|
|
217
|
-
version = "
|
|
211
|
+
version = "2.0.0"
|
|
218
212
|
dependencies = [
|
|
219
213
|
"anyhow",
|
|
220
214
|
"chrono",
|
|
221
215
|
"clap",
|
|
222
|
-
"code-ranker-complexity",
|
|
223
216
|
"code-ranker-graph",
|
|
224
217
|
"code-ranker-plugin-api",
|
|
225
218
|
"code-ranker-plugin-javascript",
|
|
@@ -237,20 +230,23 @@ dependencies = [
|
|
|
237
230
|
]
|
|
238
231
|
|
|
239
232
|
[[package]]
|
|
240
|
-
name = "code-ranker-
|
|
241
|
-
version = "
|
|
233
|
+
name = "code-ranker-ecmascript-core"
|
|
234
|
+
version = "2.0.0"
|
|
242
235
|
dependencies = [
|
|
236
|
+
"anyhow",
|
|
243
237
|
"code-ranker-graph",
|
|
244
238
|
"code-ranker-plugin-api",
|
|
245
|
-
"
|
|
246
|
-
"rust-code-analysis-code-split",
|
|
247
|
-
"syn",
|
|
239
|
+
"code-ranker-test-support",
|
|
248
240
|
"tempfile",
|
|
241
|
+
"tree-sitter",
|
|
242
|
+
"tree-sitter-javascript",
|
|
243
|
+
"tree-sitter-typescript",
|
|
244
|
+
"walkdir",
|
|
249
245
|
]
|
|
250
246
|
|
|
251
247
|
[[package]]
|
|
252
248
|
name = "code-ranker-graph"
|
|
253
|
-
version = "
|
|
249
|
+
version = "2.0.0"
|
|
254
250
|
dependencies = [
|
|
255
251
|
"anyhow",
|
|
256
252
|
"chrono",
|
|
@@ -261,7 +257,7 @@ dependencies = [
|
|
|
261
257
|
|
|
262
258
|
[[package]]
|
|
263
259
|
name = "code-ranker-plugin-api"
|
|
264
|
-
version = "
|
|
260
|
+
version = "2.0.0"
|
|
265
261
|
dependencies = [
|
|
266
262
|
"anyhow",
|
|
267
263
|
"chrono",
|
|
@@ -270,23 +266,24 @@ dependencies = [
|
|
|
270
266
|
|
|
271
267
|
[[package]]
|
|
272
268
|
name = "code-ranker-plugin-javascript"
|
|
273
|
-
version = "
|
|
269
|
+
version = "2.0.0"
|
|
274
270
|
dependencies = [
|
|
275
271
|
"anyhow",
|
|
276
|
-
"code-ranker-
|
|
272
|
+
"code-ranker-ecmascript-core",
|
|
277
273
|
"code-ranker-plugin-api",
|
|
274
|
+
"code-ranker-test-support",
|
|
278
275
|
"tempfile",
|
|
279
|
-
"tree-sitter",
|
|
280
276
|
"tree-sitter-javascript",
|
|
281
|
-
"walkdir",
|
|
282
277
|
]
|
|
283
278
|
|
|
284
279
|
[[package]]
|
|
285
280
|
name = "code-ranker-plugin-python"
|
|
286
|
-
version = "
|
|
281
|
+
version = "2.0.0"
|
|
287
282
|
dependencies = [
|
|
288
283
|
"anyhow",
|
|
284
|
+
"code-ranker-graph",
|
|
289
285
|
"code-ranker-plugin-api",
|
|
286
|
+
"code-ranker-test-support",
|
|
290
287
|
"tempfile",
|
|
291
288
|
"tree-sitter",
|
|
292
289
|
"tree-sitter-python",
|
|
@@ -295,33 +292,41 @@ dependencies = [
|
|
|
295
292
|
|
|
296
293
|
[[package]]
|
|
297
294
|
name = "code-ranker-plugin-rust"
|
|
298
|
-
version = "
|
|
295
|
+
version = "2.0.0"
|
|
299
296
|
dependencies = [
|
|
300
297
|
"anyhow",
|
|
301
298
|
"cargo_metadata",
|
|
299
|
+
"code-ranker-graph",
|
|
302
300
|
"code-ranker-plugin-api",
|
|
303
301
|
"proc-macro2",
|
|
304
302
|
"syn",
|
|
303
|
+
"tree-sitter",
|
|
304
|
+
"tree-sitter-rust",
|
|
305
305
|
"which",
|
|
306
306
|
]
|
|
307
307
|
|
|
308
308
|
[[package]]
|
|
309
309
|
name = "code-ranker-plugin-typescript"
|
|
310
|
-
version = "
|
|
310
|
+
version = "2.0.0"
|
|
311
311
|
dependencies = [
|
|
312
312
|
"anyhow",
|
|
313
|
-
"code-ranker-
|
|
313
|
+
"code-ranker-ecmascript-core",
|
|
314
314
|
"code-ranker-plugin-api",
|
|
315
|
-
"code-ranker-
|
|
315
|
+
"code-ranker-test-support",
|
|
316
316
|
"tempfile",
|
|
317
|
-
"tree-sitter",
|
|
318
317
|
"tree-sitter-typescript",
|
|
319
|
-
|
|
318
|
+
]
|
|
319
|
+
|
|
320
|
+
[[package]]
|
|
321
|
+
name = "code-ranker-test-support"
|
|
322
|
+
version = "2.0.0"
|
|
323
|
+
dependencies = [
|
|
324
|
+
"code-ranker-plugin-api",
|
|
320
325
|
]
|
|
321
326
|
|
|
322
327
|
[[package]]
|
|
323
328
|
name = "code-ranker-viewer"
|
|
324
|
-
version = "
|
|
329
|
+
version = "2.0.0"
|
|
325
330
|
dependencies = [
|
|
326
331
|
"anyhow",
|
|
327
332
|
"code-ranker-graph",
|
|
@@ -341,62 +346,6 @@ version = "0.8.7"
|
|
|
341
346
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
342
347
|
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
|
343
348
|
|
|
344
|
-
[[package]]
|
|
345
|
-
name = "crossbeam"
|
|
346
|
-
version = "0.8.4"
|
|
347
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
348
|
-
checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8"
|
|
349
|
-
dependencies = [
|
|
350
|
-
"crossbeam-channel",
|
|
351
|
-
"crossbeam-deque",
|
|
352
|
-
"crossbeam-epoch",
|
|
353
|
-
"crossbeam-queue",
|
|
354
|
-
"crossbeam-utils",
|
|
355
|
-
]
|
|
356
|
-
|
|
357
|
-
[[package]]
|
|
358
|
-
name = "crossbeam-channel"
|
|
359
|
-
version = "0.5.15"
|
|
360
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
361
|
-
checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
|
|
362
|
-
dependencies = [
|
|
363
|
-
"crossbeam-utils",
|
|
364
|
-
]
|
|
365
|
-
|
|
366
|
-
[[package]]
|
|
367
|
-
name = "crossbeam-deque"
|
|
368
|
-
version = "0.8.6"
|
|
369
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
370
|
-
checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
|
|
371
|
-
dependencies = [
|
|
372
|
-
"crossbeam-epoch",
|
|
373
|
-
"crossbeam-utils",
|
|
374
|
-
]
|
|
375
|
-
|
|
376
|
-
[[package]]
|
|
377
|
-
name = "crossbeam-epoch"
|
|
378
|
-
version = "0.9.18"
|
|
379
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
380
|
-
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
|
|
381
|
-
dependencies = [
|
|
382
|
-
"crossbeam-utils",
|
|
383
|
-
]
|
|
384
|
-
|
|
385
|
-
[[package]]
|
|
386
|
-
name = "crossbeam-queue"
|
|
387
|
-
version = "0.3.12"
|
|
388
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
389
|
-
checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115"
|
|
390
|
-
dependencies = [
|
|
391
|
-
"crossbeam-utils",
|
|
392
|
-
]
|
|
393
|
-
|
|
394
|
-
[[package]]
|
|
395
|
-
name = "crossbeam-utils"
|
|
396
|
-
version = "0.8.21"
|
|
397
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
398
|
-
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
|
|
399
|
-
|
|
400
349
|
[[package]]
|
|
401
350
|
name = "equivalent"
|
|
402
351
|
version = "1.0.2"
|
|
@@ -425,12 +374,6 @@ version = "0.1.9"
|
|
|
425
374
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
426
375
|
checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
|
|
427
376
|
|
|
428
|
-
[[package]]
|
|
429
|
-
name = "fixedbitset"
|
|
430
|
-
version = "0.5.7"
|
|
431
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
432
|
-
checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99"
|
|
433
|
-
|
|
434
377
|
[[package]]
|
|
435
378
|
name = "foldhash"
|
|
436
379
|
version = "0.1.5"
|
|
@@ -604,91 +547,6 @@ version = "2.8.0"
|
|
|
604
547
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
605
548
|
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
|
|
606
549
|
|
|
607
|
-
[[package]]
|
|
608
|
-
name = "num"
|
|
609
|
-
version = "0.4.3"
|
|
610
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
611
|
-
checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
|
|
612
|
-
dependencies = [
|
|
613
|
-
"num-bigint",
|
|
614
|
-
"num-complex",
|
|
615
|
-
"num-integer",
|
|
616
|
-
"num-iter",
|
|
617
|
-
"num-rational",
|
|
618
|
-
"num-traits",
|
|
619
|
-
]
|
|
620
|
-
|
|
621
|
-
[[package]]
|
|
622
|
-
name = "num-bigint"
|
|
623
|
-
version = "0.4.6"
|
|
624
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
625
|
-
checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
|
|
626
|
-
dependencies = [
|
|
627
|
-
"num-integer",
|
|
628
|
-
"num-traits",
|
|
629
|
-
]
|
|
630
|
-
|
|
631
|
-
[[package]]
|
|
632
|
-
name = "num-complex"
|
|
633
|
-
version = "0.4.6"
|
|
634
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
635
|
-
checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
|
|
636
|
-
dependencies = [
|
|
637
|
-
"num-traits",
|
|
638
|
-
]
|
|
639
|
-
|
|
640
|
-
[[package]]
|
|
641
|
-
name = "num-derive"
|
|
642
|
-
version = "0.4.2"
|
|
643
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
644
|
-
checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
|
|
645
|
-
dependencies = [
|
|
646
|
-
"proc-macro2",
|
|
647
|
-
"quote",
|
|
648
|
-
"syn",
|
|
649
|
-
]
|
|
650
|
-
|
|
651
|
-
[[package]]
|
|
652
|
-
name = "num-format"
|
|
653
|
-
version = "0.4.4"
|
|
654
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
655
|
-
checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3"
|
|
656
|
-
dependencies = [
|
|
657
|
-
"arrayvec",
|
|
658
|
-
"itoa",
|
|
659
|
-
]
|
|
660
|
-
|
|
661
|
-
[[package]]
|
|
662
|
-
name = "num-integer"
|
|
663
|
-
version = "0.1.46"
|
|
664
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
665
|
-
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
|
|
666
|
-
dependencies = [
|
|
667
|
-
"num-traits",
|
|
668
|
-
]
|
|
669
|
-
|
|
670
|
-
[[package]]
|
|
671
|
-
name = "num-iter"
|
|
672
|
-
version = "0.1.45"
|
|
673
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
674
|
-
checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
|
|
675
|
-
dependencies = [
|
|
676
|
-
"autocfg",
|
|
677
|
-
"num-integer",
|
|
678
|
-
"num-traits",
|
|
679
|
-
]
|
|
680
|
-
|
|
681
|
-
[[package]]
|
|
682
|
-
name = "num-rational"
|
|
683
|
-
version = "0.4.2"
|
|
684
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
685
|
-
checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
|
|
686
|
-
dependencies = [
|
|
687
|
-
"num-bigint",
|
|
688
|
-
"num-integer",
|
|
689
|
-
"num-traits",
|
|
690
|
-
]
|
|
691
|
-
|
|
692
550
|
[[package]]
|
|
693
551
|
name = "num-traits"
|
|
694
552
|
version = "0.2.19"
|
|
@@ -710,18 +568,6 @@ version = "1.70.2"
|
|
|
710
568
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
711
569
|
checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
|
|
712
570
|
|
|
713
|
-
[[package]]
|
|
714
|
-
name = "petgraph"
|
|
715
|
-
version = "0.8.3"
|
|
716
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
717
|
-
checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455"
|
|
718
|
-
dependencies = [
|
|
719
|
-
"fixedbitset",
|
|
720
|
-
"hashbrown 0.15.5",
|
|
721
|
-
"indexmap",
|
|
722
|
-
"serde",
|
|
723
|
-
]
|
|
724
|
-
|
|
725
571
|
[[package]]
|
|
726
572
|
name = "pin-project-lite"
|
|
727
573
|
version = "0.2.17"
|
|
@@ -791,37 +637,6 @@ version = "0.8.10"
|
|
|
791
637
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
792
638
|
checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
|
|
793
639
|
|
|
794
|
-
[[package]]
|
|
795
|
-
name = "rust-code-analysis-code-split"
|
|
796
|
-
version = "0.0.26-cs.0"
|
|
797
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
798
|
-
checksum = "a3b9324bd5110e3d03aa2a301ff9615a802ca8169dd01507e2adf1232e57d341"
|
|
799
|
-
dependencies = [
|
|
800
|
-
"aho-corasick",
|
|
801
|
-
"crossbeam",
|
|
802
|
-
"globset",
|
|
803
|
-
"num",
|
|
804
|
-
"num-derive",
|
|
805
|
-
"num-format",
|
|
806
|
-
"num-traits",
|
|
807
|
-
"petgraph",
|
|
808
|
-
"regex",
|
|
809
|
-
"serde",
|
|
810
|
-
"termcolor",
|
|
811
|
-
"tree-sitter",
|
|
812
|
-
"tree-sitter-ccomment-code-split",
|
|
813
|
-
"tree-sitter-java",
|
|
814
|
-
"tree-sitter-javascript",
|
|
815
|
-
"tree-sitter-kotlin-ng",
|
|
816
|
-
"tree-sitter-mozcpp-code-split",
|
|
817
|
-
"tree-sitter-mozjs-code-split",
|
|
818
|
-
"tree-sitter-preproc-code-split",
|
|
819
|
-
"tree-sitter-python",
|
|
820
|
-
"tree-sitter-rust",
|
|
821
|
-
"tree-sitter-typescript",
|
|
822
|
-
"walkdir",
|
|
823
|
-
]
|
|
824
|
-
|
|
825
640
|
[[package]]
|
|
826
641
|
name = "rustix"
|
|
827
642
|
version = "1.1.4"
|
|
@@ -961,15 +776,6 @@ dependencies = [
|
|
|
961
776
|
"windows-sys",
|
|
962
777
|
]
|
|
963
778
|
|
|
964
|
-
[[package]]
|
|
965
|
-
name = "termcolor"
|
|
966
|
-
version = "1.4.1"
|
|
967
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
968
|
-
checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
|
|
969
|
-
dependencies = [
|
|
970
|
-
"winapi-util",
|
|
971
|
-
]
|
|
972
|
-
|
|
973
779
|
[[package]]
|
|
974
780
|
name = "thiserror"
|
|
975
781
|
version = "1.0.69"
|
|
@@ -1043,36 +849,6 @@ dependencies = [
|
|
|
1043
849
|
"tree-sitter-language",
|
|
1044
850
|
]
|
|
1045
851
|
|
|
1046
|
-
[[package]]
|
|
1047
|
-
name = "tree-sitter-ccomment-code-split"
|
|
1048
|
-
version = "0.20.3"
|
|
1049
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1050
|
-
checksum = "83235cd394d3a46206566faf6524b46f2aeb8e8d910ee0d9a1ea5804365c7ca4"
|
|
1051
|
-
dependencies = [
|
|
1052
|
-
"cc",
|
|
1053
|
-
"tree-sitter-language",
|
|
1054
|
-
]
|
|
1055
|
-
|
|
1056
|
-
[[package]]
|
|
1057
|
-
name = "tree-sitter-cpp"
|
|
1058
|
-
version = "0.23.4"
|
|
1059
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1060
|
-
checksum = "df2196ea9d47b4ab4a31b9297eaa5a5d19a0b121dceb9f118f6790ad0ab94743"
|
|
1061
|
-
dependencies = [
|
|
1062
|
-
"cc",
|
|
1063
|
-
"tree-sitter-language",
|
|
1064
|
-
]
|
|
1065
|
-
|
|
1066
|
-
[[package]]
|
|
1067
|
-
name = "tree-sitter-java"
|
|
1068
|
-
version = "0.23.5"
|
|
1069
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1070
|
-
checksum = "0aa6cbcdc8c679b214e616fd3300da67da0e492e066df01bcf5a5921a71e90d6"
|
|
1071
|
-
dependencies = [
|
|
1072
|
-
"cc",
|
|
1073
|
-
"tree-sitter-language",
|
|
1074
|
-
]
|
|
1075
|
-
|
|
1076
852
|
[[package]]
|
|
1077
853
|
name = "tree-sitter-javascript"
|
|
1078
854
|
version = "0.25.0"
|
|
@@ -1083,54 +859,12 @@ dependencies = [
|
|
|
1083
859
|
"tree-sitter-language",
|
|
1084
860
|
]
|
|
1085
861
|
|
|
1086
|
-
[[package]]
|
|
1087
|
-
name = "tree-sitter-kotlin-ng"
|
|
1088
|
-
version = "1.1.0"
|
|
1089
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1090
|
-
checksum = "e800ebbda938acfbf224f4d2c34947a31994b1295ee6e819b65226c7b51b4450"
|
|
1091
|
-
dependencies = [
|
|
1092
|
-
"cc",
|
|
1093
|
-
"tree-sitter-language",
|
|
1094
|
-
]
|
|
1095
|
-
|
|
1096
862
|
[[package]]
|
|
1097
863
|
name = "tree-sitter-language"
|
|
1098
864
|
version = "0.1.7"
|
|
1099
865
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1100
866
|
checksum = "009994f150cc0cd50ff54917d5bc8bffe8cad10ca10d81c34da2ec421ae61782"
|
|
1101
867
|
|
|
1102
|
-
[[package]]
|
|
1103
|
-
name = "tree-sitter-mozcpp-code-split"
|
|
1104
|
-
version = "0.20.4"
|
|
1105
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1106
|
-
checksum = "c5bfceb330f0fd6327cb2d9647e46c92c193628962dca4186a3c74ee15e01ddf"
|
|
1107
|
-
dependencies = [
|
|
1108
|
-
"cc",
|
|
1109
|
-
"tree-sitter-cpp",
|
|
1110
|
-
"tree-sitter-language",
|
|
1111
|
-
]
|
|
1112
|
-
|
|
1113
|
-
[[package]]
|
|
1114
|
-
name = "tree-sitter-mozjs-code-split"
|
|
1115
|
-
version = "0.20.3"
|
|
1116
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1117
|
-
checksum = "24f0056e599a6f8a9459a6bf5d83c39c143cb4bec97f3a88ad7dad4b3865d40d"
|
|
1118
|
-
dependencies = [
|
|
1119
|
-
"cc",
|
|
1120
|
-
"tree-sitter-javascript",
|
|
1121
|
-
"tree-sitter-language",
|
|
1122
|
-
]
|
|
1123
|
-
|
|
1124
|
-
[[package]]
|
|
1125
|
-
name = "tree-sitter-preproc-code-split"
|
|
1126
|
-
version = "0.20.3"
|
|
1127
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1128
|
-
checksum = "7e374ddbdf97fd8910995c6b2e4d50bd15d9741aa078b9e70bc195c723767b9e"
|
|
1129
|
-
dependencies = [
|
|
1130
|
-
"cc",
|
|
1131
|
-
"tree-sitter-language",
|
|
1132
|
-
]
|
|
1133
|
-
|
|
1134
868
|
[[package]]
|
|
1135
869
|
name = "tree-sitter-python"
|
|
1136
870
|
version = "0.25.0"
|
|
@@ -1143,9 +877,9 @@ dependencies = [
|
|
|
1143
877
|
|
|
1144
878
|
[[package]]
|
|
1145
879
|
name = "tree-sitter-rust"
|
|
1146
|
-
version = "0.
|
|
880
|
+
version = "0.24.2"
|
|
1147
881
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1148
|
-
checksum = "
|
|
882
|
+
checksum = "439e577dbe07423ec2582ac62c7531120dbfccfa6e5f92406f93dd271a120e45"
|
|
1149
883
|
dependencies = [
|
|
1150
884
|
"cc",
|
|
1151
885
|
"tree-sitter-language",
|
|
@@ -3,7 +3,7 @@ members = ["crates/*"]
|
|
|
3
3
|
resolver = "3"
|
|
4
4
|
|
|
5
5
|
[workspace.package]
|
|
6
|
-
version = "
|
|
6
|
+
version = "2.0.0"
|
|
7
7
|
edition = "2024"
|
|
8
8
|
rust-version = "1.88"
|
|
9
9
|
license = "Apache-2.0"
|
|
@@ -12,14 +12,14 @@ keywords = ["dependency-graph", "coupling", "refactoring", "code-quality", "stat
|
|
|
12
12
|
categories = ["development-tools", "command-line-utilities"]
|
|
13
13
|
|
|
14
14
|
[workspace.dependencies]
|
|
15
|
-
code-ranker-graph = { path = "crates/code-ranker-graph", version = "
|
|
16
|
-
code-ranker-plugin-api = { path = "crates/code-ranker-plugin-api", version = "
|
|
17
|
-
code-ranker-
|
|
18
|
-
code-ranker-plugin-rust = { path = "crates/code-ranker-plugin-rust", version = "
|
|
19
|
-
code-ranker-plugin-python = { path = "crates/code-ranker-plugin-python", version = "
|
|
20
|
-
code-ranker-plugin-javascript = { path = "crates/code-ranker-plugin-javascript", version = "
|
|
21
|
-
code-ranker-plugin-typescript = { path = "crates/code-ranker-plugin-typescript", version = "
|
|
22
|
-
code-ranker-viewer = { path = "crates/code-ranker-viewer", version = "
|
|
15
|
+
code-ranker-graph = { path = "crates/code-ranker-graph", version = "2.0.0" }
|
|
16
|
+
code-ranker-plugin-api = { path = "crates/code-ranker-plugin-api", version = "2.0.0" }
|
|
17
|
+
code-ranker-ecmascript-core = { path = "crates/code-ranker-ecmascript-core", version = "2.0.0" }
|
|
18
|
+
code-ranker-plugin-rust = { path = "crates/code-ranker-plugin-rust", version = "2.0.0" }
|
|
19
|
+
code-ranker-plugin-python = { path = "crates/code-ranker-plugin-python", version = "2.0.0" }
|
|
20
|
+
code-ranker-plugin-javascript = { path = "crates/code-ranker-plugin-javascript", version = "2.0.0" }
|
|
21
|
+
code-ranker-plugin-typescript = { path = "crates/code-ranker-plugin-typescript", version = "2.0.0" }
|
|
22
|
+
code-ranker-viewer = { path = "crates/code-ranker-viewer", version = "2.0.0" }
|
|
23
23
|
|
|
24
24
|
anyhow = "1.0"
|
|
25
25
|
globset = "0.4"
|
|
@@ -35,11 +35,14 @@ tempfile = "3"
|
|
|
35
35
|
thiserror = "1"
|
|
36
36
|
which = "8"
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
# One version of each tree-sitter grammar across the whole workspace (plugins +
|
|
39
|
+
# metric engines), each at its latest. Enforced by the `grammar_single_version`
|
|
40
|
+
# test. Engines resolve node kinds by name, so they are grammar-version-robust.
|
|
39
41
|
tree-sitter = "0.26.9"
|
|
40
42
|
tree-sitter-python = "0.25.0"
|
|
41
43
|
tree-sitter-javascript = "0.25.0"
|
|
42
44
|
tree-sitter-typescript = "0.23.2"
|
|
45
|
+
tree-sitter-rust = "0.24.2"
|
|
43
46
|
walkdir = "2"
|
|
44
47
|
|
|
45
48
|
# The profile that 'dist' will build with
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-ranker
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.0
|
|
4
4
|
Classifier: Development Status :: 3 - Alpha
|
|
5
5
|
Classifier: Environment :: Console
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -161,6 +161,7 @@ Built-in plugins: `rust` (cargo + syn), `python`, `javascript` (also handles Typ
|
|
|
161
161
|
- [AI agent skill](docs/ai-skill.md) — a short playbook to attach to an AI agent's context (the ADP/HK fix loop)
|
|
162
162
|
- [PRD](docs/PRD.md) — product requirements
|
|
163
163
|
- [DESIGN](docs/DESIGN.md) — technical design
|
|
164
|
+
- [Why structure matters](docs/why-structure-matters.md) — the empirical evidence (studies, books, statistics) behind the signals code-ranker measures
|
|
164
165
|
- [Principles corpus](principles/) — Rust / Python / TypeScript principle catalogues used by the prompt generator
|
|
165
166
|
|
|
166
167
|
## Try it now
|
|
@@ -138,6 +138,7 @@ Built-in plugins: `rust` (cargo + syn), `python`, `javascript` (also handles Typ
|
|
|
138
138
|
- [AI agent skill](docs/ai-skill.md) — a short playbook to attach to an AI agent's context (the ADP/HK fix loop)
|
|
139
139
|
- [PRD](docs/PRD.md) — product requirements
|
|
140
140
|
- [DESIGN](docs/DESIGN.md) — technical design
|
|
141
|
+
- [Why structure matters](docs/why-structure-matters.md) — the empirical evidence (studies, books, statistics) behind the signals code-ranker measures
|
|
141
142
|
- [Principles corpus](principles/) — Rust / Python / TypeScript principle catalogues used by the prompt generator
|
|
142
143
|
|
|
143
144
|
## Try it now
|
|
@@ -15,7 +15,6 @@ path = "src/main.rs"
|
|
|
15
15
|
|
|
16
16
|
[dependencies]
|
|
17
17
|
code-ranker-graph = { workspace = true }
|
|
18
|
-
code-ranker-complexity = { workspace = true }
|
|
19
18
|
code-ranker-plugin-api = { workspace = true }
|
|
20
19
|
code-ranker-plugin-rust = { workspace = true }
|
|
21
20
|
code-ranker-plugin-python = { workspace = true }
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
use code_ranker_plugin_api::log;
|
|
2
2
|
use std::time::Instant;
|
|
3
3
|
|
|
4
|
-
/// Re-export the shared timed sub-command helper so call sites in this crate
|
|
5
|
-
/// (git / cargo / rustc shell-outs) log through the one common formatter.
|
|
6
|
-
pub use code_ranker_plugin_api::log::timed;
|
|
7
|
-
|
|
8
4
|
pub fn info(msg: &str) {
|
|
9
5
|
log::line(msg);
|
|
10
6
|
}
|
|
@@ -77,9 +77,11 @@ pub(crate) fn analyze_directory(
|
|
|
77
77
|
detail: format!("{} nodes from {} files", graph.nodes.len(), file_count),
|
|
78
78
|
});
|
|
79
79
|
|
|
80
|
-
// 2.
|
|
80
|
+
// 2. Complexity pass: the active plugin annotates its own file nodes with
|
|
81
|
+
// per-language metrics (behind the `LanguagePlugin` trait — no central
|
|
82
|
+
// by-extension dispatcher). Reads files by their absolute id.
|
|
81
83
|
let t = logger::Timer::start("complexity");
|
|
82
|
-
let annotated =
|
|
84
|
+
let annotated = plugin::annotate_metrics(&plugin_name, &mut graph);
|
|
83
85
|
timings.push(code_ranker_graph::snapshot::StageTime {
|
|
84
86
|
stage: "complexity".into(),
|
|
85
87
|
ms: t.finish_quiet(),
|
|
@@ -87,9 +89,13 @@ pub(crate) fn analyze_directory(
|
|
|
87
89
|
});
|
|
88
90
|
|
|
89
91
|
// 3. Canonicalize structure, then relativize ids against detected roots.
|
|
92
|
+
// The active plugin contributes its own language/toolchain roots (e.g. the
|
|
93
|
+
// Rust plugin's cargo/registry/rustup/rust-src); the orchestrator only owns
|
|
94
|
+
// the generic `target` root — no language leaks into this central step.
|
|
90
95
|
let t = logger::Timer::start("projection");
|
|
91
96
|
code_ranker_graph::finalize::finalize_graph(&mut graph);
|
|
92
|
-
let mut roots =
|
|
97
|
+
let mut roots: BTreeMap<String, String> =
|
|
98
|
+
plugin::roots(&plugin_name, &target).into_iter().collect();
|
|
93
99
|
roots.insert("target".to_string(), target.display().to_string());
|
|
94
100
|
code_ranker_graph::relativize::relativize_graph(&mut graph, &target, &roots);
|
|
95
101
|
|
|
@@ -110,7 +116,7 @@ pub(crate) fn analyze_directory(
|
|
|
110
116
|
let edge_count = graph.edges.len();
|
|
111
117
|
let node_count = graph.nodes.len();
|
|
112
118
|
let thresholds = plugin::thresholds(&plugin_name);
|
|
113
|
-
let level = assemble_level(level_spec, graph, cycles, stats, thresholds);
|
|
119
|
+
let level = assemble_level(level_spec, graph, cycles, stats, thresholds, &plugin_name);
|
|
114
120
|
prune_unused_roots(&level, &mut roots);
|
|
115
121
|
timings.push(code_ranker_graph::snapshot::StageTime {
|
|
116
122
|
stage: "projection".into(),
|
|
@@ -192,6 +198,7 @@ fn assemble_level(
|
|
|
192
198
|
cycles: Vec<code_ranker_graph::level_graph::CycleGroup>,
|
|
193
199
|
stats: BTreeMap<String, code_ranker_plugin_api::attrs::AttrValue>,
|
|
194
200
|
thresholds: BTreeMap<String, code_ranker_plugin_api::level::Thresholds>,
|
|
201
|
+
plugin_name: &str,
|
|
195
202
|
) -> LevelGraph {
|
|
196
203
|
use std::collections::BTreeSet;
|
|
197
204
|
|
|
@@ -208,7 +215,10 @@ fn assemble_level(
|
|
|
208
215
|
|
|
209
216
|
// Master node-attribute dictionary = structural (plugin) + computed.
|
|
210
217
|
let mut node_attributes = spec.node_attributes;
|
|
211
|
-
|
|
218
|
+
// Language-neutral default metric specs, refined by the active plugin (e.g.
|
|
219
|
+
// Rust adds the `#[cfg(test)]` nuance to the LOC descriptions).
|
|
220
|
+
let (default_metric_specs, metric_groups) = code_ranker_graph::metric_specs();
|
|
221
|
+
let metric_specs = plugin::metric_specs(plugin_name, default_metric_specs);
|
|
212
222
|
let (coupling_specs, coupling_groups) = code_ranker_graph::coupling_specs();
|
|
213
223
|
node_attributes.extend(metric_specs);
|
|
214
224
|
node_attributes.extend(coupling_specs);
|
|
@@ -418,47 +428,6 @@ fn resolve_plugin(arg: Option<&str>, cfg: Option<&str>, workspace: &Path) -> Res
|
|
|
418
428
|
plugin::detect(workspace, &PluginInput::default())
|
|
419
429
|
}
|
|
420
430
|
|
|
421
|
-
fn detect_roots() -> BTreeMap<String, String> {
|
|
422
|
-
let mut roots = BTreeMap::new();
|
|
423
|
-
let home = std::env::var("HOME").unwrap_or_default();
|
|
424
|
-
|
|
425
|
-
let cargo = std::env::var("CARGO_HOME").unwrap_or_else(|_| format!("{home}/.cargo"));
|
|
426
|
-
let rustup = std::env::var("RUSTUP_HOME").unwrap_or_else(|_| format!("{home}/.rustup"));
|
|
427
|
-
|
|
428
|
-
if !cargo.is_empty() {
|
|
429
|
-
// Auto-detect crates.io registry hash dir (e.g. index.crates.io-<hash>).
|
|
430
|
-
let registry_src = format!("{cargo}/registry/src");
|
|
431
|
-
if let Ok(entries) = std::fs::read_dir(®istry_src) {
|
|
432
|
-
for entry in entries.flatten() {
|
|
433
|
-
let name = entry.file_name().to_string_lossy().to_string();
|
|
434
|
-
if name.starts_with("index.crates.io") {
|
|
435
|
-
roots.insert("registry".to_string(), format!("{registry_src}/{name}"));
|
|
436
|
-
break;
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
roots.insert("cargo".to_string(), cargo);
|
|
441
|
-
}
|
|
442
|
-
if !rustup.is_empty() {
|
|
443
|
-
// Add rust-src root: sysroot/lib/rustlib/src/rust/library
|
|
444
|
-
// This shortens stdlib paths from {rustup}/toolchains/.../library/... to {rust-src}/...
|
|
445
|
-
if let Ok(out) = logger::timed("rustc --print sysroot", || {
|
|
446
|
-
std::process::Command::new("rustc")
|
|
447
|
-
.args(["--print", "sysroot"])
|
|
448
|
-
.output()
|
|
449
|
-
}) && out.status.success()
|
|
450
|
-
{
|
|
451
|
-
let sysroot = String::from_utf8_lossy(&out.stdout).trim().to_string();
|
|
452
|
-
let rust_lib = format!("{sysroot}/lib/rustlib/src/rust/library");
|
|
453
|
-
if std::path::Path::new(&rust_lib).exists() {
|
|
454
|
-
roots.insert("rust-src".to_string(), rust_lib);
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
roots.insert("rustup".to_string(), rustup);
|
|
458
|
-
}
|
|
459
|
-
roots
|
|
460
|
-
}
|
|
461
|
-
|
|
462
431
|
/// Remove named roots whose `{name}` token does not appear in any node id or
|
|
463
432
|
/// path after relativization. `target` is always kept (it names the analyzed
|
|
464
433
|
/// project even when every node sits directly under it). This keeps the
|