
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
cyclomatic-complexity
Advanced tools
Tool for calculating cyclomatic complexity of a JavaScript and TypeScript code.
Detect cyclomatic complexity of your JavaScript and TypeScript code. You can use it as a CLI tool or as a programmatic library.
Cyclomatic complexity is a software metric used to indicate the complexity of a program. It measures the number of linearly independent paths through a program's source code, providing insights into code maintainability and testability.
In simple words, it's a measure of how many different paths a piece of code can take. The higher the cyclomatic complexity, the more difficult it is to understand and maintain the code.
Run with npx and pass a glob pattern to your source files:
npx cyclomatic-complexity './**/*'
Example output:
src/utils/useLocalStorage.ts: 15 (OK)
[line: 13] handler: 5 (OK)
[line: 7] anonymous: useEffect: 4 (OK)
[line: 24] anonymous: setValueWrap: 4 (OK)
[line: 5] useLocalStorage: 1 (OK)
[line: 20] anonymous: handler: 1 (OK)
[line: 0] global: 0 (OK)
src/vite-env.d.ts: 0 (OK)
[line: 0] global: 0 (OK)
Or install it globally and run it:
# npm
npm install -g cyclomatic-complexity
# yarn
yarn global add cyclomatic-complexity
# pnpm
pnpm install -g cyclomatic-complexity
To check cyclomatic complexity of typescript files in ./src folder and set warnings to 10 and errors to 20. Output as JSON:
npx cyclomatic-complexity './src/**/*.ts' --threshold-warnings 10 --threshold-errors 20 --json
Example output:
[
{
"file": "src/vite-env.d.ts",
"functionComplexities": [
{
"name": "global",
"complexity": 0,
"line": 0
}
],
"complexityLevel": "ok",
"complexitySum": 0
},
{
"file": "src/utils/useLocalStorage.ts",
"functionComplexities": [
{
"name": "handler",
"complexity": 5,
"line": 13
},
{
"name": "anonymous: useEffect",
"complexity": 4,
"line": 7
},
{
"name": "anonymous: setValueWrap",
"complexity": 4,
"line": 24
},
{
"name": "useLocalStorage",
"complexity": 1,
"line": 5
},
{
"name": "anonymous: handler",
"complexity": 1,
"line": 20
},
{
"name": "global",
"complexity": 0,
"line": 0
}
],
"complexityLevel": "ok",
"complexitySum": 15
}
]
Usage: code-complexity [options] <pattern>
Calculates code complexity of given files
Arguments:
pattern Glob pattern for files to check
Options:
-tw, --threshold-warnings <number> Threshold for warnings (default: "10")
-te, --threshold-errors <number> Threshold for errors (default: "20")
-j, --json Output as JSON (default: false)
-e, --exclude <pattern> Exclude pattern (default: "**/node_modules/**")
-h, --help display help for command
MIT
FAQs
Tool for calculating cyclomatic complexity of a JavaScript and TypeScript code.
The npm package cyclomatic-complexity receives a total of 753 weekly downloads. As such, cyclomatic-complexity popularity was classified as not popular.
We found that cyclomatic-complexity demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.