code-gauge 4.7.0 → 4.8.0
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.
- package/README.md +1 -1
- package/THIRD-PARTY-NOTICES.txt +595 -29
- package/dist/cli.cjs +1 -1
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/cliConfig.cjs +1 -1
- package/dist/cliConfig.cjs.map +1 -1
- package/dist/cliConfig.js +1 -1
- package/dist/cliConfig.js.map +1 -1
- package/dist/crossFileDuplication.cjs +1 -1
- package/dist/crossFileDuplication.cjs.map +1 -1
- package/dist/crossFileDuplication.js +1 -1
- package/dist/crossFileDuplication.js.map +1 -1
- package/dist/crossFileNearMiss.cjs +1 -1
- package/dist/crossFileNearMiss.cjs.map +1 -1
- package/dist/crossFileNearMiss.js +1 -1
- package/dist/crossFileNearMiss.js.map +1 -1
- package/dist/diffCommand.cjs +3 -3
- package/dist/diffCommand.cjs.map +1 -1
- package/dist/diffCommand.js +3 -3
- package/dist/diffCommand.js.map +1 -1
- package/dist/duplicateSelection.cjs +1 -1
- package/dist/duplicateSelection.cjs.map +1 -1
- package/dist/duplicateSelection.js +1 -1
- package/dist/duplicateSelection.js.map +1 -1
- package/dist/duplication.cjs +1 -1
- package/dist/duplication.cjs.map +1 -1
- package/dist/duplication.js +1 -1
- package/dist/duplication.js.map +1 -1
- package/dist/git.cjs +1 -1
- package/dist/git.cjs.map +1 -1
- package/dist/git.js +1 -1
- package/dist/git.js.map +1 -1
- package/dist/languages.cjs +1 -1
- package/dist/languages.cjs.map +1 -1
- package/dist/languages.js +1 -1
- package/dist/languages.js.map +1 -1
- package/dist/metrics.cjs +1 -1
- package/dist/metrics.cjs.map +1 -1
- package/dist/metrics.d.ts +8 -3
- package/dist/metrics.js +1 -1
- package/dist/metrics.js.map +1 -1
- package/dist/nativeMetrics.cjs +3 -3
- package/dist/nativeMetrics.cjs.map +1 -1
- package/dist/nativeMetrics.d.ts +19 -3
- package/dist/nativeMetrics.js +3 -3
- package/dist/nativeMetrics.js.map +1 -1
- package/dist/regressionGate.cjs +1 -1
- package/dist/regressionGate.cjs.map +1 -1
- package/dist/regressionGate.js +1 -1
- package/dist/regressionGate.js.map +1 -1
- package/dist/scan.cjs +1 -1
- package/dist/scan.cjs.map +1 -1
- package/dist/scan.d.ts +2 -2
- package/dist/scan.js +1 -1
- package/dist/scan.js.map +1 -1
- package/dist/wasmBinding.cjs +1 -1
- package/dist/wasmBinding.cjs.map +1 -1
- package/dist/wasmBinding.js +1 -1
- package/dist/wasmBinding.js.map +1 -1
- package/native/Cargo.lock +48 -15
- package/native/Cargo.toml +11 -10
- package/native/code-gauge.wasm +0 -0
- package/native/src/complexity.rs +152 -255
- package/native/src/dep_degree.rs +79 -65
- package/native/src/duplication.rs +114 -97
- package/native/src/functions.rs +181 -206
- package/native/src/languages.rs +48 -7
- package/native/src/lib.rs +10 -5
- package/native/src/measure.rs +125 -150
- package/native/src/napi.rs +61 -2
- package/native/src/ncss.rs +108 -104
- package/native/src/near_miss.rs +7 -7
- package/native/src/tree_index.rs +119 -0
- package/native/src/util.rs +15 -55
- package/native/src/worker_pool.rs +53 -0
- package/package.json +10 -10
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
use std::num::NonZeroUsize;
|
|
2
|
+
use std::sync::{mpsc, Arc, Mutex, OnceLock};
|
|
3
|
+
use std::thread;
|
|
4
|
+
|
|
5
|
+
type Job = Box<dyn FnOnce() + Send>;
|
|
6
|
+
|
|
7
|
+
/// The metric passes recurse per tree level (TreeIndex refuses trees deeper than 5,000), so workers
|
|
8
|
+
/// get the stack size of a typical main thread instead of Rust's 2 MiB default.
|
|
9
|
+
const STACK_SIZE: usize = 8 * 1024 * 1024;
|
|
10
|
+
|
|
11
|
+
/// Runs the job on a process-wide pool with one thread per available core. A dedicated pool rather
|
|
12
|
+
/// than libuv's (4 threads by default) lets measurements use every core without the embedding
|
|
13
|
+
/// process having to raise UV_THREADPOOL_SIZE before its first I/O. The pool keeps however many
|
|
14
|
+
/// workers the OS allows (a thread or PID limit may refuse some); with none, the job runs on the
|
|
15
|
+
/// calling thread instead.
|
|
16
|
+
pub fn spawn(job: impl FnOnce() + Send + 'static) {
|
|
17
|
+
static SENDER: OnceLock<Option<mpsc::Sender<Job>>> = OnceLock::new();
|
|
18
|
+
let sender = SENDER.get_or_init(|| {
|
|
19
|
+
let (sender, receiver) = mpsc::channel::<Job>();
|
|
20
|
+
let receiver = Arc::new(Mutex::new(receiver));
|
|
21
|
+
let mut started = 0;
|
|
22
|
+
for _ in 0..thread::available_parallelism().map_or(1, NonZeroUsize::get) {
|
|
23
|
+
let receiver = Arc::clone(&receiver);
|
|
24
|
+
let spawned = thread::Builder::new()
|
|
25
|
+
.name("code-gauge-worker".to_string())
|
|
26
|
+
.stack_size(STACK_SIZE)
|
|
27
|
+
.spawn(move || loop {
|
|
28
|
+
let job = receiver
|
|
29
|
+
.lock()
|
|
30
|
+
.expect("jobs run after the lock is released, so it is never poisoned")
|
|
31
|
+
.recv();
|
|
32
|
+
match job {
|
|
33
|
+
Ok(job) => job(),
|
|
34
|
+
Err(_) => return,
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
if spawned.is_err() {
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
started += 1;
|
|
41
|
+
}
|
|
42
|
+
(started > 0).then_some(sender)
|
|
43
|
+
});
|
|
44
|
+
let job: Job = Box::new(job);
|
|
45
|
+
match sender {
|
|
46
|
+
Some(sender) => {
|
|
47
|
+
if let Err(mpsc::SendError(job)) = sender.send(job) {
|
|
48
|
+
job();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
None => job(),
|
|
52
|
+
}
|
|
53
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "code-gauge",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.8.0",
|
|
4
4
|
"description": "Measure code metrics with tree-sitter.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -73,8 +73,8 @@
|
|
|
73
73
|
"@types/node": "25.9.4",
|
|
74
74
|
"@willbooster/oxfmt-config": "1.2.2",
|
|
75
75
|
"@willbooster/oxlint-config": "1.4.8",
|
|
76
|
-
"@willbooster/wb": "22.
|
|
77
|
-
"build-ts": "21.0.
|
|
76
|
+
"@willbooster/wb": "22.8.0",
|
|
77
|
+
"build-ts": "21.0.19",
|
|
78
78
|
"conventional-changelog-conventionalcommits": "9.3.1",
|
|
79
79
|
"lefthook": "2.1.14",
|
|
80
80
|
"oxfmt": "0.68.0",
|
|
@@ -94,12 +94,12 @@
|
|
|
94
94
|
"registry": "https://registry.npmjs.org/"
|
|
95
95
|
},
|
|
96
96
|
"optionalDependencies": {
|
|
97
|
-
"code-gauge-linux-x64-gnu": "4.
|
|
98
|
-
"code-gauge-linux-arm64-gnu": "4.
|
|
99
|
-
"code-gauge-linux-x64-musl": "4.
|
|
100
|
-
"code-gauge-linux-arm64-musl": "4.
|
|
101
|
-
"code-gauge-darwin-x64": "4.
|
|
102
|
-
"code-gauge-darwin-arm64": "4.
|
|
103
|
-
"code-gauge-win32-x64-msvc": "4.
|
|
97
|
+
"code-gauge-linux-x64-gnu": "4.8.0",
|
|
98
|
+
"code-gauge-linux-arm64-gnu": "4.8.0",
|
|
99
|
+
"code-gauge-linux-x64-musl": "4.8.0",
|
|
100
|
+
"code-gauge-linux-arm64-musl": "4.8.0",
|
|
101
|
+
"code-gauge-darwin-x64": "4.8.0",
|
|
102
|
+
"code-gauge-darwin-arm64": "4.8.0",
|
|
103
|
+
"code-gauge-win32-x64-msvc": "4.8.0"
|
|
104
104
|
}
|
|
105
105
|
}
|