@herbertgao/pi-extensions 2026.8.6 → 2026.8.7
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 +5 -5
- package/node_modules/@herbertgao/pi-cc-extensions/README.en.md +1 -1
- package/node_modules/@herbertgao/pi-cc-extensions/README.md +1 -1
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/config/config.ts +19 -7
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/config/panel.ts +30 -9
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/feature/compact-thinking.ts +272 -22
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/compact-mode.ts +94 -77
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/message-display.ts +1 -1
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/hover.ts +14 -0
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/interaction.ts +55 -17
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/mouse/layout.ts +41 -2
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/diff-renderer.ts +75 -6
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/diff/types.ts +7 -3
- package/node_modules/@herbertgao/pi-cc-extensions/extensions/renderer/tool/grouping.ts +64 -1
- package/node_modules/@herbertgao/pi-cc-extensions/package.json +3 -3
- package/node_modules/@herbertgao/pi-subagents/CHANGELOG.md +6 -0
- package/node_modules/@herbertgao/pi-subagents/README.md +30 -22
- package/node_modules/@herbertgao/pi-subagents/examples/agent-tool-description.md +5 -5
- package/node_modules/@herbertgao/pi-subagents/package.json +7 -7
- package/node_modules/@herbertgao/pi-subagents/src/agent-file-toggle.ts +7 -1
- package/node_modules/@herbertgao/pi-subagents/src/agent-manager.ts +48 -19
- package/node_modules/@herbertgao/pi-subagents/src/agent-runner.ts +17 -13
- package/node_modules/@herbertgao/pi-subagents/src/custom-agents.ts +26 -2
- package/node_modules/@herbertgao/pi-subagents/src/index.ts +219 -40
- package/node_modules/@herbertgao/pi-subagents/src/invocation-config.ts +101 -3
- package/node_modules/@herbertgao/pi-subagents/src/nested-tools.ts +18 -4
- package/node_modules/@herbertgao/pi-subagents/src/settings.ts +99 -0
- package/node_modules/@herbertgao/pi-subagents/src/types.ts +22 -3
- package/node_modules/@herbertgao/pi-subagents/src/ui/agent-widget.ts +51 -3
- package/node_modules/@herbertgao/pi-subagents/src/ui/conversation-viewer.ts +20 -2
- package/node_modules/@herbertgao/pi-subagents/src/ui/fleet-list.ts +21 -6
- package/node_modules/@herbertgao/pi-subagents/src/usage.ts +129 -1
- package/node_modules/@herbertgao/pi-subagents/src/worktree.ts +20 -0
- package/node_modules/@juicesharp/rpiv-ask-user-question/README.md +1 -0
- package/node_modules/@juicesharp/rpiv-ask-user-question/ask-user-question.ts +26 -10
- package/node_modules/@juicesharp/rpiv-ask-user-question/config.ts +25 -0
- package/node_modules/@juicesharp/rpiv-ask-user-question/docs/configuration.md +13 -4
- package/node_modules/@juicesharp/rpiv-ask-user-question/docs/hosts.md +2 -1
- package/node_modules/@juicesharp/rpiv-ask-user-question/docs/localization.md +3 -1
- package/node_modules/@juicesharp/rpiv-ask-user-question/locales/en.json +2 -2
- package/node_modules/@juicesharp/rpiv-ask-user-question/locales/zh.json +2 -2
- package/node_modules/@juicesharp/rpiv-ask-user-question/package.json +3 -2
- package/node_modules/@juicesharp/rpiv-ask-user-question/state/build-questionnaire.ts +10 -0
- package/node_modules/@juicesharp/rpiv-ask-user-question/state/key-router.ts +3 -1
- package/node_modules/@juicesharp/rpiv-ask-user-question/state/questionnaire-session.ts +30 -7
- package/node_modules/@juicesharp/rpiv-ask-user-question/state/state.ts +14 -6
- package/node_modules/@juicesharp/rpiv-ask-user-question/view/dialog-builder.ts +30 -4
- package/node_modules/@juicesharp/rpiv-ask-user-question/view/tab-content-strategy.ts +26 -5
- package/node_modules/@narumitw/pi-btw/README.md +120 -111
- package/node_modules/@narumitw/pi-btw/dist/index.ts +2898 -0
- package/node_modules/@narumitw/pi-btw/dist/index.ts.map +7 -0
- package/node_modules/@narumitw/pi-btw/package.json +10 -6
- package/node_modules/@narumitw/pi-btw/src/btw.ts +36 -40
- package/node_modules/@narumitw/pi-btw/src/fullscreen-ui.ts +55 -10
- package/node_modules/@narumitw/pi-btw/src/main-tree-picker.ts +390 -0
- package/node_modules/@narumitw/pi-btw/src/menu.ts +45 -2
- package/node_modules/@narumitw/pi-btw/src/transcript-pager.ts +136 -45
- package/node_modules/pi-lens/CHANGELOG.md +909 -0
- package/node_modules/pi-lens/README.md +11 -3
- package/node_modules/pi-lens/config/ruff/core.toml +42 -0
- package/node_modules/pi-lens/dist/clients/actionable-warnings.js +130 -27
- package/node_modules/pi-lens/dist/clients/advisory-provenance.js +126 -13
- package/node_modules/pi-lens/dist/clients/agent-nudge.js +67 -11
- package/node_modules/pi-lens/dist/clients/ast-grep-client.js +9 -3
- package/node_modules/pi-lens/dist/clients/atomic-write.js +9 -3
- package/node_modules/pi-lens/dist/clients/bash-file-access.js +285 -8
- package/node_modules/pi-lens/dist/clients/biome-client.js +61 -30
- package/node_modules/pi-lens/dist/clients/blocker-freshness.js +428 -0
- package/node_modules/pi-lens/dist/clients/blocker-past-eof.js +119 -0
- package/node_modules/pi-lens/dist/clients/bootstrap.js +12 -1
- package/node_modules/pi-lens/dist/clients/bounded-pid-file-lock.js +12 -3
- package/node_modules/pi-lens/dist/clients/bounded-telemetry.js +192 -0
- package/node_modules/pi-lens/dist/clients/cascade-budget.js +196 -0
- package/node_modules/pi-lens/dist/clients/cascade-format.js +20 -1
- package/node_modules/pi-lens/dist/clients/cascade-types.js +9 -1
- package/node_modules/pi-lens/dist/clients/child-unref.js +54 -6
- package/node_modules/pi-lens/dist/clients/code-quality-warnings.js +76 -24
- package/node_modules/pi-lens/dist/clients/dead-code-client.js +123 -31
- package/node_modules/pi-lens/dist/clients/deadline-utils.js +8 -1
- package/node_modules/pi-lens/dist/clients/debug-handles.js +5 -0
- package/node_modules/pi-lens/dist/clients/degradation-ledger.js +62 -13
- package/node_modules/pi-lens/dist/clients/dependency-checker.js +25 -3
- package/node_modules/pi-lens/dist/clients/diagnostic-dispositions.js +147 -33
- package/node_modules/pi-lens/dist/clients/diagnostic-line-freshness.js +298 -0
- package/node_modules/pi-lens/dist/clients/dispatch/dispatcher.js +52 -2
- package/node_modules/pi-lens/dist/clients/dispatch/integration.js +256 -88
- package/node_modules/pi-lens/dist/clients/dispatch/lazy.js +7 -4
- package/node_modules/pi-lens/dist/clients/dispatch/plan.js +5 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/ast-grep-napi.js +234 -18
- package/node_modules/pi-lens/dist/clients/dispatch/runners/biome-check.js +187 -19
- package/node_modules/pi-lens/dist/clients/dispatch/runners/cpp-check.js +6 -3
- package/node_modules/pi-lens/dist/clients/dispatch/runners/credo.js +11 -9
- package/node_modules/pi-lens/dist/clients/dispatch/runners/cue-vet.js +398 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/elixir-check.js +11 -3
- package/node_modules/pi-lens/dist/clients/dispatch/runners/eslint.js +12 -7
- package/node_modules/pi-lens/dist/clients/dispatch/runners/go-vet.js +18 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/helm-render.js +895 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/index.js +4 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/javac.js +16 -3
- package/node_modules/pi-lens/dist/clients/dispatch/runners/lsp.js +60 -53
- package/node_modules/pi-lens/dist/clients/dispatch/runners/markdownlint.js +16 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/mypy.js +23 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/psscriptanalyzer.js +331 -55
- package/node_modules/pi-lens/dist/clients/dispatch/runners/pyright.js +38 -5
- package/node_modules/pi-lens/dist/clients/dispatch/runners/rust-clippy.js +97 -19
- package/node_modules/pi-lens/dist/clients/dispatch/runners/spellcheck.js +14 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/sqlfluff.js +20 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/stylelint.js +22 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/swiftlint.js +10 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/taplo.js +18 -6
- package/node_modules/pi-lens/dist/clients/dispatch/runners/trivy-config.js +73 -12
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/availability-policy.js +275 -13
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/candidate-probe.js +21 -6
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/lazy-installer.js +260 -27
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/runner-helpers.js +734 -64
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/spawn-outcome.js +86 -11
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/tool-failure.js +72 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/utils/toolchain-availability.js +9 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/vale.js +9 -0
- package/node_modules/pi-lens/dist/clients/dispatch/runners/yamllint.js +18 -1
- package/node_modules/pi-lens/dist/clients/dispatch/runners/zig-check.js +4 -2
- package/node_modules/pi-lens/dist/clients/event-loop-monitor.js +28 -5
- package/node_modules/pi-lens/dist/clients/extension-log.js +22 -1
- package/node_modules/pi-lens/dist/clients/file-kinds.js +8 -2
- package/node_modules/pi-lens/dist/clients/finding-delivery-gate.js +294 -0
- package/node_modules/pi-lens/dist/clients/finding-identity.js +88 -0
- package/node_modules/pi-lens/dist/clients/formatters-lazy.js +3 -2
- package/node_modules/pi-lens/dist/clients/formatters.js +500 -115
- package/node_modules/pi-lens/dist/clients/generation-guard.js +216 -0
- package/node_modules/pi-lens/dist/clients/git-guard.js +31 -0
- package/node_modules/pi-lens/dist/clients/gitleaks-client.js +181 -8
- package/node_modules/pi-lens/dist/clients/govulncheck-client.js +109 -9
- package/node_modules/pi-lens/dist/clients/grammar-source.js +333 -10
- package/node_modules/pi-lens/dist/clients/host-ports.js +8 -0
- package/node_modules/pi-lens/dist/clients/installer/index.js +1114 -100
- package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh-session.js +58 -0
- package/node_modules/pi-lens/dist/clients/installer/managed-tool-refresh.js +715 -0
- package/node_modules/pi-lens/dist/clients/instance-reaper.js +643 -97
- package/node_modules/pi-lens/dist/clients/instance-registry.js +87 -17
- package/node_modules/pi-lens/dist/clients/jscpd-client.js +82 -6
- package/node_modules/pi-lens/dist/clients/knip-client.js +310 -10
- package/node_modules/pi-lens/dist/clients/language-policy.js +8 -2
- package/node_modules/pi-lens/dist/clients/language-profile.js +2 -0
- package/node_modules/pi-lens/dist/clients/latency-logger.js +440 -11
- package/node_modules/pi-lens/dist/clients/lazy-import.js +21 -0
- package/node_modules/pi-lens/dist/clients/ledger-bounds.js +21 -0
- package/node_modules/pi-lens/dist/clients/lens-flag-registry.js +8 -0
- package/node_modules/pi-lens/dist/clients/lsp/cascade-tier.js +102 -7
- package/node_modules/pi-lens/dist/clients/lsp/client.js +1516 -159
- package/node_modules/pi-lens/dist/clients/lsp/diagnostic-binding.js +83 -1
- package/node_modules/pi-lens/dist/clients/lsp/document-drift.js +389 -0
- package/node_modules/pi-lens/dist/clients/lsp/index.js +2274 -147
- package/node_modules/pi-lens/dist/clients/lsp/inferred-project.js +215 -0
- package/node_modules/pi-lens/dist/clients/lsp/jvm-runtime.js +146 -14
- package/node_modules/pi-lens/dist/clients/lsp/language.js +48 -4
- package/node_modules/pi-lens/dist/clients/lsp/server.js +277 -16
- package/node_modules/pi-lens/dist/clients/lsp/spawn-history.js +22 -0
- package/node_modules/pi-lens/dist/clients/lsp/sync-kind.js +43 -0
- package/node_modules/pi-lens/dist/clients/lsp/tsserver-sync.js +79 -3
- package/node_modules/pi-lens/dist/clients/lsp/wait-policy/strategies.js +43 -0
- package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-cache.js +422 -28
- package/node_modules/pi-lens/dist/clients/lsp/workspace-diagnostics-session.js +30 -0
- package/node_modules/pi-lens/dist/clients/lsp/workspace-sweep-hold.js +175 -0
- package/node_modules/pi-lens/dist/clients/lsp-lazy.js +3 -2
- package/node_modules/pi-lens/dist/clients/mcp/session.js +10 -2
- package/node_modules/pi-lens/dist/clients/module-report.js +8 -0
- package/node_modules/pi-lens/dist/clients/opengrep-client.js +15 -1
- package/node_modules/pi-lens/dist/clients/package-manager.js +170 -14
- package/node_modules/pi-lens/dist/clients/path-attribution-telemetry.js +27 -0
- package/node_modules/pi-lens/dist/clients/path-utils.js +160 -0
- package/node_modules/pi-lens/dist/clients/pipeline.js +154 -33
- package/node_modules/pi-lens/dist/clients/post-autofix-notice.js +37 -0
- package/node_modules/pi-lens/dist/clients/project-diagnostics/cache.js +17 -3
- package/node_modules/pi-lens/dist/clients/project-diagnostics/extractors.js +89 -22
- package/node_modules/pi-lens/dist/clients/project-diagnostics/fresh-fetch.js +84 -14
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/gitleaks.js +15 -3
- package/node_modules/pi-lens/dist/clients/project-diagnostics/runner-adapters/trivy.js +50 -2
- package/node_modules/pi-lens/dist/clients/project-diagnostics/scanner.js +5 -0
- package/node_modules/pi-lens/dist/clients/project-lens-config.js +3 -0
- package/node_modules/pi-lens/dist/clients/project-snapshot.js +299 -0
- package/node_modules/pi-lens/dist/clients/quiet-window-config.js +47 -0
- package/node_modules/pi-lens/dist/clients/quiet-window.js +11 -25
- package/node_modules/pi-lens/dist/clients/read-guard-logger.js +1 -1
- package/node_modules/pi-lens/dist/clients/read-guard.js +184 -10
- package/node_modules/pi-lens/dist/clients/resource-sampler.js +49 -17
- package/node_modules/pi-lens/dist/clients/reverse-deps.js +50 -11
- package/node_modules/pi-lens/dist/clients/review-graph/query.js +52 -4
- package/node_modules/pi-lens/dist/clients/runtime-agent-end.js +96 -7
- package/node_modules/pi-lens/dist/clients/runtime-context.js +8 -1
- package/node_modules/pi-lens/dist/clients/runtime-coordinator.js +308 -45
- package/node_modules/pi-lens/dist/clients/runtime-session.js +332 -9
- package/node_modules/pi-lens/dist/clients/runtime-tool-call.js +217 -22
- package/node_modules/pi-lens/dist/clients/runtime-tool-result.js +212 -79
- package/node_modules/pi-lens/dist/clients/runtime-turn.js +575 -67
- package/node_modules/pi-lens/dist/clients/safe-spawn.js +220 -7
- package/node_modules/pi-lens/dist/clients/scratch-tree-policy.js +161 -0
- package/node_modules/pi-lens/dist/clients/search-read-registration.js +34 -6
- package/node_modules/pi-lens/dist/clients/security-scan-client.js +157 -24
- package/node_modules/pi-lens/dist/clients/sg-runner.js +116 -22
- package/node_modules/pi-lens/dist/clients/single-flight.js +158 -0
- package/node_modules/pi-lens/dist/clients/stale-marker.js +17 -0
- package/node_modules/pi-lens/dist/clients/startup-timing.js +19 -1
- package/node_modules/pi-lens/dist/clients/test-runner-client.js +151 -16
- package/node_modules/pi-lens/dist/clients/tool-event.js +56 -5
- package/node_modules/pi-lens/dist/clients/tool-policy.js +125 -20
- package/node_modules/pi-lens/dist/clients/tree-sitter-cache.js +75 -1
- package/node_modules/pi-lens/dist/clients/tree-sitter-client.js +769 -64
- package/node_modules/pi-lens/dist/clients/tree-sitter-shared.js +11 -0
- package/node_modules/pi-lens/dist/clients/tree-sitter-symbol-extractor.js +90 -0
- package/node_modules/pi-lens/dist/clients/trivy-client.js +19 -1
- package/node_modules/pi-lens/dist/clients/widget-state.js +336 -36
- package/node_modules/pi-lens/dist/clients/zizmor-config.js +214 -14
- package/node_modules/pi-lens/dist/index.js +67738 -55739
- package/node_modules/pi-lens/dist/tools/lens-diagnostics.js +466 -54
- package/node_modules/pi-lens/dist/tools/lsp-diagnostics.js +132 -43
- package/node_modules/pi-lens/dist/tools/lsp-navigation.js +46 -7
- package/node_modules/pi-lens/docs/agent-guide.md +6 -1
- package/node_modules/pi-lens/docs/ast-grep_rules_catalog.md +515 -506
- package/node_modules/pi-lens/docs/dispositions.md +21 -0
- package/node_modules/pi-lens/docs/features.md +19 -5
- package/node_modules/pi-lens/docs/globalconfig.md +3 -0
- package/node_modules/pi-lens/docs/language-coverage.md +71 -5
- package/node_modules/pi-lens/docs/mcp.md +2 -2
- package/node_modules/pi-lens/docs/servercapabilities.md +4 -1
- package/node_modules/pi-lens/docs/settings.md +19 -1
- package/node_modules/pi-lens/docs/usage.md +1 -0
- package/node_modules/pi-lens/package.json +10 -6
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/__snapshots__/no-reflect-get-js-snapshot.yml +23 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/__snapshots__/no-reflect-get-snapshot.yml +23 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/__snapshots__/ts-void-zero-snapshot.yml +23 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-bare-object-param-test.yml +16 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-chained-type-assertions-test.yml +15 -1
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-compile-call-test.yml +29 -1
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-dupe-class-members-test.yml +33 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-inner-html-js-test.yml +7 -1
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-inner-html-test.yml +7 -1
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-known-value-widening-test.yml +9 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-non-null-assertion-test.yml +216 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-reflect-apply-js-test.yml +2 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-reflect-apply-test.yml +2 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-reflect-get-js-test.yml +2 -1
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-reflect-get-test.yml +2 -1
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-return-value-in-generator-test.yml +12 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-runtime-typeof-test.yml +33 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-server-bind-wildcard-test.yml +9 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-shape-in-symbol-names-test.yml +13 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-sql-in-code-js-test.yml +5 -1
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-sql-in-code-test.yml +5 -1
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-unknown-parameters-test.yml +12 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-unknown-returns-test.yml +16 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-unsafe-dictionary-any-test.yml +10 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/no-unsafe-dictionary-unknown-test.yml +8 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/redundant-unsafe-function-test.yml +35 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/require-safety-comment-for-as-unknown-as-test.yml +177 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rule-tests/ts-void-zero-test.yml +1 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-await-expression-member-js.yml +13 -2
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-await-expression-member.yml +13 -2
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-bare-host-path-in-win32-branch.yml +2 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-bare-object-param.yml +60 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-chained-type-assertions.yml +57 -12
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-compile-call.yml +63 -5
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-dupe-class-members.yml +52 -8
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-inner-html-js.yml +27 -2
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-inner-html.yml +27 -2
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-known-value-widening.yml +71 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-non-null-assertion.yml +316 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-raw-json-store-write.yml +7 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-reflect-apply-js.yml +22 -2
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-reflect-apply.yml +23 -2
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-reflect-get-js.yml +33 -5
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-reflect-get.yml +34 -8
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-return-value-in-generator.yml +22 -5
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-runtime-typeof.yml +121 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-server-bind-wildcard.yml +23 -7
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-shape-in-symbol-names.yml +68 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-sql-in-code-js.yml +41 -2
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-sql-in-code.yml +41 -2
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-unknown-laundering.yml +6 -1
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-unknown-parameters.yml +67 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-unknown-returns.yml +106 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-unsafe-dictionary-any.yml +50 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-unsafe-dictionary-unknown.yml +56 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/no-win32-isabsolute-for-qualification.yml +2 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/redundant-unsafe-function.yml +32 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/require-safety-comment-for-as-unknown-as.yml +184 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/rules/ts-void-zero.yml +5 -0
- package/node_modules/pi-lens/rules/ast-grep-rules/self-scan-baseline.json +5 -0
- package/node_modules/pi-lens/scripts/analyze-pi-lens-logs.mjs +53 -1
- package/node_modules/pi-lens/scripts/download-grammars.js +25 -0
- package/node_modules/pi-lens/scripts/grammars.lock.json +9 -0
- package/node_modules/pi-lens/skills/pi-lens-ast-grep/SKILL.md +2 -0
- package/node_modules/pi-lens/skills/pi-lens-write-ast-grep-rule/SKILL.md +80 -3
- package/node_modules/pi-lens/skills/pi-lens-write-ast-grep-rule/reference.md +41 -0
- package/node_modules/pi-lens/vendor/grammars/tree-sitter-cue.wasm +0 -0
- package/node_modules/pi-mcp-adapter/CHANGELOG.md +36 -0
- package/node_modules/pi-mcp-adapter/README.md +47 -5
- package/node_modules/pi-mcp-adapter/cli.js +163 -1
- package/node_modules/pi-mcp-adapter/commands.ts +128 -22
- package/node_modules/pi-mcp-adapter/config.ts +25 -7
- package/node_modules/pi-mcp-adapter/direct-tools.ts +5 -4
- package/node_modules/pi-mcp-adapter/index.ts +219 -32
- package/node_modules/pi-mcp-adapter/init.ts +36 -4
- package/node_modules/pi-mcp-adapter/lifecycle.ts +315 -24
- package/node_modules/pi-mcp-adapter/mcp-auth-flow.ts +39 -6
- package/node_modules/pi-mcp-adapter/mcp-bearer-store.ts +387 -0
- package/node_modules/pi-mcp-adapter/mcp-callback-server.ts +27 -3
- package/node_modules/pi-mcp-adapter/mcp-code.ts +4 -0
- package/node_modules/pi-mcp-adapter/mcp-panel.ts +42 -13
- package/node_modules/pi-mcp-adapter/metadata-cache.ts +32 -21
- package/node_modules/pi-mcp-adapter/package-mcp-loader.ts +168 -0
- package/node_modules/pi-mcp-adapter/package.json +3 -1
- package/node_modules/pi-mcp-adapter/proxy-modes.ts +5 -4
- package/node_modules/pi-mcp-adapter/request-headers-command.ts +31 -37
- package/node_modules/pi-mcp-adapter/search-ranking.ts +92 -22
- package/node_modules/pi-mcp-adapter/server-manager.ts +140 -2
- package/node_modules/pi-mcp-adapter/session-recovery.ts +7 -0
- package/node_modules/pi-mcp-adapter/tool-approval.ts +15 -2
- package/node_modules/pi-mcp-adapter/tool-result-renderer.ts +44 -4
- package/node_modules/pi-mcp-adapter/types.ts +2 -0
- package/node_modules/pi-mcp-adapter/ui-server.ts +18 -16
- package/node_modules/pi-mcp-adapter/utils.ts +70 -0
- package/node_modules/pi-web-access/CHANGELOG.md +23 -0
- package/node_modules/pi-web-access/README.md +27 -9
- package/node_modules/pi-web-access/anysearch.ts +4 -2
- package/node_modules/pi-web-access/brave.ts +16 -4
- package/node_modules/pi-web-access/curator-page.ts +6 -3
- package/node_modules/pi-web-access/curator-server.ts +4 -1
- package/node_modules/pi-web-access/exa.ts +18 -7
- package/node_modules/pi-web-access/extract.ts +28 -3
- package/node_modules/pi-web-access/gemini-search.ts +16 -4
- package/node_modules/pi-web-access/index.ts +41 -57
- package/node_modules/pi-web-access/package.json +1 -1
- package/node_modules/pi-web-access/page-query.ts +4 -2
- package/node_modules/pi-web-access/parallel-mcp.ts +249 -0
- package/node_modules/pi-web-access/parallel.ts +2 -2
- package/node_modules/pi-web-access/query-rewrite.ts +51 -0
- package/node_modules/pi-web-access/serper.ts +211 -0
- package/node_modules/pi-web-access/summary-model-scope.ts +12 -4
- package/node_modules/pi-web-access/summary-review.ts +44 -22
- package/node_modules/pi-web-access/tavily.ts +16 -4
- package/node_modules/pi-web-access/utils.ts +87 -0
- package/node_modules/pi-web-access/valyu.ts +199 -0
- package/package.json +13 -13
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- GENERATED by scripts/gen-rule-catalogs.mjs — do not edit by hand. Run `npm run docs:rule-catalogs` after changing rules. -->
|
|
4
4
|
|
|
5
|
-
pi-lens bundles **
|
|
5
|
+
pi-lens bundles **455 enabled** ast-grep rules (271 pi-lens-authored + 184 vendored from CodeRabbit) across **16 languages**, plus 16 disabled.
|
|
6
6
|
|
|
7
7
|
See [`docs/custom-rules.md`](custom-rules.md) to add your own. Rule sources: `rules/ast-grep-rules/rules/` (pi-lens), `rules/ast-grep-rules/coderabbit/rules/` (vendored).
|
|
8
8
|
|
|
@@ -10,529 +10,538 @@ See [`docs/custom-rules.md`](custom-rules.md) to add your own. Rule sources: `ru
|
|
|
10
10
|
|
|
11
11
|
### C (9)
|
|
12
12
|
|
|
13
|
-
| Rule | Severity | Source | Description |
|
|
14
|
-
|
|
15
|
-
| `dont-call-system-c` | warning | CodeRabbit | Don't call `system`. It's a high-level wrapper that allows for stacking multiple commands. Always prefer a more restrictive API such as cal… |
|
|
16
|
-
| `file-access-before-action-c` | warning | CodeRabbit | A check is done with `access` and then the file is later used. There is no guarantee that the status of the file has not changed since the… |
|
|
17
|
-
| `file-stat-before-action-c` | warning | CodeRabbit | A check is done with `stat` and then the file is used. There is no guarantee that the status of the file has not changed since the call to… |
|
|
18
|
-
| `insecure-hash-c` | warning | CodeRabbit | This hashing algorithm is insecure. If this hash is used in a security context, such as password hashing, it should be converted to a stron… |
|
|
19
|
-
| `libxml2-audit-parser-c` | warning | CodeRabbit | The libxml2 library is used to parse XML. When auditing such code, make sure that either the document being parsed is trusted or that the p… |
|
|
20
|
-
| `null-library-function-c` | warning | CodeRabbit | The `$SOURCE` function returns NULL on error and this line dereferences the return value without checking for NULL. |
|
|
21
|
-
| `sizeof-this-c` | warning | CodeRabbit | Do not use `sizeof(this)` to get the number of bytes of the object in memory. It returns the size of the pointer, not the size of the objec… |
|
|
22
|
-
| `small-key-size-c` | warning | CodeRabbit | $KEY_FUNCTION` is using a key size of only $KEY_BITS bits. This is less than the recommended key size of 2048 bits. |
|
|
23
|
-
| `world-writable-file-c` | warning | CodeRabbit | This call makes a world-writable file which allows any user on a machine to write to the file. This may allow attackers to influence the be… |
|
|
13
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
14
|
+
|---|---|---|---|---|
|
|
15
|
+
| `dont-call-system-c` | warning | no | CodeRabbit | Don't call `system`. It's a high-level wrapper that allows for stacking multiple commands. Always prefer a more restrictive API such as cal… |
|
|
16
|
+
| `file-access-before-action-c` | warning | no | CodeRabbit | A check is done with `access` and then the file is later used. There is no guarantee that the status of the file has not changed since the… |
|
|
17
|
+
| `file-stat-before-action-c` | warning | no | CodeRabbit | A check is done with `stat` and then the file is used. There is no guarantee that the status of the file has not changed since the call to… |
|
|
18
|
+
| `insecure-hash-c` | warning | no | CodeRabbit | This hashing algorithm is insecure. If this hash is used in a security context, such as password hashing, it should be converted to a stron… |
|
|
19
|
+
| `libxml2-audit-parser-c` | warning | no | CodeRabbit | The libxml2 library is used to parse XML. When auditing such code, make sure that either the document being parsed is trusted or that the p… |
|
|
20
|
+
| `null-library-function-c` | warning | no | CodeRabbit | The `$SOURCE` function returns NULL on error and this line dereferences the return value without checking for NULL. |
|
|
21
|
+
| `sizeof-this-c` | warning | no | CodeRabbit | Do not use `sizeof(this)` to get the number of bytes of the object in memory. It returns the size of the pointer, not the size of the objec… |
|
|
22
|
+
| `small-key-size-c` | warning | no | CodeRabbit | $KEY_FUNCTION` is using a key size of only $KEY_BITS bits. This is less than the recommended key size of 2048 bits. |
|
|
23
|
+
| `world-writable-file-c` | warning | no | CodeRabbit | This call makes a world-writable file which allows any user on a machine to write to the file. This may allow attackers to influence the be… |
|
|
24
24
|
|
|
25
25
|
### C++ (15)
|
|
26
26
|
|
|
27
|
-
| Rule | Severity | Source | Description |
|
|
28
|
-
|
|
29
|
-
| `dont-call-system-cpp` | warning | CodeRabbit | Don't call `system`. It's a high-level wrapper that allows for stacking multiple commands. Always prefer a more restrictive API such as cal… |
|
|
30
|
-
| `file-access-before-action-cpp` | warning | CodeRabbit | A check is done with `access` and then the file is later used. There is no guarantee that the status of the file has not changed since the… |
|
|
31
|
-
| `file-stat-before-action-cpp` | warning | CodeRabbit | A check is done with `stat` and then the file is used. There is no guarantee that the status of the file has not changed since the call to… |
|
|
32
|
-
| `fix-format-security-error-cpp` | warning | CodeRabbit | The Format String exploit occurs when the submitted data of an input string is evaluated as a command by the application. |
|
|
33
|
-
| `insecure-hash-cpp` | warning | CodeRabbit | This hashing algorithm is insecure. If this hash is used in a security context, such as password hashing, it should be converted to a stron… |
|
|
34
|
-
| `libxml2-audit-parser-cpp` | warning | CodeRabbit | The libxml2 library is used to parse XML. When auditing such code, make sure that either the document being parsed is trusted or that the p… |
|
|
35
|
-
| `missing-nul-cpp-string-memcpy-copy-cpp` | warning | CodeRabbit | The number of bytes copied from `$STR` does not include the NUL terminator. This can lead to an out-of-bounds read and information disclosu… |
|
|
36
|
-
| `null-library-function-cpp` | warning | CodeRabbit | The `$SOURCE` function returns NULL on error and this line dereferences the return value without checking for NULL. |
|
|
37
|
-
| `return-c-str-cpp` | warning | CodeRabbit | "`$FUNC` returns a pointer to the memory owned by `$STR`. This pointer is invalid after `$STR` goes out of scope, which can trigger a use a… |
|
|
38
|
-
| `sizeof-this-cpp` | warning | CodeRabbit | Do not use `sizeof(this)` to get the number of bytes of the object in memory. It returns the size of the pointer, not the size of the objec… |
|
|
39
|
-
| `small-key-size-cpp` | warning | CodeRabbit | $KEY_FUNCTION` is using a key size of only $KEY_BITS bits. This is less than the recommended key size of 2048 bits. |
|
|
40
|
-
| `std-return-data-cpp` | warning | CodeRabbit | $FUNC` returns a pointer to the memory owned by `$VAR`. This pointer is invalid after `$VAR` goes out of scope, which can trigger a use aft… |
|
|
41
|
-
| `std-vector-invalidation-cpp` | warning | CodeRabbit | Modifying an `std::vector` while iterating over it could cause the container to reallocate, triggering memory corruption. |
|
|
42
|
-
| `string-view-temporary-string-cpp` | warning | CodeRabbit | This `std::string_view` is constructed from a temporary `std::string`. The `std::string` value is immeadiately destroyed after assignment a… |
|
|
43
|
-
| `world-writable-file-cpp` | warning | CodeRabbit | This call makes a world-writable file which allows any user on a machine to write to the file. This may allow attackers to influence the be… |
|
|
27
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
28
|
+
|---|---|---|---|---|
|
|
29
|
+
| `dont-call-system-cpp` | warning | no | CodeRabbit | Don't call `system`. It's a high-level wrapper that allows for stacking multiple commands. Always prefer a more restrictive API such as cal… |
|
|
30
|
+
| `file-access-before-action-cpp` | warning | no | CodeRabbit | A check is done with `access` and then the file is later used. There is no guarantee that the status of the file has not changed since the… |
|
|
31
|
+
| `file-stat-before-action-cpp` | warning | no | CodeRabbit | A check is done with `stat` and then the file is used. There is no guarantee that the status of the file has not changed since the call to… |
|
|
32
|
+
| `fix-format-security-error-cpp` | warning | yes | CodeRabbit | The Format String exploit occurs when the submitted data of an input string is evaluated as a command by the application. |
|
|
33
|
+
| `insecure-hash-cpp` | warning | no | CodeRabbit | This hashing algorithm is insecure. If this hash is used in a security context, such as password hashing, it should be converted to a stron… |
|
|
34
|
+
| `libxml2-audit-parser-cpp` | warning | no | CodeRabbit | The libxml2 library is used to parse XML. When auditing such code, make sure that either the document being parsed is trusted or that the p… |
|
|
35
|
+
| `missing-nul-cpp-string-memcpy-copy-cpp` | warning | no | CodeRabbit | The number of bytes copied from `$STR` does not include the NUL terminator. This can lead to an out-of-bounds read and information disclosu… |
|
|
36
|
+
| `null-library-function-cpp` | warning | no | CodeRabbit | The `$SOURCE` function returns NULL on error and this line dereferences the return value without checking for NULL. |
|
|
37
|
+
| `return-c-str-cpp` | warning | no | CodeRabbit | "`$FUNC` returns a pointer to the memory owned by `$STR`. This pointer is invalid after `$STR` goes out of scope, which can trigger a use a… |
|
|
38
|
+
| `sizeof-this-cpp` | warning | no | CodeRabbit | Do not use `sizeof(this)` to get the number of bytes of the object in memory. It returns the size of the pointer, not the size of the objec… |
|
|
39
|
+
| `small-key-size-cpp` | warning | no | CodeRabbit | $KEY_FUNCTION` is using a key size of only $KEY_BITS bits. This is less than the recommended key size of 2048 bits. |
|
|
40
|
+
| `std-return-data-cpp` | warning | no | CodeRabbit | $FUNC` returns a pointer to the memory owned by `$VAR`. This pointer is invalid after `$VAR` goes out of scope, which can trigger a use aft… |
|
|
41
|
+
| `std-vector-invalidation-cpp` | warning | no | CodeRabbit | Modifying an `std::vector` while iterating over it could cause the container to reallocate, triggering memory corruption. |
|
|
42
|
+
| `string-view-temporary-string-cpp` | warning | no | CodeRabbit | This `std::string_view` is constructed from a temporary `std::string`. The `std::string` value is immeadiately destroyed after assignment a… |
|
|
43
|
+
| `world-writable-file-cpp` | warning | no | CodeRabbit | This call makes a world-writable file which allows any user on a machine to write to the file. This may allow attackers to influence the be… |
|
|
44
44
|
|
|
45
45
|
### C# (11)
|
|
46
46
|
|
|
47
|
-
| Rule | Severity | Source | Description |
|
|
48
|
-
|
|
49
|
-
| `httponly-false-csharp` | warning | CodeRabbit | "Detected a cookie where the `HttpOnly` flag is either missing or disabled. The `HttpOnly` cookie flag instructs the browser to forbid clie… |
|
|
50
|
-
| `insecure-binaryformatter-deserialization-csharp` | warning | CodeRabbit | The BinaryFormatter type is dangerous and is not recommended for data processing. Applications should stop using BinaryFormatter as soon as… |
|
|
51
|
-
| `jwt-decode-without-verify-csharp` | warning | CodeRabbit | Detected the decoding of a JWT token without a verify step. JWT tokens must be verified before use, otherwise the token's integrity is unkn… |
|
|
52
|
-
| `jwt-hardcoded-secret-csharp` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
53
|
-
| `jwt-tokenvalidationparameters-no-expiry-validation-csharp` | warning | CodeRabbit | The TokenValidationParameters.$LIFETIME is set to $FALSE, this means the JWT tokens lifetime is not validated. This can lead to an JWT toke… |
|
|
54
|
-
| `networkcredential-hardcoded-secret-csharp` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
55
|
-
| `npgsqlconnectionstringbuilder-hardcoded-secret-csharp` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
56
|
-
| `oracleconnectionstringbuilder-hardcoded-secret-csharp` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
57
|
-
| `sqlconnectionstringbuilder-hardcoded-secret-csharp` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
58
|
-
| `stacktrace-disclosure-csharp` | warning | CodeRabbit | Stacktrace information is displayed in a non-Development environment. Accidentally disclosing sensitive stack trace information in a produc… |
|
|
59
|
-
| `use-ecb-mode-csharp` | warning | CodeRabbit | "Usage of the insecure ECB mode detected. You should use an authenticated encryption mode instead, which is implemented by the classes AesG… |
|
|
47
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
48
|
+
|---|---|---|---|---|
|
|
49
|
+
| `httponly-false-csharp` | warning | no | CodeRabbit | "Detected a cookie where the `HttpOnly` flag is either missing or disabled. The `HttpOnly` cookie flag instructs the browser to forbid clie… |
|
|
50
|
+
| `insecure-binaryformatter-deserialization-csharp` | warning | no | CodeRabbit | The BinaryFormatter type is dangerous and is not recommended for data processing. Applications should stop using BinaryFormatter as soon as… |
|
|
51
|
+
| `jwt-decode-without-verify-csharp` | warning | no | CodeRabbit | Detected the decoding of a JWT token without a verify step. JWT tokens must be verified before use, otherwise the token's integrity is unkn… |
|
|
52
|
+
| `jwt-hardcoded-secret-csharp` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
53
|
+
| `jwt-tokenvalidationparameters-no-expiry-validation-csharp` | warning | no | CodeRabbit | The TokenValidationParameters.$LIFETIME is set to $FALSE, this means the JWT tokens lifetime is not validated. This can lead to an JWT toke… |
|
|
54
|
+
| `networkcredential-hardcoded-secret-csharp` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
55
|
+
| `npgsqlconnectionstringbuilder-hardcoded-secret-csharp` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
56
|
+
| `oracleconnectionstringbuilder-hardcoded-secret-csharp` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
57
|
+
| `sqlconnectionstringbuilder-hardcoded-secret-csharp` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
58
|
+
| `stacktrace-disclosure-csharp` | warning | no | CodeRabbit | Stacktrace information is displayed in a non-Development environment. Accidentally disclosing sensitive stack trace information in a produc… |
|
|
59
|
+
| `use-ecb-mode-csharp` | warning | no | CodeRabbit | "Usage of the insecure ECB mode detected. You should use an authenticated encryption mode instead, which is implemented by the classes AesG… |
|
|
60
60
|
|
|
61
61
|
### Go (23)
|
|
62
62
|
|
|
63
|
-
| Rule | Severity | Source | Description |
|
|
64
|
-
|
|
65
|
-
| `avoid-bind-to-all-interfaces-go` | warning | CodeRabbit | "Detected a network listener listening on 0.0.0.0 or an empty string. This could unexpectedly expose the server publicly as it binds to all… |
|
|
66
|
-
| `defer-in-loop` | warning | pi-lens | defer is used inside a loop. This defers execution until after the entire function, not each iteration. |
|
|
67
|
-
| `go-defer-func-call-antipattern` | warning | pi-lens | defer with function-call args — arguments are evaluated immediately, not at defer time |
|
|
68
|
-
| `go-test-functions` | warning | pi-lens | Go test function detected — verify it follows the project's test naming convention |
|
|
69
|
-
| `gorilla-cookie-store-hardcoded-session-key-go` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
70
|
-
| `gorilla-csrf-hardcoded-auth-key-go` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
71
|
-
| `gorm-find-without-where` | warning | pi-lens | Unchecked .Find() without WHERE clause may load the entire table |
|
|
72
|
-
| `gorm-n-plus-one` | warning | pi-lens | N+1 query detected. GORM DB call inside loop causes performance issues. Batch queries with WHERE IN instead. |
|
|
73
|
-
| `grpc-client-insecure-connection-go` | warning | CodeRabbit | Found an insecure gRPC connection using 'grpc.WithInsecure()'. This creates a connection without encryption to a gRPC server. A malicious a… |
|
|
74
|
-
| `jwt-go-none-algorithm-go` | warning | CodeRabbit | Detected use of the 'none' algorithm in a JWT token. The 'none' algorithm assumes the integrity of the token has already been verified. Thi… |
|
|
75
|
-
| `loop-var-capture` | warning | pi-lens | Loop variable captured by goroutine; pass it as an argument or shadow it. |
|
|
76
|
-
| `missing-ssl-minversion-go` | warning | CodeRabbit | MinVersion` is missing from this TLS configuration. By default, TLS 1.2 is currently used as the minimum when acting as a client, and TLS 1… |
|
|
77
|
-
| `mutex-unlock-mismatch` | warning | pi-lens | Lock called but no corresponding defer Unlock; ensure Lock/Unlock are paired |
|
|
78
|
-
| `nil-map-assignment` | warning | pi-lens | Uninitialized map declared with 'var' - cannot assign values without calling make() |
|
|
79
|
-
| `openai-empty-secret-go` | warning | CodeRabbit | The application uses an empty credential. This can lead to unauthorized access by either an internal or external malicious actor. It is rec… |
|
|
80
|
-
| `openai-hardcoded-secret-go` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
81
|
-
| `ssl-v3-is-insecure-go` | warning | CodeRabbit | SSLv3 is insecure because it has known vulnerabilities. Starting with go1.14, SSLv3 will be removed. Instead, use 'tls.VersionTLS13'. |
|
|
82
|
-
| `string-concat-in-loop` | warning | pi-lens | String concatenation in loops is inefficient; use strings.Builder instead |
|
|
83
|
-
| `tls-with-insecure-cipher-go` | warning | CodeRabbit | Detected an insecure CipherSuite via the 'tls' module. This suite is considered weak. Use the function 'tls.CipherSuites()' to get a list o… |
|
|
84
|
-
| `unlock-in-loop` | warning | pi-lens | Calling Unlock inside loop without deferring; Lock/Unlock pairing may be broken |
|
|
85
|
-
| `unmarshal-tag-is-dash` | error | pi-lens | Struct field can be decoded with the `-` key because the JSON tag starts with a `-` but is followed by a comma. |
|
|
86
|
-
| `use-of-weak-rsa-key-go` | warning | CodeRabbit | RSA keys should be at least 2048 bits. |
|
|
87
|
-
| `waitgroup-done-scope` | warning | pi-lens | WaitGroup.Done() called outside goroutine; must be in same goroutine that called Add() |
|
|
63
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
64
|
+
|---|---|---|---|---|
|
|
65
|
+
| `avoid-bind-to-all-interfaces-go` | warning | no | CodeRabbit | "Detected a network listener listening on 0.0.0.0 or an empty string. This could unexpectedly expose the server publicly as it binds to all… |
|
|
66
|
+
| `defer-in-loop` | warning | no | pi-lens | defer is used inside a loop. This defers execution until after the entire function, not each iteration. |
|
|
67
|
+
| `go-defer-func-call-antipattern` | warning | yes | pi-lens | defer with function-call args — arguments are evaluated immediately, not at defer time |
|
|
68
|
+
| `go-test-functions` | warning | yes | pi-lens | Go test function detected — verify it follows the project's test naming convention |
|
|
69
|
+
| `gorilla-cookie-store-hardcoded-session-key-go` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
70
|
+
| `gorilla-csrf-hardcoded-auth-key-go` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
71
|
+
| `gorm-find-without-where` | warning | no | pi-lens | Unchecked .Find() without WHERE clause may load the entire table |
|
|
72
|
+
| `gorm-n-plus-one` | warning | no | pi-lens | N+1 query detected. GORM DB call inside loop causes performance issues. Batch queries with WHERE IN instead. |
|
|
73
|
+
| `grpc-client-insecure-connection-go` | warning | no | CodeRabbit | Found an insecure gRPC connection using 'grpc.WithInsecure()'. This creates a connection without encryption to a gRPC server. A malicious a… |
|
|
74
|
+
| `jwt-go-none-algorithm-go` | warning | no | CodeRabbit | Detected use of the 'none' algorithm in a JWT token. The 'none' algorithm assumes the integrity of the token has already been verified. Thi… |
|
|
75
|
+
| `loop-var-capture` | warning | no | pi-lens | Loop variable captured by goroutine; pass it as an argument or shadow it. |
|
|
76
|
+
| `missing-ssl-minversion-go` | warning | no | CodeRabbit | MinVersion` is missing from this TLS configuration. By default, TLS 1.2 is currently used as the minimum when acting as a client, and TLS 1… |
|
|
77
|
+
| `mutex-unlock-mismatch` | warning | no | pi-lens | Lock called but no corresponding defer Unlock; ensure Lock/Unlock are paired |
|
|
78
|
+
| `nil-map-assignment` | warning | no | pi-lens | Uninitialized map declared with 'var' - cannot assign values without calling make() |
|
|
79
|
+
| `openai-empty-secret-go` | warning | no | CodeRabbit | The application uses an empty credential. This can lead to unauthorized access by either an internal or external malicious actor. It is rec… |
|
|
80
|
+
| `openai-hardcoded-secret-go` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
81
|
+
| `ssl-v3-is-insecure-go` | warning | no | CodeRabbit | SSLv3 is insecure because it has known vulnerabilities. Starting with go1.14, SSLv3 will be removed. Instead, use 'tls.VersionTLS13'. |
|
|
82
|
+
| `string-concat-in-loop` | warning | no | pi-lens | String concatenation in loops is inefficient; use strings.Builder instead |
|
|
83
|
+
| `tls-with-insecure-cipher-go` | warning | no | CodeRabbit | Detected an insecure CipherSuite via the 'tls' module. This suite is considered weak. Use the function 'tls.CipherSuites()' to get a list o… |
|
|
84
|
+
| `unlock-in-loop` | warning | no | pi-lens | Calling Unlock inside loop without deferring; Lock/Unlock pairing may be broken |
|
|
85
|
+
| `unmarshal-tag-is-dash` | error | no | pi-lens | Struct field can be decoded with the `-` key because the JSON tag starts with a `-` but is followed by a comma. |
|
|
86
|
+
| `use-of-weak-rsa-key-go` | warning | no | CodeRabbit | RSA keys should be at least 2048 bits. |
|
|
87
|
+
| `waitgroup-done-scope` | warning | no | pi-lens | WaitGroup.Done() called outside goroutine; must be in same goroutine that called Add() |
|
|
88
88
|
|
|
89
89
|
### HTML (1)
|
|
90
90
|
|
|
91
|
-
| Rule | Severity | Source | Description |
|
|
92
|
-
|
|
93
|
-
| `plaintext-http-link-html` | warning | CodeRabbit | "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible." |
|
|
91
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
92
|
+
|---|---|---|---|---|
|
|
93
|
+
| `plaintext-http-link-html` | warning | no | CodeRabbit | "This link points to a plaintext HTTP URL. Prefer an encrypted HTTPS URL if possible." |
|
|
94
94
|
|
|
95
95
|
### Java (36)
|
|
96
96
|
|
|
97
|
-
| Rule | Severity | Source | Description |
|
|
98
|
-
|
|
99
|
-
| `cbc-padding-oracle-java` | warning | CodeRabbit | Using CBC with PKCS5Padding is susceptible to padding oracle attacks. A malicious actor could discern the difference between plaintext with… |
|
|
100
|
-
| `cookie-httponly-false-java` | — | CodeRabbit | A cookie was detected without setting the 'HttpOnly' flag. The 'HttpOnly' flag for cookies instructs the browser to forbid client-side scri… |
|
|
101
|
-
| `cookie-missing-httponly-java` | warning | CodeRabbit | A cookie was detected without setting the 'HttpOnly' flag. The 'HttpOnly' flag for cookies instructs the browser to forbid client-side scri… |
|
|
102
|
-
| `cookie-missing-samesite-java` | warning | CodeRabbit | The application does not appear to verify inbound requests which can lead to a Cross-site request forgery (CSRF) vulnerability. If the appl… |
|
|
103
|
-
| `cookie-missing-secure-flag-java` | warning | CodeRabbit | A cookie was detected without setting the 'secure' flag. The 'secure' flag for cookies prevents the client from transmitting the cookie ove… |
|
|
104
|
-
| `cookie-secure-flag-false-java` | warning | CodeRabbit | A cookie was detected without setting the 'secure' flag. The 'secure' flag for cookies prevents the client from transmitting the cookie ove… |
|
|
105
|
-
| `datanucleus-hardcoded-connection-password-java` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
106
|
-
| `des-is-deprecated-java` | warning | CodeRabbit | DES is considered deprecated. AES is the recommended cipher. Upgrade to use AES. See https://www.nist.gov/news-events/news/2005/06/nist-wit… |
|
|
107
|
-
| `desede-is-deprecated-java` | warning | CodeRabbit | Triple DES (3DES or DESede) is considered deprecated. AES is the recommended cipher. Upgrade to use AES. |
|
|
108
|
-
| `documentbuilderfactory-disallow-doctype-decl-false-java` | warning | CodeRabbit | DOCTYPE declarations are enabled for $DBFACTORY. Without prohibiting external entity declarations, this is vulnerable to XML external entit… |
|
|
109
|
-
| `documentbuilderfactory-external-general-entities-true-java` | warning | CodeRabbit | External entities are allowed for $DBFACTORY. This is vulnerable to XML external entity attacks. Disable this by setting the feature "http:… |
|
|
110
|
-
| `documentbuilderfactory-external-parameter-entities-true-java` | warning | CodeRabbit | External entities are allowed for $DBFACTORY. This is vulnerable to XML external entity attacks. Disable this by setting the feature "http:… |
|
|
111
|
-
| `drivermanager-hardcoded-secret-java` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
112
|
-
| `ecb-cipher-java` | warning | CodeRabbit | Cipher in ECB mode is detected. ECB mode produces the same output for the same input each time which allows an attacker to intercept and re… |
|
|
113
|
-
| `hardcoded-connection-password-java` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
114
|
-
| `hardcoded-secret-in-credentials-java` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
115
|
-
| `java-jwt-hardcoded-secret-java` | warning | CodeRabbit | A hard-coded credential was detected. It is not recommended to store credentials in source-code, as this risks secrets being leaked and use… |
|
|
116
|
-
| `jedis-jedisclientconfig-hardcoded-password-java` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
117
|
-
| `jedis-jedisfactory-hardcoded-password-java` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
118
|
-
| `missing-httponly-java` | warning | CodeRabbit | Detected a cookie where the `HttpOnly` flag is either missing or disabled. The `HttpOnly` cookie flag instructs the browser to forbid clien… |
|
|
119
|
-
| `missing-secure-java` | warning | CodeRabbit | Detected a cookie where the `Secure` flag is either missing or disabled. The `Secure` cookie flag instructs the browser to forbid sending t… |
|
|
120
|
-
| `no-null-cipher-java` | warning | CodeRabbit | NullCipher was detected. This will not encrypt anything; the cipher text will be the same as the plain text. Use a valid, secure cipher: Ci… |
|
|
121
|
-
| `passwordauthentication-hardcoded-password-java` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
122
|
-
| `rsa-no-padding-java` | warning | CodeRabbit | Using RSA without OAEP mode weakens the encryption. |
|
|
123
|
-
| `simple-command-injection-direct-input-java` | warning | CodeRabbit | "Untrusted input might be injected into a command executed by the application, which can lead to a command injection vulnerability. An atta… |
|
|
124
|
-
| `system-setproperty-hardcoded-secret-java` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
125
|
-
| `unencrypted-socket-java` | info | CodeRabbit | "Detected use of a Java socket that is not encrypted. As a result, the traffic could be read by an attacker intercepting the network traffi… |
|
|
126
|
-
| `use-of-aes-ecb-java` | warning | CodeRabbit | Use of AES with ECB mode detected. ECB doesn't provide message confidentiality and is not semantically secure so should not be used. Instea… |
|
|
127
|
-
| `use-of-blowfish-java` | warning | CodeRabbit | 'Use of Blowfish was detected. Blowfish uses a 64-bit block size that makes it vulnerable to birthday attacks, and is therefore considered… |
|
|
128
|
-
| `use-of-default-aes-java` | warning | CodeRabbit | "Use of AES with no settings detected. By default, java.crypto.Cipher uses ECB mode. ECB doesn't provide message confidentiality and is not… |
|
|
129
|
-
| `use-of-md5-digest-utils-java` | warning | CodeRabbit | 'Detected MD5 hash algorithm which is considered insecure. MD5 is not collision resistant and is therefore not suitable as a cryptographic… |
|
|
130
|
-
| `use-of-md5-java` | warning | CodeRabbit | Detected MD5 hash algorithm which is considered insecure. MD5 is not collision resistant and is therefore not suitable as a cryptographic s… |
|
|
131
|
-
| `use-of-rc2-java` | warning | CodeRabbit | Use of RC2 was detected. RC2 is vulnerable to related-key attacks, and is therefore considered non-compliant. Instead, use a strong, secure. |
|
|
132
|
-
| `use-of-rc4-java` | warning | CodeRabbit | 'Use of RC4 was detected. RC4 is vulnerable to several attacks, including stream cipher attacks and bit flipping attacks. Instead, use a st… |
|
|
133
|
-
| `use-of-sha1-java` | warning | CodeRabbit | Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic… |
|
|
134
|
-
| `weak-ssl-context-java` | warning | CodeRabbit | 'An insecure SSL context was detected. TLS versions 1.0, 1.1, and all SSL versions are considered weak encryption and are deprecated. Use S… |
|
|
97
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
98
|
+
|---|---|---|---|---|
|
|
99
|
+
| `cbc-padding-oracle-java` | warning | no | CodeRabbit | Using CBC with PKCS5Padding is susceptible to padding oracle attacks. A malicious actor could discern the difference between plaintext with… |
|
|
100
|
+
| `cookie-httponly-false-java` | — | no | CodeRabbit | A cookie was detected without setting the 'HttpOnly' flag. The 'HttpOnly' flag for cookies instructs the browser to forbid client-side scri… |
|
|
101
|
+
| `cookie-missing-httponly-java` | warning | no | CodeRabbit | A cookie was detected without setting the 'HttpOnly' flag. The 'HttpOnly' flag for cookies instructs the browser to forbid client-side scri… |
|
|
102
|
+
| `cookie-missing-samesite-java` | warning | no | CodeRabbit | The application does not appear to verify inbound requests which can lead to a Cross-site request forgery (CSRF) vulnerability. If the appl… |
|
|
103
|
+
| `cookie-missing-secure-flag-java` | warning | no | CodeRabbit | A cookie was detected without setting the 'secure' flag. The 'secure' flag for cookies prevents the client from transmitting the cookie ove… |
|
|
104
|
+
| `cookie-secure-flag-false-java` | warning | no | CodeRabbit | A cookie was detected without setting the 'secure' flag. The 'secure' flag for cookies prevents the client from transmitting the cookie ove… |
|
|
105
|
+
| `datanucleus-hardcoded-connection-password-java` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
106
|
+
| `des-is-deprecated-java` | warning | no | CodeRabbit | DES is considered deprecated. AES is the recommended cipher. Upgrade to use AES. See https://www.nist.gov/news-events/news/2005/06/nist-wit… |
|
|
107
|
+
| `desede-is-deprecated-java` | warning | no | CodeRabbit | Triple DES (3DES or DESede) is considered deprecated. AES is the recommended cipher. Upgrade to use AES. |
|
|
108
|
+
| `documentbuilderfactory-disallow-doctype-decl-false-java` | warning | no | CodeRabbit | DOCTYPE declarations are enabled for $DBFACTORY. Without prohibiting external entity declarations, this is vulnerable to XML external entit… |
|
|
109
|
+
| `documentbuilderfactory-external-general-entities-true-java` | warning | no | CodeRabbit | External entities are allowed for $DBFACTORY. This is vulnerable to XML external entity attacks. Disable this by setting the feature "http:… |
|
|
110
|
+
| `documentbuilderfactory-external-parameter-entities-true-java` | warning | no | CodeRabbit | External entities are allowed for $DBFACTORY. This is vulnerable to XML external entity attacks. Disable this by setting the feature "http:… |
|
|
111
|
+
| `drivermanager-hardcoded-secret-java` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
112
|
+
| `ecb-cipher-java` | warning | no | CodeRabbit | Cipher in ECB mode is detected. ECB mode produces the same output for the same input each time which allows an attacker to intercept and re… |
|
|
113
|
+
| `hardcoded-connection-password-java` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
114
|
+
| `hardcoded-secret-in-credentials-java` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
115
|
+
| `java-jwt-hardcoded-secret-java` | warning | no | CodeRabbit | A hard-coded credential was detected. It is not recommended to store credentials in source-code, as this risks secrets being leaked and use… |
|
|
116
|
+
| `jedis-jedisclientconfig-hardcoded-password-java` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
117
|
+
| `jedis-jedisfactory-hardcoded-password-java` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
118
|
+
| `missing-httponly-java` | warning | no | CodeRabbit | Detected a cookie where the `HttpOnly` flag is either missing or disabled. The `HttpOnly` cookie flag instructs the browser to forbid clien… |
|
|
119
|
+
| `missing-secure-java` | warning | no | CodeRabbit | Detected a cookie where the `Secure` flag is either missing or disabled. The `Secure` cookie flag instructs the browser to forbid sending t… |
|
|
120
|
+
| `no-null-cipher-java` | warning | no | CodeRabbit | NullCipher was detected. This will not encrypt anything; the cipher text will be the same as the plain text. Use a valid, secure cipher: Ci… |
|
|
121
|
+
| `passwordauthentication-hardcoded-password-java` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
122
|
+
| `rsa-no-padding-java` | warning | no | CodeRabbit | Using RSA without OAEP mode weakens the encryption. |
|
|
123
|
+
| `simple-command-injection-direct-input-java` | warning | no | CodeRabbit | "Untrusted input might be injected into a command executed by the application, which can lead to a command injection vulnerability. An atta… |
|
|
124
|
+
| `system-setproperty-hardcoded-secret-java` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
125
|
+
| `unencrypted-socket-java` | info | no | CodeRabbit | "Detected use of a Java socket that is not encrypted. As a result, the traffic could be read by an attacker intercepting the network traffi… |
|
|
126
|
+
| `use-of-aes-ecb-java` | warning | no | CodeRabbit | Use of AES with ECB mode detected. ECB doesn't provide message confidentiality and is not semantically secure so should not be used. Instea… |
|
|
127
|
+
| `use-of-blowfish-java` | warning | no | CodeRabbit | 'Use of Blowfish was detected. Blowfish uses a 64-bit block size that makes it vulnerable to birthday attacks, and is therefore considered… |
|
|
128
|
+
| `use-of-default-aes-java` | warning | no | CodeRabbit | "Use of AES with no settings detected. By default, java.crypto.Cipher uses ECB mode. ECB doesn't provide message confidentiality and is not… |
|
|
129
|
+
| `use-of-md5-digest-utils-java` | warning | no | CodeRabbit | 'Detected MD5 hash algorithm which is considered insecure. MD5 is not collision resistant and is therefore not suitable as a cryptographic… |
|
|
130
|
+
| `use-of-md5-java` | warning | no | CodeRabbit | Detected MD5 hash algorithm which is considered insecure. MD5 is not collision resistant and is therefore not suitable as a cryptographic s… |
|
|
131
|
+
| `use-of-rc2-java` | warning | no | CodeRabbit | Use of RC2 was detected. RC2 is vulnerable to related-key attacks, and is therefore considered non-compliant. Instead, use a strong, secure. |
|
|
132
|
+
| `use-of-rc4-java` | warning | no | CodeRabbit | 'Use of RC4 was detected. RC4 is vulnerable to several attacks, including stream cipher attacks and bit flipping attacks. Instead, use a st… |
|
|
133
|
+
| `use-of-sha1-java` | warning | no | CodeRabbit | Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic… |
|
|
134
|
+
| `weak-ssl-context-java` | warning | no | CodeRabbit | 'An insecure SSL context was detected. TLS versions 1.0, 1.1, and all SSL versions are considered weak encryption and are deprecated. Use S… |
|
|
135
135
|
|
|
136
136
|
### JavaScript (79)
|
|
137
137
|
|
|
138
|
-
| Rule | Severity | Source | Description |
|
|
139
|
-
|
|
140
|
-
| `array-callback-return-js` | error | pi-lens | return statements must be enforced in callbacks of array methods |
|
|
141
|
-
| `consistent-existence-index-check-js` | warning | pi-lens | Use .includes() instead of .indexOf() for existence checks |
|
|
142
|
-
| `detect-angular-sce-disabled-javascript` | warning | CodeRabbit | $sceProvider is set to false. Disabling Strict Contextual escaping (SCE) in an AngularJS application could provide additional attack surfac… |
|
|
143
|
-
| `enforce-node-protocol-js` | warning | pi-lens | Use node: prefix for Node.js built-in module imports |
|
|
144
|
-
| `express-jwt-hardcoded-secret-javascript` | warning | CodeRabbit | A hard-coded credential was detected. It is not recommended to store credentials in source-code, as this risks secrets being leaked and use… |
|
|
145
|
-
| `express-session-hardcoded-secret-javascript` | warning | CodeRabbit | A hard-coded credential was detected. It is not recommended to store credentials in source-code, as this risks secrets being leaked and use… |
|
|
146
|
-
| `hardcoded-url-js` | warning | pi-lens | Hardcoded URL — use config or environment variable |
|
|
147
|
-
| `incomplete-string-escaping-js` | warning | pi-lens | Regex replace escapes with a backslash before escaping backslashes |
|
|
148
|
-
| `jwt-no-verify-js` | error | pi-lens | Unsafe JWT operation — verification is bypassed |
|
|
149
|
-
| `jwt-simple-noverify-javascript` | warning | CodeRabbit | "Detected the decoding of a JWT token without a verify step. JWT tokens must be verified before use, otherwise the token's integrity is unk… |
|
|
150
|
-
| `nested-ternary-js` | warning | pi-lens | Nested ternary expressions are hard to read — use if/else or switch |
|
|
151
|
-
| `no-absolute-path-import-js` | warning | pi-lens | Absolute import path is not portable — use a relative or aliased path |
|
|
152
|
-
| `no-accumulating-spread-js` | warning | pi-lens | Avoid accumulating array spread in loops/reduce (O(n^2)); use push/flatMap |
|
|
153
|
-
| `no-alert-js` | warning | pi-lens | Avoid alert() — use a proper notification system |
|
|
154
|
-
| `no-array-constructor-js` | warning | pi-lens | Use array literal [] instead of new Array() |
|
|
155
|
-
| `no-array-reverse-mutation-js` | warning | pi-lens | .reverse() mutates the array in place — use toReversed() or slice first |
|
|
156
|
-
| `no-async-promise-executor-js` | error | pi-lens | Promise executor functions should not be async. |
|
|
157
|
-
| `no-await-expression-member-js` | hint | pi-lens |
|
|
158
|
-
| `no-await-in-promise-all-js` | error | pi-lens | Avoid await inside Promise.all — use Promise.all with an array of promises instead |
|
|
159
|
-
| `no-await-in-promise-methods-js` | warning | pi-lens | Do not await inside Promise.all/allSettled — pass the promises directly |
|
|
160
|
-
| `no-blank-target-js` | warning | pi-lens | Links with target="_blank" must include rel to prevent opener leaks |
|
|
161
|
-
| `no-case-declarations-js` | error | pi-lens | Unexpected lexical declaration in case block — wrap in braces to restrict scope |
|
|
162
|
-
| `no-compare-neg-zero-js` | error | pi-lens | Disallow comparing against -0 |
|
|
163
|
-
| `no-cond-assign-js` | error | pi-lens | Expected a conditional expression and instead saw an assignment. |
|
|
164
|
-
| `no-conditional-empty-object-spread-js` | hint | pi-lens | Conditional empty-object spread — use an explicit if/else to omit fields |
|
|
165
|
-
| `no-console-except-error-js` | warning | pi-lens | Avoid console.log/debug/warn in production code — use a logger or console.error inside catch only |
|
|
166
|
-
| `no-constant-condition-js` | error | pi-lens | Unexpected constant condition |
|
|
167
|
-
| `no-discarded-error-js` | error | pi-lens | new Error() result discarded — add 'throw' or assign to a variable |
|
|
168
|
-
| `no-dupe-keys-js` | error | pi-lens | Disallow duplicate keys in object literals |
|
|
169
|
-
| `no-extra-boolean-cast-js` | warning | pi-lens | Unnecessary double negation '!!' — the value is already coerced in this context |
|
|
170
|
-
| `no-flag-argument-js` | warning | pi-lens | Flag argument — a boolean parameter the function branches on. Split into two functions. |
|
|
171
|
-
| `no-global-eval-js` | error | pi-lens | Avoid dynamic code execution (eval/Function/string timers) |
|
|
172
|
-
| `no-implied-eval-js` | error | pi-lens | Avoid implied eval via setTimeout/setInterval with string arguments |
|
|
173
|
-
| `no-inner-html-js` | error | pi-lens | Avoid innerHTML/outerHTML — use textContent or a sanitizer to prevent XSS |
|
|
174
|
-
| `no-insecure-randomness-js` | error | pi-lens | Math.random() used for security-sensitive operations — use crypto.getRandomValues() instead |
|
|
175
|
-
| `no-instanceof-array-js` | warning | pi-lens | Use Array.isArray() instead of instanceof Array — fails across realm boundaries |
|
|
176
|
-
| `no-instanceof-builtins-js` | error | pi-lens | Do not use instanceof with primitive wrapper types — use typeof instead |
|
|
177
|
-
| `no-javascript-url-js` | error | pi-lens | Avoid javascript: URLs — they can execute arbitrary code |
|
|
178
|
-
| `no-nan-comparison-js` | error | pi-lens | x === NaN is always false — use Number.isNaN(x) |
|
|
179
|
-
| `no-negation-in-equality-check-js` | error | pi-lens | Negation before equality check — !a === b evaluates as (!a) === b, not !(a === b) |
|
|
180
|
-
| `no-new-symbol-js` | error | pi-lens | Symbol cannot be called as a constructor. |
|
|
181
|
-
| `no-new-wrappers-js` | error | pi-lens | Do not use 'new' with wrapper objects — use literal primitives instead |
|
|
182
|
-
| `no-open-redirect-js` | error | pi-lens | Potential open redirect vulnerability — validate redirect URLs |
|
|
183
|
-
| `no-prototype-builtins-js` | error | pi-lens | Use Object.hasOwn() or Object.prototype.hasOwnProperty.call() instead of calling methods directly on the object |
|
|
184
|
-
| `no-reflect-apply-js` |
|
|
185
|
-
| `no-reflect-get-js` |
|
|
186
|
-
| `no-single-promise-in-promise-methods-js` | warning | pi-lens | Promise.all/race with a single promise is unnecessary — await it directly |
|
|
187
|
-
| `no-sql-in-code-js` | error | pi-lens | Raw SQL string in code — use query builder or ORM |
|
|
188
|
-
| `no-throw-string-js` | error | pi-lens | Throw Error objects, not strings |
|
|
189
|
-
| `no-typeof-undefined-js` | hint | pi-lens | Use === undefined instead of typeof x === 'undefined' |
|
|
190
|
-
| `no-unimplemented-stub-js` | warning | pi-lens | Unimplemented stub — function was scaffolded but never completed |
|
|
191
|
-
| `no-unnecessary-array-flat-depth-js` | hint | pi-lens | .flat(1) is the default depth — just use .flat() |
|
|
192
|
-
| `no-useless-length-check-js` | warning | pi-lens | Use .some() instead of .filter().length check — short-circuits at first match |
|
|
193
|
-
| `no-useless-promise-resolve-reject-js` | warning | pi-lens | Unnecessary Promise.resolve/reject wrapping — return the value directly |
|
|
194
|
-
| `no-useless-rest-spread-js` | warning | pi-lens | Redundant spread into same container type — remove the extra spread |
|
|
195
|
-
| `node-rsa-weak-key-javascript` | warning | CodeRabbit | Use of RSA-$BITS, which is considered weak. Based on NIST standards, RSA keys should be at least 2048 bits. |
|
|
196
|
-
| `node-sequelize-empty-password-argument-javascript` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
197
|
-
| `node-sequelize-hardcoded-secret-argument-javascript` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
198
|
-
| `prefer-array-find-js` | warning | pi-lens | Use .find() instead of .filter()[0] — stops at first match |
|
|
199
|
-
| `prefer-array-flat-map-js` | warning | pi-lens | Use .flatMap() instead of .map().flat() — single pass, more efficient |
|
|
200
|
-
| `prefer-array-some-js` | warning | pi-lens | Use .some() instead of .filter().length check — short-circuits at first match |
|
|
201
|
-
| `prefer-at-js` | hint | pi-lens | Use .at(-1) instead of [length-1] for last element access |
|
|
202
|
-
| `prefer-date-now-js` | hint | pi-lens | Use Date.now() instead of new Date().getTime() |
|
|
203
|
-
| `prefer-dom-node-append-js` | hint | pi-lens | Use .append() instead of .appendChild() — accepts multiple nodes and strings |
|
|
204
|
-
| `prefer-dom-node-text-content-js` | warning | pi-lens | Use .textContent instead of .innerText — innerText triggers a layout reflow |
|
|
205
|
-
| `prefer-keyboard-event-key-js` | warning | pi-lens | Use event.key instead of event.keyCode/.which — keyCode is deprecated |
|
|
206
|
-
| `prefer-math-min-max-js` | hint | pi-lens | Use Math.min()/Math.max() instead of ternary for min/max |
|
|
207
|
-
| `prefer-number-properties-js` | warning | pi-lens | Use Number.isNaN()/Number.isFinite() instead of global isNaN()/isFinite() |
|
|
208
|
-
| `prefer-prototype-methods-js` | warning | pi-lens | Use Object.hasOwn() instead of .hasOwnProperty() |
|
|
209
|
-
| `prefer-query-selector-js` | hint | pi-lens | Use document.querySelector() instead of getElementById/getElementsByClassName |
|
|
210
|
-
| `prefer-string-slice-js` | hint | pi-lens | Use .slice() instead of .substring()/.substr() |
|
|
211
|
-
| `prefer-string-starts-ends-with-js` | warning | pi-lens | Use .startsWith()/.endsWith() instead of indexOf for prefix/suffix checks |
|
|
212
|
-
| `prefer-string-trim-start-end-js` | hint | pi-lens | Use .trimStart()/.trimEnd() instead of .trimLeft()/.trimRight() |
|
|
213
|
-
| `prefer-structured-clone-js` | warning | pi-lens | Use structuredClone() instead of JSON.parse(JSON.stringify()) for deep cloning |
|
|
214
|
-
| `strict-equality-js` | warning | pi-lens | Use === instead of == |
|
|
215
|
-
| `strict-inequality-js` | warning | pi-lens | Use !== instead of != |
|
|
216
|
-
| `throw-new-error-js` | error | pi-lens | Use new Error() not Error() — explicit construction is clearer |
|
|
217
|
-
| `unchecked-throwing-call-js` | error | pi-lens | $CALL without try/catch — throws on invalid input |
|
|
218
|
-
| `weak-rsa-key-js` | error | pi-lens | Weak RSA key size — use at least 2048 bits |
|
|
138
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
139
|
+
|---|---|---|---|---|
|
|
140
|
+
| `array-callback-return-js` | error | no | pi-lens | return statements must be enforced in callbacks of array methods |
|
|
141
|
+
| `consistent-existence-index-check-js` | warning | no | pi-lens | Use .includes() instead of .indexOf() for existence checks |
|
|
142
|
+
| `detect-angular-sce-disabled-javascript` | warning | no | CodeRabbit | $sceProvider is set to false. Disabling Strict Contextual escaping (SCE) in an AngularJS application could provide additional attack surfac… |
|
|
143
|
+
| `enforce-node-protocol-js` | warning | no | pi-lens | Use node: prefix for Node.js built-in module imports |
|
|
144
|
+
| `express-jwt-hardcoded-secret-javascript` | warning | no | CodeRabbit | A hard-coded credential was detected. It is not recommended to store credentials in source-code, as this risks secrets being leaked and use… |
|
|
145
|
+
| `express-session-hardcoded-secret-javascript` | warning | no | CodeRabbit | A hard-coded credential was detected. It is not recommended to store credentials in source-code, as this risks secrets being leaked and use… |
|
|
146
|
+
| `hardcoded-url-js` | warning | no | pi-lens | Hardcoded URL — use config or environment variable |
|
|
147
|
+
| `incomplete-string-escaping-js` | warning | no | pi-lens | Regex replace escapes with a backslash before escaping backslashes |
|
|
148
|
+
| `jwt-no-verify-js` | error | no | pi-lens | Unsafe JWT operation — verification is bypassed |
|
|
149
|
+
| `jwt-simple-noverify-javascript` | warning | no | CodeRabbit | "Detected the decoding of a JWT token without a verify step. JWT tokens must be verified before use, otherwise the token's integrity is unk… |
|
|
150
|
+
| `nested-ternary-js` | warning | no | pi-lens | Nested ternary expressions are hard to read — use if/else or switch |
|
|
151
|
+
| `no-absolute-path-import-js` | warning | no | pi-lens | Absolute import path is not portable — use a relative or aliased path |
|
|
152
|
+
| `no-accumulating-spread-js` | warning | no | pi-lens | Avoid accumulating array spread in loops/reduce (O(n^2)); use push/flatMap |
|
|
153
|
+
| `no-alert-js` | warning | no | pi-lens | Avoid alert() — use a proper notification system |
|
|
154
|
+
| `no-array-constructor-js` | warning | yes | pi-lens | Use array literal [] instead of new Array() |
|
|
155
|
+
| `no-array-reverse-mutation-js` | warning | no | pi-lens | .reverse() mutates the array in place — use toReversed() or slice first |
|
|
156
|
+
| `no-async-promise-executor-js` | error | no | pi-lens | Promise executor functions should not be async. |
|
|
157
|
+
| `no-await-expression-member-js` | hint | no | pi-lens | (await expr).prop — do not rewrite to await expr.prop (that reads .prop off the unresolved promise). Keep the parens, or destructure first:… |
|
|
158
|
+
| `no-await-in-promise-all-js` | error | no | pi-lens | Avoid await inside Promise.all — use Promise.all with an array of promises instead |
|
|
159
|
+
| `no-await-in-promise-methods-js` | warning | no | pi-lens | Do not await inside Promise.all/allSettled — pass the promises directly |
|
|
160
|
+
| `no-blank-target-js` | warning | no | pi-lens | Links with target="_blank" must include rel to prevent opener leaks |
|
|
161
|
+
| `no-case-declarations-js` | error | no | pi-lens | Unexpected lexical declaration in case block — wrap in braces to restrict scope |
|
|
162
|
+
| `no-compare-neg-zero-js` | error | no | pi-lens | Disallow comparing against -0 |
|
|
163
|
+
| `no-cond-assign-js` | error | no | pi-lens | Expected a conditional expression and instead saw an assignment. |
|
|
164
|
+
| `no-conditional-empty-object-spread-js` | hint | no | pi-lens | Conditional empty-object spread — use an explicit if/else to omit fields |
|
|
165
|
+
| `no-console-except-error-js` | warning | yes | pi-lens | Avoid console.log/debug/warn in production code — use a logger or console.error inside catch only |
|
|
166
|
+
| `no-constant-condition-js` | error | no | pi-lens | Unexpected constant condition |
|
|
167
|
+
| `no-discarded-error-js` | error | no | pi-lens | new Error() result discarded — add 'throw' or assign to a variable |
|
|
168
|
+
| `no-dupe-keys-js` | error | no | pi-lens | Disallow duplicate keys in object literals |
|
|
169
|
+
| `no-extra-boolean-cast-js` | warning | no | pi-lens | Unnecessary double negation '!!' — the value is already coerced in this context |
|
|
170
|
+
| `no-flag-argument-js` | warning | no | pi-lens | Flag argument — a boolean parameter the function branches on. Split into two functions. |
|
|
171
|
+
| `no-global-eval-js` | error | no | pi-lens | Avoid dynamic code execution (eval/Function/string timers) |
|
|
172
|
+
| `no-implied-eval-js` | error | no | pi-lens | Avoid implied eval via setTimeout/setInterval with string arguments |
|
|
173
|
+
| `no-inner-html-js` | error | no | pi-lens | Avoid innerHTML/outerHTML — use textContent or a sanitizer to prevent XSS |
|
|
174
|
+
| `no-insecure-randomness-js` | error | no | pi-lens | Math.random() used for security-sensitive operations — use crypto.getRandomValues() instead |
|
|
175
|
+
| `no-instanceof-array-js` | warning | no | pi-lens | Use Array.isArray() instead of instanceof Array — fails across realm boundaries |
|
|
176
|
+
| `no-instanceof-builtins-js` | error | no | pi-lens | Do not use instanceof with primitive wrapper types — use typeof instead |
|
|
177
|
+
| `no-javascript-url-js` | error | no | pi-lens | Avoid javascript: URLs — they can execute arbitrary code |
|
|
178
|
+
| `no-nan-comparison-js` | error | no | pi-lens | x === NaN is always false — use Number.isNaN(x) |
|
|
179
|
+
| `no-negation-in-equality-check-js` | error | no | pi-lens | Negation before equality check — !a === b evaluates as (!a) === b, not !(a === b) |
|
|
180
|
+
| `no-new-symbol-js` | error | no | pi-lens | Symbol cannot be called as a constructor. |
|
|
181
|
+
| `no-new-wrappers-js` | error | no | pi-lens | Do not use 'new' with wrapper objects — use literal primitives instead |
|
|
182
|
+
| `no-open-redirect-js` | error | no | pi-lens | Potential open redirect vulnerability — validate redirect URLs |
|
|
183
|
+
| `no-prototype-builtins-js` | error | no | pi-lens | Use Object.hasOwn() or Object.prototype.hasOwnProperty.call() instead of calling methods directly on the object |
|
|
184
|
+
| `no-reflect-apply-js` | error | no | pi-lens | Reflect.apply() — use a typed call (fn.apply(...) or fn(...args)) instead |
|
|
185
|
+
| `no-reflect-get-js` | error | yes | pi-lens | Reflect.get(obj, key) — use a typed property access (obj.prop or obj[key]) instead |
|
|
186
|
+
| `no-single-promise-in-promise-methods-js` | warning | no | pi-lens | Promise.all/race with a single promise is unnecessary — await it directly |
|
|
187
|
+
| `no-sql-in-code-js` | error | no | pi-lens | Raw SQL string in code — use query builder or ORM |
|
|
188
|
+
| `no-throw-string-js` | error | no | pi-lens | Throw Error objects, not strings |
|
|
189
|
+
| `no-typeof-undefined-js` | hint | no | pi-lens | Use === undefined instead of typeof x === 'undefined' |
|
|
190
|
+
| `no-unimplemented-stub-js` | warning | no | pi-lens | Unimplemented stub — function was scaffolded but never completed |
|
|
191
|
+
| `no-unnecessary-array-flat-depth-js` | hint | no | pi-lens | .flat(1) is the default depth — just use .flat() |
|
|
192
|
+
| `no-useless-length-check-js` | warning | no | pi-lens | Use .some() instead of .filter().length check — short-circuits at first match |
|
|
193
|
+
| `no-useless-promise-resolve-reject-js` | warning | no | pi-lens | Unnecessary Promise.resolve/reject wrapping — return the value directly |
|
|
194
|
+
| `no-useless-rest-spread-js` | warning | no | pi-lens | Redundant spread into same container type — remove the extra spread |
|
|
195
|
+
| `node-rsa-weak-key-javascript` | warning | no | CodeRabbit | Use of RSA-$BITS, which is considered weak. Based on NIST standards, RSA keys should be at least 2048 bits. |
|
|
196
|
+
| `node-sequelize-empty-password-argument-javascript` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
197
|
+
| `node-sequelize-hardcoded-secret-argument-javascript` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
198
|
+
| `prefer-array-find-js` | warning | no | pi-lens | Use .find() instead of .filter()[0] — stops at first match |
|
|
199
|
+
| `prefer-array-flat-map-js` | warning | no | pi-lens | Use .flatMap() instead of .map().flat() — single pass, more efficient |
|
|
200
|
+
| `prefer-array-some-js` | warning | no | pi-lens | Use .some() instead of .filter().length check — short-circuits at first match |
|
|
201
|
+
| `prefer-at-js` | hint | no | pi-lens | Use .at(-1) instead of [length-1] for last element access |
|
|
202
|
+
| `prefer-date-now-js` | hint | no | pi-lens | Use Date.now() instead of new Date().getTime() |
|
|
203
|
+
| `prefer-dom-node-append-js` | hint | no | pi-lens | Use .append() instead of .appendChild() — accepts multiple nodes and strings |
|
|
204
|
+
| `prefer-dom-node-text-content-js` | warning | no | pi-lens | Use .textContent instead of .innerText — innerText triggers a layout reflow |
|
|
205
|
+
| `prefer-keyboard-event-key-js` | warning | no | pi-lens | Use event.key instead of event.keyCode/.which — keyCode is deprecated |
|
|
206
|
+
| `prefer-math-min-max-js` | hint | no | pi-lens | Use Math.min()/Math.max() instead of ternary for min/max |
|
|
207
|
+
| `prefer-number-properties-js` | warning | no | pi-lens | Use Number.isNaN()/Number.isFinite() instead of global isNaN()/isFinite() |
|
|
208
|
+
| `prefer-prototype-methods-js` | warning | no | pi-lens | Use Object.hasOwn() instead of .hasOwnProperty() |
|
|
209
|
+
| `prefer-query-selector-js` | hint | no | pi-lens | Use document.querySelector() instead of getElementById/getElementsByClassName |
|
|
210
|
+
| `prefer-string-slice-js` | hint | no | pi-lens | Use .slice() instead of .substring()/.substr() |
|
|
211
|
+
| `prefer-string-starts-ends-with-js` | warning | no | pi-lens | Use .startsWith()/.endsWith() instead of indexOf for prefix/suffix checks |
|
|
212
|
+
| `prefer-string-trim-start-end-js` | hint | no | pi-lens | Use .trimStart()/.trimEnd() instead of .trimLeft()/.trimRight() |
|
|
213
|
+
| `prefer-structured-clone-js` | warning | no | pi-lens | Use structuredClone() instead of JSON.parse(JSON.stringify()) for deep cloning |
|
|
214
|
+
| `strict-equality-js` | warning | yes | pi-lens | Use === instead of == |
|
|
215
|
+
| `strict-inequality-js` | warning | yes | pi-lens | Use !== instead of != |
|
|
216
|
+
| `throw-new-error-js` | error | no | pi-lens | Use new Error() not Error() — explicit construction is clearer |
|
|
217
|
+
| `unchecked-throwing-call-js` | error | no | pi-lens | $CALL without try/catch — throws on invalid input |
|
|
218
|
+
| `weak-rsa-key-js` | error | no | pi-lens | Weak RSA key size — use at least 2048 bits |
|
|
219
219
|
|
|
220
220
|
### Kotlin (5)
|
|
221
221
|
|
|
222
|
-
| Rule | Severity | Source | Description |
|
|
223
|
-
|
|
224
|
-
| `des-is-deprecated-kotlin` | warning | CodeRabbit | DES is considered deprecated. AES is the recommended cipher. Upgrade to use AES. See https://www.nist.gov/news-events/news/2005/06/nist-wit… |
|
|
225
|
-
| `desede-is-deprecated-kotlin` | warning | CodeRabbit | Triple DES (3DES or DESede) is considered deprecated. AES is the recommended cipher. Upgrade to use AES. |
|
|
226
|
-
| `jwt-hardcode-kotlin` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
227
|
-
| `rsa-no-padding-kotlin` | warning | CodeRabbit | Using RSA without OAEP mode weakens the encryption. |
|
|
228
|
-
| `system-setproperty-hardcoded-secret-kotlin` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
222
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
223
|
+
|---|---|---|---|---|
|
|
224
|
+
| `des-is-deprecated-kotlin` | warning | no | CodeRabbit | DES is considered deprecated. AES is the recommended cipher. Upgrade to use AES. See https://www.nist.gov/news-events/news/2005/06/nist-wit… |
|
|
225
|
+
| `desede-is-deprecated-kotlin` | warning | no | CodeRabbit | Triple DES (3DES or DESede) is considered deprecated. AES is the recommended cipher. Upgrade to use AES. |
|
|
226
|
+
| `jwt-hardcode-kotlin` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
227
|
+
| `rsa-no-padding-kotlin` | warning | no | CodeRabbit | Using RSA without OAEP mode weakens the encryption. |
|
|
228
|
+
| `system-setproperty-hardcoded-secret-kotlin` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
229
229
|
|
|
230
230
|
### PHP (2)
|
|
231
231
|
|
|
232
|
-
| Rule | Severity | Source | Description |
|
|
233
|
-
|
|
234
|
-
| `openssl-cbc-static-iv-php` | warning | CodeRabbit | Static IV used with AES in CBC mode. Static IVs enable chosen-plaintext attacks against encrypted data. |
|
|
235
|
-
| `search-active-debug-php` | warning | CodeRabbit | Debug logging is explicitly enabled. This can potentially disclose sensitive information and should never be active on production systems. |
|
|
232
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
233
|
+
|---|---|---|---|---|
|
|
234
|
+
| `openssl-cbc-static-iv-php` | warning | no | CodeRabbit | Static IV used with AES in CBC mode. Static IVs enable chosen-plaintext attacks against encrypted data. |
|
|
235
|
+
| `search-active-debug-php` | warning | no | CodeRabbit | Debug logging is explicitly enabled. This can potentially disclose sensitive information and should never be active on production systems. |
|
|
236
236
|
|
|
237
237
|
### Python (96)
|
|
238
238
|
|
|
239
|
-
| Rule | Severity | Source | Description |
|
|
240
|
-
|
|
241
|
-
| `avoid_app_run_with_bad_host-python` | warning | CodeRabbit | Running flask app with host 0.0.0.0 could expose the server publicly. |
|
|
242
|
-
| `avoid-mktemp-python` | warning | CodeRabbit | The function `mktemp` is deprecated. When using this function, it is possible for an attacker to modify the created file before the filenam… |
|
|
243
|
-
| `debug-enabled-python` | warning | CodeRabbit | Detected Flask app with debug=True. Do not deploy to production with this flag enabled as it will leak sensitive information. Instead, cons… |
|
|
244
|
-
| `hashids-with-django-secret-python` | warning | CodeRabbit | The Django secret key is used as salt in HashIDs. The HashID mechanism is not secure. By observing sufficient HashIDs, the salt used to con… |
|
|
245
|
-
| `hashids-with-flask-secret-python` | warning | CodeRabbit | The Flask secret key is used as salt in HashIDs. The HashID mechanism is not secure. By observing sufficient HashIDs, the salt used to cons… |
|
|
246
|
-
| `insecure-cipher-algorithm-rc4-python` | warning | CodeRabbit | Detected ARC4 cipher algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use… |
|
|
247
|
-
| `jwt-python-hardcoded-secret-python` | warning | CodeRabbit | Hardcoded JWT secret or private key is used. This is a Insufficiently Protected Credentials weakness: https://cwe.mitre.org/data/definition… |
|
|
248
|
-
| `no-assert-tuple` | error | pi-lens | Assert should not be called on a tuple literal |
|
|
249
|
-
| `no-aws-access-key-literal` | error | pi-lens | AWS access keys should not be hardcoded — use IAM roles, environment variables, or AWS Secrets Manager |
|
|
250
|
-
| `no-aws-apigateway-no-auth` | error | pi-lens | AWS API Gateway should require authentication |
|
|
251
|
-
| `no-aws-s3-public-access` | error | pi-lens | S3 buckets should not grant access to all users or authenticated users |
|
|
252
|
-
| `no-bare-except` | error | pi-lens | Avoid bare 'except' — catch specific exceptions instead |
|
|
253
|
-
| `no-boolean-in-except` | error | pi-lens | Boolean expressions should not be used in except statements |
|
|
254
|
-
| `no-comparison-to-none` | error | pi-lens | Use 'is None' instead of '== None' for None comparison |
|
|
255
|
-
| `no-comparison-to-true-false` | warning | pi-lens | Unnecessary equality checks should not be made against True/False |
|
|
256
|
-
| `no-compile-call` | error | pi-lens | compile() called with dynamic input — arbitrary code execution risk |
|
|
257
|
-
| `no-db-string-literal-password` | error | pi-lens | Database connection should use a secure (non-empty) password |
|
|
258
|
-
| `no-dunder-exit-wrong-arity` | error | pi-lens | __exit__ should accept type, value, and traceback arguments |
|
|
259
|
-
| `no-duplicate-kwarg` | error | pi-lens | Function arguments should be passed only once |
|
|
260
|
-
| `no-ellipsis-body` | warning | pi-lens | Bare ellipsis body — function was scaffolded but never completed |
|
|
261
|
-
| `no-except-non-exception` | error | pi-lens | Caught Exceptions must derive from BaseException |
|
|
262
|
-
| `no-fastapi-router-prefix-outside-init` | warning | pi-lens | Router prefixes should be defined during APIRouter initialization |
|
|
263
|
-
| `no-flask-preprocess-request-ignored` | warning | pi-lens | Flask preprocess_request() return values should be handled |
|
|
264
|
-
| `no-flask-secret-key-literal` | error | pi-lens | Flask secret keys should not be hardcoded — use environment variables or a secrets manager |
|
|
265
|
-
| `no-flask-sendfile-without-mimetype` | warning | pi-lens | Flask send_file should specify mimetype or download_name |
|
|
266
|
-
| `no-hardcoded-password` | warning | pi-lens | Passwords should not be hardcoded — use environment variables or a secrets manager |
|
|
267
|
-
| `no-html-autoescape-off` | error | pi-lens | HTML autoescape mechanism should not be globally disabled |
|
|
268
|
-
| `no-http-headers-bracket-access` | warning | pi-lens | HTTP headers should be accessed via .get() to avoid KeyError |
|
|
269
|
-
| `no-identity-operator-on-literals` | error | pi-lens | Identity operators should not be used with literal values |
|
|
270
|
-
| `no-init-return` | error | pi-lens | __init__ should not return a value |
|
|
271
|
-
| `no-jinja2-autoescape-off` | error | pi-lens | Jinja2 Environment should not disable autoescape |
|
|
272
|
-
| `no-marshal-load` | error | pi-lens | marshal.load() — deserializing arbitrary Python bytecode, RCE risk |
|
|
273
|
-
| `no-mutable-contextvar-default` | error | pi-lens | Mutable default ContextVar() or dict.fromkeys() should not be used |
|
|
274
|
-
| `no-mutable-default` | error | pi-lens | Mutable default argument detected — use None and initialize inside function |
|
|
275
|
-
| `no-notimplemented-in-bool` | error | pi-lens | NotImplemented should not be used in boolean contexts |
|
|
276
|
-
| `no-numpy-nan-equality` | error | pi-lens | Equality checks should not be made against numpy.nan |
|
|
277
|
-
| `no-only-defined-names-in-dunder-all` | warning | pi-lens | Only defined names should be listed in __all__ |
|
|
278
|
-
| `no-python-sql-string-concat` | error | pi-lens | SQL query built via string concat — use parameterized queries |
|
|
279
|
-
| `no-raise-not-implemented` | warning | pi-lens | NotImplementedError stub — function was scaffolded but never completed |
|
|
280
|
-
| `no-raise-stopiteration-in-generator` | error | pi-lens | StopIteration should not be raised inside generators |
|
|
281
|
-
| `no-requests-verify-false` | warning | pi-lens | requests call has verify=False — TLS certificate verification disabled |
|
|
282
|
-
| `no-requests-without-timeout` | error | pi-lens | HTTP requests should specify a timeout |
|
|
283
|
-
| `no-return-value-in-generator` | error | pi-lens | 'return' with a value should not be used in a generator function |
|
|
284
|
-
| `no-secret-in-env-var-name` | warning | pi-lens | Secrets should not be hard-coded — use environment variables or a secrets manager |
|
|
285
|
-
| `no-server-bind-wildcard` | error | pi-lens | Web servers should not bind to all network interfaces |
|
|
286
|
-
| `no-singledispatch-on-method` | warning | pi-lens | @singledispatch should not be confused with @singledispatchmethod |
|
|
287
|
-
| `no-star-imports` | warning | pi-lens | Avoid wildcard imports — import specific names instead |
|
|
288
|
-
| `no-template-string-concat` | error | pi-lens | Template strings and str should not be concatenated directly |
|
|
289
|
-
| `no-testclient-text-without-content` | warning | pi-lens | TestClient requests should use content= for bytes/text |
|
|
290
|
-
| `no-uvicorn-non-import-string` | error | pi-lens | uvicorn.run should pass an import string when reload/debug/workers is set |
|
|
291
|
-
| `no-xxe-vulnerable-xml-parser` | error | pi-lens | XML parsers should not be vulnerable to XXE attacks |
|
|
292
|
-
| `no-yield-from-non-iterable` | warning | pi-lens | Iterable unpacking, for-in loops and yield from should use an Iterable object |
|
|
293
|
-
| `no-yield-return-outside-function` | error | pi-lens | 'yield' and 'return' should not be used outside functions |
|
|
294
|
-
| `only-strings-in-dunder-all` | error | pi-lens | Only strings should be listed in __all__ |
|
|
295
|
-
| `openai-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
296
|
-
| `python-cassandra-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
297
|
-
| `python-cassandra-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
298
|
-
| `python-couchbase-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
299
|
-
| `python-couchbase-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
300
|
-
| `python-elasticsearch-hardcoded-bearer-auth-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
301
|
-
| `python-ldap3-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
302
|
-
| `python-ldap3-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
303
|
-
| `python-mariadb-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
304
|
-
| `python-mariadb-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
305
|
-
| `python-mysql-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
306
|
-
| `python-mysql-hardcoded-secret-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
307
|
-
| `python-mysqlclient-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
308
|
-
| `python-mysqlclient-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
309
|
-
| `python-neo4j-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
310
|
-
| `python-neo4j-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
311
|
-
| `python-peewee-mysql-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
312
|
-
| `python-peewee-mysql-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
313
|
-
| `python-peewee-pg-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
314
|
-
| `python-peewee-pg-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
315
|
-
| `python-pg8000-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
316
|
-
| `python-pg8000-hardcoded-secret-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
317
|
-
| `python-psycopg2-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
318
|
-
| `python-psycopg2-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
319
|
-
| `python-pyjwt-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
320
|
-
| `python-pymongo-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
321
|
-
| `python-pymongo-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
322
|
-
| `python-pymssql-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
323
|
-
| `python-pymssql-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
324
|
-
| `python-pymysql-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
325
|
-
| `python-pymysql-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
326
|
-
| `python-redis-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
327
|
-
| `python-redis-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
328
|
-
| `python-requests-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
329
|
-
| `python-requests-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
330
|
-
| `python-requests-oauth-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
331
|
-
| `python-tormysql-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
332
|
-
| `python-tormysql-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
333
|
-
| `python-urllib3-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
334
|
-
| `python-webrepl-empty-password-python` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
335
|
-
| `python-webrepl-hardcoded-secret-python` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
336
|
-
| `unchecked-throwing-call-python` | error | pi-lens | Call without try/except — throws on invalid input or missing file |
|
|
239
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
240
|
+
|---|---|---|---|---|
|
|
241
|
+
| `avoid_app_run_with_bad_host-python` | warning | no | CodeRabbit | Running flask app with host 0.0.0.0 could expose the server publicly. |
|
|
242
|
+
| `avoid-mktemp-python` | warning | no | CodeRabbit | The function `mktemp` is deprecated. When using this function, it is possible for an attacker to modify the created file before the filenam… |
|
|
243
|
+
| `debug-enabled-python` | warning | no | CodeRabbit | Detected Flask app with debug=True. Do not deploy to production with this flag enabled as it will leak sensitive information. Instead, cons… |
|
|
244
|
+
| `hashids-with-django-secret-python` | warning | no | CodeRabbit | The Django secret key is used as salt in HashIDs. The HashID mechanism is not secure. By observing sufficient HashIDs, the salt used to con… |
|
|
245
|
+
| `hashids-with-flask-secret-python` | warning | no | CodeRabbit | The Flask secret key is used as salt in HashIDs. The HashID mechanism is not secure. By observing sufficient HashIDs, the salt used to cons… |
|
|
246
|
+
| `insecure-cipher-algorithm-rc4-python` | warning | no | CodeRabbit | Detected ARC4 cipher algorithm which is considered insecure. This algorithm is not cryptographically secure and can be reversed easily. Use… |
|
|
247
|
+
| `jwt-python-hardcoded-secret-python` | warning | no | CodeRabbit | Hardcoded JWT secret or private key is used. This is a Insufficiently Protected Credentials weakness: https://cwe.mitre.org/data/definition… |
|
|
248
|
+
| `no-assert-tuple` | error | no | pi-lens | Assert should not be called on a tuple literal |
|
|
249
|
+
| `no-aws-access-key-literal` | error | no | pi-lens | AWS access keys should not be hardcoded — use IAM roles, environment variables, or AWS Secrets Manager |
|
|
250
|
+
| `no-aws-apigateway-no-auth` | error | no | pi-lens | AWS API Gateway should require authentication |
|
|
251
|
+
| `no-aws-s3-public-access` | error | no | pi-lens | S3 buckets should not grant access to all users or authenticated users |
|
|
252
|
+
| `no-bare-except` | error | no | pi-lens | Avoid bare 'except' — catch specific exceptions instead |
|
|
253
|
+
| `no-boolean-in-except` | error | no | pi-lens | Boolean expressions should not be used in except statements |
|
|
254
|
+
| `no-comparison-to-none` | error | no | pi-lens | Use 'is None' instead of '== None' for None comparison |
|
|
255
|
+
| `no-comparison-to-true-false` | warning | no | pi-lens | Unnecessary equality checks should not be made against True/False |
|
|
256
|
+
| `no-compile-call` | error | no | pi-lens | compile() called with dynamic input — arbitrary code execution risk |
|
|
257
|
+
| `no-db-string-literal-password` | error | no | pi-lens | Database connection should use a secure (non-empty) password |
|
|
258
|
+
| `no-dunder-exit-wrong-arity` | error | no | pi-lens | __exit__ should accept type, value, and traceback arguments |
|
|
259
|
+
| `no-duplicate-kwarg` | error | no | pi-lens | Function arguments should be passed only once |
|
|
260
|
+
| `no-ellipsis-body` | warning | no | pi-lens | Bare ellipsis body — function was scaffolded but never completed |
|
|
261
|
+
| `no-except-non-exception` | error | no | pi-lens | Caught Exceptions must derive from BaseException |
|
|
262
|
+
| `no-fastapi-router-prefix-outside-init` | warning | no | pi-lens | Router prefixes should be defined during APIRouter initialization |
|
|
263
|
+
| `no-flask-preprocess-request-ignored` | warning | no | pi-lens | Flask preprocess_request() return values should be handled |
|
|
264
|
+
| `no-flask-secret-key-literal` | error | no | pi-lens | Flask secret keys should not be hardcoded — use environment variables or a secrets manager |
|
|
265
|
+
| `no-flask-sendfile-without-mimetype` | warning | no | pi-lens | Flask send_file should specify mimetype or download_name |
|
|
266
|
+
| `no-hardcoded-password` | warning | no | pi-lens | Passwords should not be hardcoded — use environment variables or a secrets manager |
|
|
267
|
+
| `no-html-autoescape-off` | error | no | pi-lens | HTML autoescape mechanism should not be globally disabled |
|
|
268
|
+
| `no-http-headers-bracket-access` | warning | no | pi-lens | HTTP headers should be accessed via .get() to avoid KeyError |
|
|
269
|
+
| `no-identity-operator-on-literals` | error | no | pi-lens | Identity operators should not be used with literal values |
|
|
270
|
+
| `no-init-return` | error | no | pi-lens | __init__ should not return a value |
|
|
271
|
+
| `no-jinja2-autoescape-off` | error | no | pi-lens | Jinja2 Environment should not disable autoescape |
|
|
272
|
+
| `no-marshal-load` | error | no | pi-lens | marshal.load() — deserializing arbitrary Python bytecode, RCE risk |
|
|
273
|
+
| `no-mutable-contextvar-default` | error | no | pi-lens | Mutable default ContextVar() or dict.fromkeys() should not be used |
|
|
274
|
+
| `no-mutable-default` | error | no | pi-lens | Mutable default argument detected — use None and initialize inside function |
|
|
275
|
+
| `no-notimplemented-in-bool` | error | no | pi-lens | NotImplemented should not be used in boolean contexts |
|
|
276
|
+
| `no-numpy-nan-equality` | error | no | pi-lens | Equality checks should not be made against numpy.nan |
|
|
277
|
+
| `no-only-defined-names-in-dunder-all` | warning | no | pi-lens | Only defined names should be listed in __all__ |
|
|
278
|
+
| `no-python-sql-string-concat` | error | no | pi-lens | SQL query built via string concat — use parameterized queries |
|
|
279
|
+
| `no-raise-not-implemented` | warning | no | pi-lens | NotImplementedError stub — function was scaffolded but never completed |
|
|
280
|
+
| `no-raise-stopiteration-in-generator` | error | no | pi-lens | StopIteration should not be raised inside generators |
|
|
281
|
+
| `no-requests-verify-false` | warning | no | pi-lens | requests call has verify=False — TLS certificate verification disabled |
|
|
282
|
+
| `no-requests-without-timeout` | error | no | pi-lens | HTTP requests should specify a timeout |
|
|
283
|
+
| `no-return-value-in-generator` | error | no | pi-lens | 'return' with a value should not be used in a generator function |
|
|
284
|
+
| `no-secret-in-env-var-name` | warning | no | pi-lens | Secrets should not be hard-coded — use environment variables or a secrets manager |
|
|
285
|
+
| `no-server-bind-wildcard` | error | no | pi-lens | Web servers should not bind to all network interfaces |
|
|
286
|
+
| `no-singledispatch-on-method` | warning | no | pi-lens | @singledispatch should not be confused with @singledispatchmethod |
|
|
287
|
+
| `no-star-imports` | warning | no | pi-lens | Avoid wildcard imports — import specific names instead |
|
|
288
|
+
| `no-template-string-concat` | error | no | pi-lens | Template strings and str should not be concatenated directly |
|
|
289
|
+
| `no-testclient-text-without-content` | warning | no | pi-lens | TestClient requests should use content= for bytes/text |
|
|
290
|
+
| `no-uvicorn-non-import-string` | error | no | pi-lens | uvicorn.run should pass an import string when reload/debug/workers is set |
|
|
291
|
+
| `no-xxe-vulnerable-xml-parser` | error | no | pi-lens | XML parsers should not be vulnerable to XXE attacks |
|
|
292
|
+
| `no-yield-from-non-iterable` | warning | no | pi-lens | Iterable unpacking, for-in loops and yield from should use an Iterable object |
|
|
293
|
+
| `no-yield-return-outside-function` | error | no | pi-lens | 'yield' and 'return' should not be used outside functions |
|
|
294
|
+
| `only-strings-in-dunder-all` | error | no | pi-lens | Only strings should be listed in __all__ |
|
|
295
|
+
| `openai-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
296
|
+
| `python-cassandra-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
297
|
+
| `python-cassandra-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
298
|
+
| `python-couchbase-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
299
|
+
| `python-couchbase-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
300
|
+
| `python-elasticsearch-hardcoded-bearer-auth-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
301
|
+
| `python-ldap3-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
302
|
+
| `python-ldap3-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
303
|
+
| `python-mariadb-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
304
|
+
| `python-mariadb-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
305
|
+
| `python-mysql-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
306
|
+
| `python-mysql-hardcoded-secret-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
307
|
+
| `python-mysqlclient-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
308
|
+
| `python-mysqlclient-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
309
|
+
| `python-neo4j-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
310
|
+
| `python-neo4j-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
311
|
+
| `python-peewee-mysql-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
312
|
+
| `python-peewee-mysql-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
313
|
+
| `python-peewee-pg-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
314
|
+
| `python-peewee-pg-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
315
|
+
| `python-pg8000-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
316
|
+
| `python-pg8000-hardcoded-secret-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
317
|
+
| `python-psycopg2-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
318
|
+
| `python-psycopg2-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
319
|
+
| `python-pyjwt-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
320
|
+
| `python-pymongo-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
321
|
+
| `python-pymongo-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
322
|
+
| `python-pymssql-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
323
|
+
| `python-pymssql-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
324
|
+
| `python-pymysql-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
325
|
+
| `python-pymysql-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
326
|
+
| `python-redis-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
327
|
+
| `python-redis-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
328
|
+
| `python-requests-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
329
|
+
| `python-requests-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
330
|
+
| `python-requests-oauth-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
331
|
+
| `python-tormysql-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
332
|
+
| `python-tormysql-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
333
|
+
| `python-urllib3-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
334
|
+
| `python-webrepl-empty-password-python` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
335
|
+
| `python-webrepl-hardcoded-secret-python` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
336
|
+
| `unchecked-throwing-call-python` | error | no | pi-lens | Call without try/except — throws on invalid input or missing file |
|
|
337
337
|
|
|
338
338
|
### Ruby (19)
|
|
339
339
|
|
|
340
|
-
| Rule | Severity | Source | Description |
|
|
341
|
-
|
|
342
|
-
| `force-ssl-false-ruby` | warning | CodeRabbit | Checks for configuration setting of force_ssl to false. Force_ssl forces usage of HTTPS, which could lead to network interception of unencr… |
|
|
343
|
-
| `hardcoded-http-auth-in-controller-ruby` | warning | CodeRabbit | Detected hardcoded password used in basic authentication in a controller class. Including this password in version control could expose thi… |
|
|
344
|
-
| `hardcoded-secret-rsa-passphrase-ruby` | warning | CodeRabbit | Found the use of an hardcoded passphrase for RSA. The passphrase can be easily discovered, and therefore should not be stored in source-cod… |
|
|
345
|
-
| `insufficient-rsa-key-size-ruby` | warning | CodeRabbit | The RSA key size $SIZE is insufficent by NIST standards. It is recommended to use a key length of 2048 or higher. |
|
|
346
|
-
| `ruby-aws-sdk-hardcoded-secret-ruby` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
347
|
-
| `ruby-cassandra-empty-password-ruby` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
348
|
-
| `ruby-cassandra-hardcoded-secret-ruby` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
349
|
-
| `ruby-detect-path-traversal` | warning | pi-lens | Potential path traversal sink — verify path arguments are sanitized |
|
|
350
|
-
| `ruby-excon-hardcoded-secret-ruby` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
351
|
-
| `ruby-faraday-hardcoded-secret-ruby` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
352
|
-
| `ruby-mongo-empty-password-ruby` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
353
|
-
| `ruby-mongo-hardcoded-secret-ruby` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
354
|
-
| `ruby-mysql2-empty-password-ruby` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
355
|
-
| `ruby-mysql2-hardcoded-secret-ruby` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
356
|
-
| `ruby-octokit-hardcoded-secret-ruby` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
357
|
-
| `ruby-pg-empty-password-ruby` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
358
|
-
| `ruby-pg-hardcoded-secret-ruby` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
359
|
-
| `ruby-redis-empty-password-ruby` | warning | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
360
|
-
| `ruby-redis-hardcoded-secret-ruby` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
340
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
341
|
+
|---|---|---|---|---|
|
|
342
|
+
| `force-ssl-false-ruby` | warning | no | CodeRabbit | Checks for configuration setting of force_ssl to false. Force_ssl forces usage of HTTPS, which could lead to network interception of unencr… |
|
|
343
|
+
| `hardcoded-http-auth-in-controller-ruby` | warning | no | CodeRabbit | Detected hardcoded password used in basic authentication in a controller class. Including this password in version control could expose thi… |
|
|
344
|
+
| `hardcoded-secret-rsa-passphrase-ruby` | warning | no | CodeRabbit | Found the use of an hardcoded passphrase for RSA. The passphrase can be easily discovered, and therefore should not be stored in source-cod… |
|
|
345
|
+
| `insufficient-rsa-key-size-ruby` | warning | no | CodeRabbit | The RSA key size $SIZE is insufficent by NIST standards. It is recommended to use a key length of 2048 or higher. |
|
|
346
|
+
| `ruby-aws-sdk-hardcoded-secret-ruby` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
347
|
+
| `ruby-cassandra-empty-password-ruby` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
348
|
+
| `ruby-cassandra-hardcoded-secret-ruby` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
349
|
+
| `ruby-detect-path-traversal` | warning | yes | pi-lens | Potential path traversal sink — verify path arguments are sanitized |
|
|
350
|
+
| `ruby-excon-hardcoded-secret-ruby` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
351
|
+
| `ruby-faraday-hardcoded-secret-ruby` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
352
|
+
| `ruby-mongo-empty-password-ruby` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
353
|
+
| `ruby-mongo-hardcoded-secret-ruby` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
354
|
+
| `ruby-mysql2-empty-password-ruby` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
355
|
+
| `ruby-mysql2-hardcoded-secret-ruby` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
356
|
+
| `ruby-octokit-hardcoded-secret-ruby` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
357
|
+
| `ruby-pg-empty-password-ruby` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
358
|
+
| `ruby-pg-hardcoded-secret-ruby` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
359
|
+
| `ruby-redis-empty-password-ruby` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
360
|
+
| `ruby-redis-hardcoded-secret-ruby` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
361
361
|
|
|
362
362
|
### Rust (11)
|
|
363
363
|
|
|
364
|
-
| Rule | Severity | Source | Description |
|
|
365
|
-
|
|
366
|
-
| `avoid-duplicate-export` | warning | pi-lens | Same item re-exported twice under different paths (e.g. `pub mod foo; pub use foo::Foo;` exposes `Foo` AND `foo::Foo`) |
|
|
367
|
-
| `empty-password-rust` | warning | CodeRabbit | The application uses an empty credential. This can lead to unauthorized access by either an internal or external malicious actor. It is rec… |
|
|
368
|
-
| `hardcoded-password-rust` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
369
|
-
| `postgres-empty-password-rust` | warning | CodeRabbit | The application uses an empty credential. This can lead to unauthorized access by either an internal or external malicious actor. It is rec… |
|
|
370
|
-
| `redundant-unsafe-function` | error | pi-lens | Unsafe function without unsafe block inside |
|
|
371
|
-
| `reqwest-accept-invalid-rust` | warning | CodeRabbit | Dangerously accepting invalid TLS |
|
|
372
|
-
| `rust-2024-let-chain-candidate` | info | pi-lens | nested if conditions can be collapsed into a Rust 2024 let-chain |
|
|
373
|
-
| `secrets-reqwest-hardcoded-auth-rust` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
374
|
-
| `ssl-verify-none-rust` | warning | CodeRabbit | SSL verification disabled, this allows for MitM attacks |
|
|
375
|
-
| `tokio-postgres-empty-password-rust` | warning | CodeRabbit | The application uses an empty credential. This can lead to unauthorized access by either an internal or external malicious actor. It is rec… |
|
|
376
|
-
| `tokio-postgres-hardcoded-password-rust` | warning | CodeRabbit | The application uses an empty credential. This can lead to unauthorized access by either an internal or external malicious actor. It is rec… |
|
|
364
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
365
|
+
|---|---|---|---|---|
|
|
366
|
+
| `avoid-duplicate-export` | warning | no | pi-lens | Same item re-exported twice under different paths (e.g. `pub mod foo; pub use foo::Foo;` exposes `Foo` AND `foo::Foo`) |
|
|
367
|
+
| `empty-password-rust` | warning | no | CodeRabbit | The application uses an empty credential. This can lead to unauthorized access by either an internal or external malicious actor. It is rec… |
|
|
368
|
+
| `hardcoded-password-rust` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
369
|
+
| `postgres-empty-password-rust` | warning | no | CodeRabbit | The application uses an empty credential. This can lead to unauthorized access by either an internal or external malicious actor. It is rec… |
|
|
370
|
+
| `redundant-unsafe-function` | error | no | pi-lens | Unsafe function without unsafe block inside |
|
|
371
|
+
| `reqwest-accept-invalid-rust` | warning | no | CodeRabbit | Dangerously accepting invalid TLS |
|
|
372
|
+
| `rust-2024-let-chain-candidate` | info | no | pi-lens | nested if conditions can be collapsed into a Rust 2024 let-chain |
|
|
373
|
+
| `secrets-reqwest-hardcoded-auth-rust` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
374
|
+
| `ssl-verify-none-rust` | warning | no | CodeRabbit | SSL verification disabled, this allows for MitM attacks |
|
|
375
|
+
| `tokio-postgres-empty-password-rust` | warning | no | CodeRabbit | The application uses an empty credential. This can lead to unauthorized access by either an internal or external malicious actor. It is rec… |
|
|
376
|
+
| `tokio-postgres-hardcoded-password-rust` | warning | no | CodeRabbit | The application uses an empty credential. This can lead to unauthorized access by either an internal or external malicious actor. It is rec… |
|
|
377
377
|
|
|
378
378
|
### Scala (2)
|
|
379
379
|
|
|
380
|
-
| Rule | Severity | Source | Description |
|
|
381
|
-
|
|
382
|
-
| `jwt-scala-hardcode-scala` | warning | CodeRabbit | Hardcoded JWT secret or private key is used. This is a Insufficiently Protected Credentials weakness: https://cwe.mitre.org/data/definition… |
|
|
383
|
-
| `scala-jwt-hardcoded-secret-scala` | warning | CodeRabbit | Hardcoded JWT secret or private key is used. This is a Insufficiently Protected Credentials weakness: https://cwe.mitre.org/data/definition… |
|
|
380
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
381
|
+
|---|---|---|---|---|
|
|
382
|
+
| `jwt-scala-hardcode-scala` | warning | no | CodeRabbit | Hardcoded JWT secret or private key is used. This is a Insufficiently Protected Credentials weakness: https://cwe.mitre.org/data/definition… |
|
|
383
|
+
| `scala-jwt-hardcoded-secret-scala` | warning | no | CodeRabbit | Hardcoded JWT secret or private key is used. This is a Insufficiently Protected Credentials weakness: https://cwe.mitre.org/data/definition… |
|
|
384
384
|
|
|
385
385
|
### Swift (5)
|
|
386
386
|
|
|
387
|
-
| Rule | Severity | Source | Description |
|
|
388
|
-
|
|
389
|
-
| `aes-hardcoded-secret-swift` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
390
|
-
| `blowfish-hardcoded-secret-swift` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
391
|
-
| `chacha20-hardcoded-secret-swift` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
392
|
-
| `insecure-biometrics-swift` | info | CodeRabbit | The application was observed to leverage biometrics via Local Authentication, which returns a simple boolean result for authentication. Thi… |
|
|
393
|
-
| `rabbit-hardcoded-secret-swift` | warning | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
387
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
388
|
+
|---|---|---|---|---|
|
|
389
|
+
| `aes-hardcoded-secret-swift` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
390
|
+
| `blowfish-hardcoded-secret-swift` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
391
|
+
| `chacha20-hardcoded-secret-swift` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
392
|
+
| `insecure-biometrics-swift` | info | no | CodeRabbit | The application was observed to leverage biometrics via Local Authentication, which returns a simple boolean result for authentication. Thi… |
|
|
393
|
+
| `rabbit-hardcoded-secret-swift` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
394
394
|
|
|
395
395
|
### TSX (7)
|
|
396
396
|
|
|
397
|
-
| Rule | Severity | Source | Description |
|
|
398
|
-
|
|
399
|
-
| `inline-styles` | hint | pi-lens | Inline styles — use CSS modules or styled components |
|
|
400
|
-
| `jsx-boolean-short-circuit` | error | pi-lens | React JSX && pitfall — potentially renders 0 or NaN |
|
|
401
|
-
| `no-nested-links` | error | pi-lens | Nested <a> tags are invalid HTML and cause unexpected behavior |
|
|
402
|
-
| `no-string-ref` | warning | pi-lens | String refs are deprecated — use useRef callback or forwardRef instead |
|
|
403
|
-
| `no-unnecessary-state-initializer` | hint | pi-lens | Unnecessary useState initializer — useState with undefined uses the initial value automatically |
|
|
404
|
-
| `redundant-usestate-type` | info | pi-lens | `useState<TYPE>(...)` where TYPE is a primitive redundant — TS can infer it from the initial value |
|
|
405
|
-
| `unnecessary-react-hook` | warning | pi-lens | Function with a `use*` name does not call any other React hook — rename to a plain function |
|
|
406
|
-
|
|
407
|
-
### TypeScript (
|
|
408
|
-
|
|
409
|
-
| Rule | Severity | Source | Description |
|
|
410
|
-
|
|
411
|
-
| `array-callback-return` | error | pi-lens | return statements must be enforced in callbacks of array methods |
|
|
412
|
-
| `consistent-existence-index-check` | warning | pi-lens | Use .includes() instead of .indexOf() for existence checks |
|
|
413
|
-
| `detect-angular-sce-disabled-typescript` | warning | CodeRabbit | $sceProvider is set to false. Disabling Strict Contextual escaping (SCE) in an AngularJS application could provide additional attack surfac… |
|
|
414
|
-
| `enforce-node-protocol` | warning | pi-lens | Use node: prefix for Node.js built-in module imports |
|
|
415
|
-
| `express-session-hardcoded-secret-typescript` | warning | CodeRabbit | A hard-coded credential was detected. It is not recommended to store credentials in source-code, as this risks secrets being leaked and use… |
|
|
416
|
-
| `find-import-file-without-extension` | warning | pi-lens | ESM import / dynamic import of a relative path without a file extension |
|
|
417
|
-
| `hardcoded-url` | warning | pi-lens | Hardcoded URL — use config or environment variable |
|
|
418
|
-
| `incomplete-string-escaping` | warning | pi-lens | Regex replace escapes with a backslash before escaping backslashes |
|
|
419
|
-
| `jwt-no-verify` | error | pi-lens | Unsafe JWT operation — verification is bypassed |
|
|
420
|
-
| `jwt-simple-noverify-typescript` | warning | CodeRabbit | "Detected the decoding of a JWT token without a verify step. JWT tokens must be verified before use, otherwise the token's integrity is unk… |
|
|
421
|
-
| `large-class` | hint | pi-lens | Large class detected — consider splitting responsibilities |
|
|
422
|
-
| `long-parameter-list` | hint | pi-lens | Function has many parameters — consider using an options object |
|
|
423
|
-
| `missing-component-decorator` | warning | pi-lens | Angular lifecycle method (ngOnInit/ngOnDestroy) on a class without an @Component() decorator |
|
|
424
|
-
| `nested-ternary` | warning | pi-lens | Nested ternary expressions are hard to read — use if/else or switch |
|
|
425
|
-
| `no-absolute-path-import` | warning | pi-lens | Absolute import path is not portable — use a relative or aliased path |
|
|
426
|
-
| `no-alert` | warning | pi-lens | Avoid alert() — use a proper notification system |
|
|
427
|
-
| `no-any-type` | hint | pi-lens | Explicit 'any' type — use proper typing |
|
|
428
|
-
| `no-array-constructor` | warning | pi-lens | Use array literal [] instead of new Array() |
|
|
429
|
-
| `no-array-reverse-mutation` | warning | pi-lens | .reverse() mutates the array in place — use toReversed() or slice first |
|
|
430
|
-
| `no-as-any` | warning | pi-lens | Type assertion to 'any' — use proper typing |
|
|
431
|
-
| `no-async-promise-executor` | error | pi-lens | Promise executor functions should not be async. |
|
|
432
|
-
| `no-await-expression-member` | hint | pi-lens |
|
|
433
|
-
| `no-await-in-promise-all` | error | pi-lens | Avoid await inside Promise.all — use Promise.all with an array of promises instead |
|
|
434
|
-
| `no-await-in-promise-methods` | warning | pi-lens | Do not await inside Promise.all/allSettled — pass the promises directly |
|
|
435
|
-
| `no-bare-host-path-in-win32-branch` | warning | pi-lens | Use win32 path operations inside a branch committed to Windows path semantics |
|
|
436
|
-
| `no-
|
|
437
|
-
| `no-
|
|
438
|
-
| `no-
|
|
439
|
-
| `no-
|
|
440
|
-
| `no-
|
|
441
|
-
| `no-
|
|
442
|
-
| `no-
|
|
443
|
-
| `no-
|
|
444
|
-
| `no-
|
|
445
|
-
| `no-
|
|
446
|
-
| `no-dupe-
|
|
447
|
-
| `no-
|
|
448
|
-
| `no-
|
|
449
|
-
| `no-
|
|
450
|
-
| `no-
|
|
451
|
-
| `no-
|
|
452
|
-
| `no-
|
|
453
|
-
| `no-instanceof-
|
|
454
|
-
| `no-
|
|
455
|
-
| `no-
|
|
456
|
-
| `no-
|
|
457
|
-
| `no-
|
|
458
|
-
| `no-
|
|
459
|
-
| `no-
|
|
460
|
-
| `no-
|
|
461
|
-
| `no-
|
|
462
|
-
| `no-
|
|
463
|
-
| `no-
|
|
464
|
-
| `no-
|
|
465
|
-
| `no-
|
|
466
|
-
| `no-
|
|
467
|
-
| `no-
|
|
468
|
-
| `no-
|
|
469
|
-
| `no-
|
|
470
|
-
| `no-
|
|
471
|
-
| `no-
|
|
472
|
-
| `no-
|
|
473
|
-
| `no-
|
|
474
|
-
| `no-
|
|
475
|
-
| `no-
|
|
476
|
-
| `no-
|
|
477
|
-
| `no-
|
|
478
|
-
| `no-
|
|
479
|
-
| `no-
|
|
480
|
-
| `no-
|
|
481
|
-
| `no-
|
|
482
|
-
| `
|
|
483
|
-
| `
|
|
484
|
-
| `
|
|
485
|
-
| `
|
|
486
|
-
| `
|
|
487
|
-
| `
|
|
488
|
-
| `
|
|
489
|
-
| `
|
|
490
|
-
| `
|
|
491
|
-
| `
|
|
492
|
-
| `
|
|
493
|
-
| `prefer-
|
|
494
|
-
| `prefer-
|
|
495
|
-
| `prefer-
|
|
496
|
-
| `prefer-
|
|
497
|
-
| `prefer-
|
|
498
|
-
| `prefer-
|
|
499
|
-
| `prefer-
|
|
500
|
-
| `prefer-
|
|
501
|
-
| `prefer-
|
|
502
|
-
| `
|
|
503
|
-
| `
|
|
504
|
-
| `
|
|
505
|
-
| `
|
|
506
|
-
| `
|
|
507
|
-
| `
|
|
508
|
-
| `
|
|
509
|
-
| `
|
|
510
|
-
| `
|
|
511
|
-
| `
|
|
512
|
-
| `
|
|
513
|
-
| `
|
|
514
|
-
| `
|
|
515
|
-
| `
|
|
516
|
-
| `
|
|
517
|
-
| `
|
|
518
|
-
| `ts-
|
|
519
|
-
| `ts-
|
|
520
|
-
| `ts-
|
|
521
|
-
| `ts-
|
|
522
|
-
| `ts-
|
|
523
|
-
| `ts-
|
|
524
|
-
| `ts-
|
|
525
|
-
| `ts-
|
|
526
|
-
| `ts-
|
|
527
|
-
| `ts-
|
|
528
|
-
| `ts-
|
|
529
|
-
| `ts-
|
|
530
|
-
| `ts-
|
|
531
|
-
| `ts-
|
|
532
|
-
| `ts-
|
|
533
|
-
| `ts-
|
|
534
|
-
| `
|
|
535
|
-
| `
|
|
397
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
398
|
+
|---|---|---|---|---|
|
|
399
|
+
| `inline-styles` | hint | no | pi-lens | Inline styles — use CSS modules or styled components |
|
|
400
|
+
| `jsx-boolean-short-circuit` | error | yes | pi-lens | React JSX && pitfall — potentially renders 0 or NaN |
|
|
401
|
+
| `no-nested-links` | error | no | pi-lens | Nested <a> tags are invalid HTML and cause unexpected behavior |
|
|
402
|
+
| `no-string-ref` | warning | no | pi-lens | String refs are deprecated — use useRef callback or forwardRef instead |
|
|
403
|
+
| `no-unnecessary-state-initializer` | hint | no | pi-lens | Unnecessary useState initializer — useState with undefined uses the initial value automatically |
|
|
404
|
+
| `redundant-usestate-type` | info | yes | pi-lens | `useState<TYPE>(...)` where TYPE is a primitive redundant — TS can infer it from the initial value |
|
|
405
|
+
| `unnecessary-react-hook` | warning | no | pi-lens | Function with a `use*` name does not call any other React hook — rename to a plain function |
|
|
406
|
+
|
|
407
|
+
### TypeScript (134)
|
|
408
|
+
|
|
409
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
410
|
+
|---|---|---|---|---|
|
|
411
|
+
| `array-callback-return` | error | no | pi-lens | return statements must be enforced in callbacks of array methods |
|
|
412
|
+
| `consistent-existence-index-check` | warning | no | pi-lens | Use .includes() instead of .indexOf() for existence checks |
|
|
413
|
+
| `detect-angular-sce-disabled-typescript` | warning | no | CodeRabbit | $sceProvider is set to false. Disabling Strict Contextual escaping (SCE) in an AngularJS application could provide additional attack surfac… |
|
|
414
|
+
| `enforce-node-protocol` | warning | no | pi-lens | Use node: prefix for Node.js built-in module imports |
|
|
415
|
+
| `express-session-hardcoded-secret-typescript` | warning | no | CodeRabbit | A hard-coded credential was detected. It is not recommended to store credentials in source-code, as this risks secrets being leaked and use… |
|
|
416
|
+
| `find-import-file-without-extension` | warning | no | pi-lens | ESM import / dynamic import of a relative path without a file extension |
|
|
417
|
+
| `hardcoded-url` | warning | no | pi-lens | Hardcoded URL — use config or environment variable |
|
|
418
|
+
| `incomplete-string-escaping` | warning | no | pi-lens | Regex replace escapes with a backslash before escaping backslashes |
|
|
419
|
+
| `jwt-no-verify` | error | no | pi-lens | Unsafe JWT operation — verification is bypassed |
|
|
420
|
+
| `jwt-simple-noverify-typescript` | warning | no | CodeRabbit | "Detected the decoding of a JWT token without a verify step. JWT tokens must be verified before use, otherwise the token's integrity is unk… |
|
|
421
|
+
| `large-class` | hint | no | pi-lens | Large class detected — consider splitting responsibilities |
|
|
422
|
+
| `long-parameter-list` | hint | no | pi-lens | Function has many parameters — consider using an options object |
|
|
423
|
+
| `missing-component-decorator` | warning | no | pi-lens | Angular lifecycle method (ngOnInit/ngOnDestroy) on a class without an @Component() decorator |
|
|
424
|
+
| `nested-ternary` | warning | no | pi-lens | Nested ternary expressions are hard to read — use if/else or switch |
|
|
425
|
+
| `no-absolute-path-import` | warning | no | pi-lens | Absolute import path is not portable — use a relative or aliased path |
|
|
426
|
+
| `no-alert` | warning | no | pi-lens | Avoid alert() — use a proper notification system |
|
|
427
|
+
| `no-any-type` | hint | no | pi-lens | Explicit 'any' type — use proper typing |
|
|
428
|
+
| `no-array-constructor` | warning | yes | pi-lens | Use array literal [] instead of new Array() |
|
|
429
|
+
| `no-array-reverse-mutation` | warning | no | pi-lens | .reverse() mutates the array in place — use toReversed() or slice first |
|
|
430
|
+
| `no-as-any` | warning | no | pi-lens | Type assertion to 'any' — use proper typing |
|
|
431
|
+
| `no-async-promise-executor` | error | no | pi-lens | Promise executor functions should not be async. |
|
|
432
|
+
| `no-await-expression-member` | hint | no | pi-lens | (await expr).prop — do not rewrite to await expr.prop (that reads .prop off the unresolved promise). Keep the parens, or destructure first:… |
|
|
433
|
+
| `no-await-in-promise-all` | error | no | pi-lens | Avoid await inside Promise.all — use Promise.all with an array of promises instead |
|
|
434
|
+
| `no-await-in-promise-methods` | warning | no | pi-lens | Do not await inside Promise.all/allSettled — pass the promises directly |
|
|
435
|
+
| `no-bare-host-path-in-win32-branch` | warning | no | pi-lens | Use win32 path operations inside a branch committed to Windows path semantics |
|
|
436
|
+
| `no-bare-object-param` | error | no | pi-lens | Parameter typed bare 'object' — guarantees nothing about shape, use Record<string, unknown> or a real interface |
|
|
437
|
+
| `no-case-declarations` | error | no | pi-lens | Unexpected lexical declaration in case block — wrap in braces to restrict scope |
|
|
438
|
+
| `no-chained-type-assertions` | error | no | pi-lens | Chained type assertion (x as A as B) — stacking assertions with no runtime check between them |
|
|
439
|
+
| `no-compare-neg-zero` | error | no | pi-lens | Disallow comparing against -0 |
|
|
440
|
+
| `no-cond-assign` | error | no | pi-lens | Expected a conditional expression and instead saw an assignment. |
|
|
441
|
+
| `no-conditional-empty-object-spread` | hint | no | pi-lens | Conditional empty-object spread — use an explicit if/else to omit fields |
|
|
442
|
+
| `no-console-except-error` | warning | yes | pi-lens | Avoid console.log/debug/warn in production code — use a logger or console.error inside catch only |
|
|
443
|
+
| `no-constant-condition` | error | no | pi-lens | Unexpected constant condition |
|
|
444
|
+
| `no-demeter-message-chain` | warning | no | pi-lens | Message chain (Law of Demeter) — navigating 3+ deep through accessors couples the caller to the whole path. |
|
|
445
|
+
| `no-discarded-error` | error | no | pi-lens | new Error() result discarded — add 'throw' or assign to a variable |
|
|
446
|
+
| `no-dupe-class-members` | error | no | pi-lens | Duplicate class member '$NAME'. |
|
|
447
|
+
| `no-dupe-keys` | error | no | pi-lens | Disallow duplicate keys in object literals |
|
|
448
|
+
| `no-extra-boolean-cast` | warning | no | pi-lens | Unnecessary double negation '!!' — the value is already coerced in this context |
|
|
449
|
+
| `no-flag-argument` | warning | no | pi-lens | Flag argument — a boolean parameter the function branches on. Split into two functions. |
|
|
450
|
+
| `no-implied-eval` | error | no | pi-lens | Avoid implied eval via setTimeout/setInterval with string arguments |
|
|
451
|
+
| `no-inner-html` | error | no | pi-lens | Avoid innerHTML/outerHTML — use textContent or a sanitizer to prevent XSS |
|
|
452
|
+
| `no-insecure-randomness` | error | no | pi-lens | Math.random() used for security-sensitive operations — use crypto.getRandomValues() instead |
|
|
453
|
+
| `no-instanceof-array` | warning | no | pi-lens | Use Array.isArray() instead of instanceof Array — fails across realm boundaries |
|
|
454
|
+
| `no-instanceof-builtins` | error | no | pi-lens | Do not use instanceof with primitive wrapper types — use typeof instead |
|
|
455
|
+
| `no-javascript-url` | error | no | pi-lens | Avoid javascript: URLs — they can execute arbitrary code |
|
|
456
|
+
| `no-known-value-widening` | hint | no | pi-lens | const initialized from an object literal, widened by a Record<...> annotation — prefer inference or 'satisfies' |
|
|
457
|
+
| `no-mutable-export` | warning | no | pi-lens | Exported 'let'/'var' is mutable — importers observe it change, creating hidden shared state; export 'const' |
|
|
458
|
+
| `no-nan-comparison` | error | no | pi-lens | x === NaN is always false — use Number.isNaN(x) |
|
|
459
|
+
| `no-negation-in-equality-check` | error | no | pi-lens | Negation before equality check — !a === b evaluates as (!a) === b, not !(a === b) |
|
|
460
|
+
| `no-new-symbol` | error | no | pi-lens | Symbol cannot be called as a constructor. |
|
|
461
|
+
| `no-new-wrappers` | error | no | pi-lens | Do not use 'new' with wrapper objects — use literal primitives instead |
|
|
462
|
+
| `no-non-null-assertion` | warning | no | pi-lens | Non-null assertion '!' used — prefer explicit null checks or optional chaining |
|
|
463
|
+
| `no-octal-literal` | warning | no | pi-lens | Legacy octal literal — a leading-zero number is parsed as octal in sloppy mode and throws in strict mode; use the 0o prefix |
|
|
464
|
+
| `no-open-redirect` | error | no | pi-lens | Potential open redirect vulnerability — validate redirect URLs |
|
|
465
|
+
| `no-prototype-builtins` | error | no | pi-lens | Use Object.hasOwn() or Object.prototype.hasOwnProperty.call() instead of calling methods directly on the object |
|
|
466
|
+
| `no-prototype-builtins-native` | hint | no | pi-lens | Use Object.hasOwn() instead of hasOwnProperty() — ES2022 standard |
|
|
467
|
+
| `no-raw-json-store-write` | warning | no | pi-lens | Use the atomic write seam for JSON stores instead of writeFileSync |
|
|
468
|
+
| `no-reflect-apply` | error | no | pi-lens | Reflect.apply() — use a typed call (fn.apply(...) or fn(...args)) instead |
|
|
469
|
+
| `no-reflect-get` | error | yes | pi-lens | Reflect.get(obj, key) — use a typed property access (obj.prop or obj[key]) instead |
|
|
470
|
+
| `no-relative-cross-package-import` | info | no | pi-lens | Avoid relative imports across package boundaries (../../). Use absolute imports (@app/..., @components/...) for better agent reasoning abou… |
|
|
471
|
+
| `no-return-await` | warning | no | pi-lens | Unnecessary 'await' in return statement — use direct return instead |
|
|
472
|
+
| `no-runtime-typeof` | hint | no | pi-lens | Runtime 'typeof' check — decode/parse the value at its I/O boundary, then branch on the domain value |
|
|
473
|
+
| `no-shape-in-symbol-names` | hint | no | pi-lens | Symbol name contains 'shape' — name it for its domain role, not its structure |
|
|
474
|
+
| `no-single-promise-in-promise-methods` | warning | no | pi-lens | Promise.all/race with a single promise is unnecessary — await it directly |
|
|
475
|
+
| `no-sort-without-comparator` | warning | no | pi-lens | .sort()/.toSorted() without a compare function sorts by string order — numbers sort wrong (e.g. [10,9,1] becomes [1,10,9]) |
|
|
476
|
+
| `no-sql-in-code` | error | no | pi-lens | Raw SQL string in code — use query builder or ORM |
|
|
477
|
+
| `no-throw-string` | error | no | pi-lens | Throw Error objects, not strings |
|
|
478
|
+
| `no-typeof-undefined` | hint | no | pi-lens | Use === undefined instead of typeof x === 'undefined' |
|
|
479
|
+
| `no-unimplemented-stub` | warning | no | pi-lens | Unimplemented stub — function was scaffolded but never completed |
|
|
480
|
+
| `no-unknown-laundering` | error | no | pi-lens | type alias to bare 'unknown' — give the alias real shape or inline 'unknown' at the one call site that needs it |
|
|
481
|
+
| `no-unknown-parameters` | hint | no | pi-lens | Parameter typed 'unknown' — decode it at the I/O boundary instead of leaving it unparsed |
|
|
482
|
+
| `no-unknown-returns` | error | no | pi-lens | Function returns 'unknown' — parse the value at its boundary and return a named domain type |
|
|
483
|
+
| `no-unnecessary-array-flat-depth` | hint | no | pi-lens | .flat(1) is the default depth — just use .flat() |
|
|
484
|
+
| `no-unsafe-dictionary-any` | error | no | pi-lens | Record<K, any> — the value type gives callers no contract; use Record<K, unknown> or a real value type |
|
|
485
|
+
| `no-unsafe-dictionary-unknown` | hint | no | pi-lens | Record<K, unknown> — every read still needs a runtime narrow; prefer a real value type where the shape is known |
|
|
486
|
+
| `no-useless-length-check` | warning | no | pi-lens | Use .some() instead of .filter().length check — short-circuits at first match |
|
|
487
|
+
| `no-useless-promise-resolve-reject` | warning | no | pi-lens | Unnecessary Promise.resolve/reject wrapping — return the value directly |
|
|
488
|
+
| `no-useless-rest-spread` | warning | no | pi-lens | Redundant spread into same container type — remove the extra spread |
|
|
489
|
+
| `no-win32-isabsolute-for-qualification` | warning | no | pi-lens | Use isFullyQualified for path qualification instead of win32.isAbsolute |
|
|
490
|
+
| `node-rsa-weak-key-typescript` | warning | no | CodeRabbit | Use of RSA-$BITS, which is considered weak. Based on NIST standards, RSA keys should be at least 2048 bits. |
|
|
491
|
+
| `node-sequelize-empty-password-argument-typescript` | warning | no | CodeRabbit | The application creates a database connection with an empty password. This can lead to unauthorized access by either an internal or externa… |
|
|
492
|
+
| `node-sequelize-hardcoded-secret-argument-typescript` | warning | no | CodeRabbit | A secret is hard-coded in the application. Secrets stored in source code, such as credentials, identifiers, and other types of sensitive da… |
|
|
493
|
+
| `prefer-array-find` | warning | no | pi-lens | Use .find() instead of .filter()[0] — stops at first match |
|
|
494
|
+
| `prefer-array-flat-map` | warning | no | pi-lens | Use .flatMap() instead of .map().flat() — single pass, more efficient |
|
|
495
|
+
| `prefer-array-some` | warning | no | pi-lens | Use .some() instead of .filter().length check — short-circuits at first match |
|
|
496
|
+
| `prefer-at` | hint | no | pi-lens | Use .at(-1) instead of [length-1] for last element access |
|
|
497
|
+
| `prefer-date-now` | hint | no | pi-lens | Use Date.now() instead of new Date().getTime() |
|
|
498
|
+
| `prefer-dom-node-append` | hint | no | pi-lens | Use .append() instead of .appendChild() — accepts multiple nodes and strings |
|
|
499
|
+
| `prefer-dom-node-text-content` | warning | no | pi-lens | Use .textContent instead of .innerText — innerText triggers a layout reflow |
|
|
500
|
+
| `prefer-keyboard-event-key` | warning | no | pi-lens | Use event.key instead of event.keyCode/.which — keyCode is deprecated |
|
|
501
|
+
| `prefer-math-min-max` | hint | no | pi-lens | Use Math.min()/Math.max() instead of ternary for min/max |
|
|
502
|
+
| `prefer-number-properties` | warning | no | pi-lens | Use Number.isNaN()/Number.isFinite() instead of global isNaN()/isFinite() |
|
|
503
|
+
| `prefer-optional-chain` | hint | no | pi-lens | Use optional chaining '?.' instead of logical AND for null checks |
|
|
504
|
+
| `prefer-prototype-methods` | warning | no | pi-lens | Use Object.hasOwn() instead of .hasOwnProperty() |
|
|
505
|
+
| `prefer-query-selector` | hint | no | pi-lens | Use document.querySelector() instead of getElementById/getElementsByClassName |
|
|
506
|
+
| `prefer-string-slice` | hint | no | pi-lens | Use .slice() instead of .substring()/.substr() |
|
|
507
|
+
| `prefer-string-starts-ends-with` | warning | no | pi-lens | Use .startsWith()/.endsWith() instead of indexOf for prefix/suffix checks |
|
|
508
|
+
| `prefer-string-trim-start-end` | hint | no | pi-lens | Use .trimStart()/.trimEnd() instead of .trimLeft()/.trimRight() |
|
|
509
|
+
| `prefer-structured-clone` | warning | no | pi-lens | Use structuredClone() instead of JSON.parse(JSON.stringify()) for deep cloning |
|
|
510
|
+
| `redos-nested-quantifier` | warning | no | pi-lens | Nested unbounded quantifier in regex — risks catastrophic backtracking (ReDoS) |
|
|
511
|
+
| `redundant-state` | warning | yes | pi-lens | Redundant state — '$NAME' is only used to return it, inline the value |
|
|
512
|
+
| `require-await` | warning | no | pi-lens | Async function has no 'await' expression — consider removing 'async' keyword |
|
|
513
|
+
| `require-safety-comment-for-as-unknown-as` | error | no | pi-lens | 'x as unknown as T' with no nearby SAFETY: comment — state the invariant TypeScript can't check |
|
|
514
|
+
| `strict-equality` | warning | yes | pi-lens | Use === instead of == |
|
|
515
|
+
| `strict-inequality` | warning | yes | pi-lens | Use !== instead of != |
|
|
516
|
+
| `switch-without-default` | warning | no | pi-lens | switch has no default clause — values matching no case are silently ignored; add a default (even one that throws) |
|
|
517
|
+
| `throw-new-error` | error | no | pi-lens | Use new Error() not Error() — explicit construction is clearer |
|
|
518
|
+
| `ts-array-concat-spread` | warning | no | pi-lens | arr.concat([...items]) - use arr.push(...items) or [...arr, ...items] |
|
|
519
|
+
| `ts-array-every-some` | warning | no | pi-lens | arr.map(x => x.prop).every(Boolean) - use arr.every(x => !!x.prop) |
|
|
520
|
+
| `ts-boolean-return-if-else` | warning | no | pi-lens | if/else returning true/false - simplify to return the condition directly |
|
|
521
|
+
| `ts-defensive-null-guard` | warning | no | pi-lens | if (x === null \|\| x === undefined) return null - overly defensive early guard |
|
|
522
|
+
| `ts-delete-property` | warning | no | pi-lens | delete obj.prop - consider setting to undefined or restructuring instead |
|
|
523
|
+
| `ts-double-negation` | warning | no | pi-lens | !!value to coerce boolean - use Boolean(value) or truthiness directly |
|
|
524
|
+
| `ts-function-constructor` | warning | no | pi-lens | new Function() - avoid dynamic code evaluation |
|
|
525
|
+
| `ts-in-operator-loop` | warning | no | pi-lens | for (const key in obj) - use Object.keys/entries/values for safer iteration |
|
|
526
|
+
| `ts-isnan-check` | warning | no | pi-lens | x !== x to check NaN - use Number.isNaN(x) |
|
|
527
|
+
| `ts-json-stringify-parse` | warning | no | pi-lens | JSON.parse(JSON.stringify(x)) is noisy; use structuredClone or copy properly |
|
|
528
|
+
| `ts-manual-array-contains` | warning | no | pi-lens | arr.indexOf(x) comparison - use arr.includes(x) for existence check |
|
|
529
|
+
| `ts-nullish-coalescing-opportunity` | warning | no | pi-lens | x !== null && x !== undefined ? x : default - use x ?? default |
|
|
530
|
+
| `ts-object-hasown-check` | warning | no | pi-lens | obj.hasOwnProperty(key) - use Object.hasOwn(obj, key) or Object.prototype.hasOwnProperty.call |
|
|
531
|
+
| `ts-optional-chaining-default` | warning | no | pi-lens | obj && obj.prop ? obj.prop : default - use obj?.prop ?? default |
|
|
532
|
+
| `ts-parseint-no-radix` | warning | no | pi-lens | parseInt(x) without radix - use parseInt(x, 10) |
|
|
533
|
+
| `ts-pointless-bool-cast` | warning | no | pi-lens | Wrapping a condition in Boolean() is redundant ceremony |
|
|
534
|
+
| `ts-redundant-filter-map` | warning | no | pi-lens | arr.filter(x => x).map(...) - use flatMap or a single pass |
|
|
535
|
+
| `ts-slice-copy` | warning | no | pi-lens | arr.slice() to copy - use [...arr] spread |
|
|
536
|
+
| `ts-string-split-index` | warning | no | pi-lens | split(sep)[n] with a magic index - use destructuring or named variables |
|
|
537
|
+
| `ts-unnecessary-array-concat` | warning | no | pi-lens | concat([item]) with a single-element array - use push(item) or spread [...arr, item] |
|
|
538
|
+
| `ts-unnecessary-array-from` | warning | no | pi-lens | Array.from(iterable) in for-of - iterate the iterable directly |
|
|
539
|
+
| `ts-unnecessary-bind` | warning | no | pi-lens | fn.bind(this) in arrow function context - arrow functions capture this lexically |
|
|
540
|
+
| `ts-unnecessary-else-return` | warning | no | pi-lens | else after return - the else block is redundant |
|
|
541
|
+
| `ts-void-zero` | warning | yes | pi-lens | void 0 for undefined - use undefined directly |
|
|
542
|
+
| `ts-while-index-length` | warning | no | pi-lens | while loop with index < length - consider for-of or array methods |
|
|
543
|
+
| `unchecked-throwing-call` | error | no | pi-lens | $CALL without try/catch — throws on invalid input |
|
|
544
|
+
| `weak-rsa-key` | error | no | pi-lens | Weak RSA key size — use at least 2048 bits |
|
|
536
545
|
|
|
537
546
|
## Disabled rules
|
|
538
547
|
|
|
@@ -540,36 +549,36 @@ Shipped but not dispatched (in `rules-disabled/`); enable by moving into `rules/
|
|
|
540
549
|
|
|
541
550
|
### Go (2)
|
|
542
551
|
|
|
543
|
-
| Rule | Severity | Source | Description |
|
|
544
|
-
|
|
545
|
-
| `gorm-unbounded-preload` | warning | pi-lens | Unbounded GORM Preload detected. Consider adding a limit using Preload with a scoping function. |
|
|
546
|
-
| `shadow-err-variable` | warning | pi-lens | Error variable 'err' shadowed in inner scope; original error reference is lost |
|
|
552
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
553
|
+
|---|---|---|---|---|
|
|
554
|
+
| `gorm-unbounded-preload` | warning | no | pi-lens | Unbounded GORM Preload detected. Consider adding a limit using Preload with a scoping function. |
|
|
555
|
+
| `shadow-err-variable` | warning | no | pi-lens | Error variable 'err' shadowed in inner scope; original error reference is lost |
|
|
547
556
|
|
|
548
557
|
### JavaScript (5)
|
|
549
558
|
|
|
550
|
-
| Rule | Severity | Source | Description |
|
|
551
|
-
|
|
552
|
-
| `constructor-super-js` | error | pi-lens | super() must be called in derived class constructors. |
|
|
553
|
-
| `no-hardcoded-secrets-js` | error | pi-lens | Hardcoded secret detected — use process.env instead |
|
|
554
|
-
| `no-this-in-static-js` | error | pi-lens | Unexpected this in a static method — static methods have no instance context |
|
|
555
|
-
| `prefer-string-raw-js` | hint | pi-lens | Use String.raw for string literals with many backslashes |
|
|
556
|
-
| `unchecked-sync-fs-js` | warning | pi-lens | Unchecked sync fs call — throws on missing file or permission error |
|
|
559
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
560
|
+
|---|---|---|---|---|
|
|
561
|
+
| `constructor-super-js` | error | no | pi-lens | super() must be called in derived class constructors. |
|
|
562
|
+
| `no-hardcoded-secrets-js` | error | no | pi-lens | Hardcoded secret detected — use process.env instead |
|
|
563
|
+
| `no-this-in-static-js` | error | no | pi-lens | Unexpected this in a static method — static methods have no instance context |
|
|
564
|
+
| `prefer-string-raw-js` | hint | no | pi-lens | Use String.raw for string literals with many backslashes |
|
|
565
|
+
| `unchecked-sync-fs-js` | warning | no | pi-lens | Unchecked sync fs call — throws on missing file or permission error |
|
|
557
566
|
|
|
558
567
|
### Python (1)
|
|
559
568
|
|
|
560
|
-
| Rule | Severity | Source | Description |
|
|
561
|
-
|
|
562
|
-
| `no-method-field-name-collision` | warning | pi-lens | Methods and field names should not differ only by capitalization |
|
|
569
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
570
|
+
|---|---|---|---|---|
|
|
571
|
+
| `no-method-field-name-collision` | warning | no | pi-lens | Methods and field names should not differ only by capitalization |
|
|
563
572
|
|
|
564
573
|
### TypeScript (8)
|
|
565
574
|
|
|
566
|
-
| Rule | Severity | Source | Description |
|
|
567
|
-
|
|
568
|
-
| `constructor-super` | error | pi-lens | super() must be called in derived class constructors. |
|
|
569
|
-
| `no-hardcoded-secrets` | error | pi-lens | Hardcoded secret detected — use process.env instead |
|
|
570
|
-
| `no-param-reassign` | warning | pi-lens | Do not reassign function parameters — create a new variable instead |
|
|
571
|
-
| `no-process-env` | warning | pi-lens | Avoid direct process.env access for secrets — use config service |
|
|
572
|
-
| `no-shadow` | warning | pi-lens | Variable '$NAME' shadows a variable from an outer scope |
|
|
573
|
-
| `no-this-in-static` | error | pi-lens | Unexpected this in a static method — static methods have no instance context |
|
|
574
|
-
| `prefer-string-raw` | hint | pi-lens | Use String.raw for string literals with many backslashes |
|
|
575
|
-
| `unchecked-sync-fs` | warning | pi-lens | Unchecked sync fs call — throws on missing file or permission error |
|
|
575
|
+
| Rule | Severity | Fixable | Source | Description |
|
|
576
|
+
|---|---|---|---|---|
|
|
577
|
+
| `constructor-super` | error | no | pi-lens | super() must be called in derived class constructors. |
|
|
578
|
+
| `no-hardcoded-secrets` | error | no | pi-lens | Hardcoded secret detected — use process.env instead |
|
|
579
|
+
| `no-param-reassign` | warning | no | pi-lens | Do not reassign function parameters — create a new variable instead |
|
|
580
|
+
| `no-process-env` | warning | no | pi-lens | Avoid direct process.env access for secrets — use config service |
|
|
581
|
+
| `no-shadow` | warning | no | pi-lens | Variable '$NAME' shadows a variable from an outer scope |
|
|
582
|
+
| `no-this-in-static` | error | no | pi-lens | Unexpected this in a static method — static methods have no instance context |
|
|
583
|
+
| `prefer-string-raw` | hint | no | pi-lens | Use String.raw for string literals with many backslashes |
|
|
584
|
+
| `unchecked-sync-fs` | warning | no | pi-lens | Unchecked sync fs call — throws on missing file or permission error |
|