Rules
Directory generated from @critiq/rules metadata. Browse by language and framework, then open a rule for full rationale and remediation.
#Summary
The OSS catalog is built for deterministic code review. These rules aim to catch the kinds of issues that slip through normal review and turn into production incidents: security flaws, correctness bugs, performance regressions, and maintainability problems with real operational cost.
Critiq keeps the catalog intentionally high-signal. The rules are explicit, explainable, and fixture-backed, and they report findings with concrete evidence instead of vague heuristics or style-only noise.
#Directory
Pick a language to see framework-scoped rules (when the rule id encodes a stack like Express, Spring, or Rails), or stay on All languages to search the full registry.
Showing 1243 of 1243 rules
ts.security.missing-request-timeout-or-retryMediumDEPRECATED: This rule is consolidated into ts.correctness.missing-timeout-on-external-call. External calls should define timeout, cancellation, or retry behavior.
java.correctness.noallocation-method-creates-objectMediumA method annotated @NoAllocation creates heap objects via `new`.
java.correctness.default-package-spring-scanHighSpring Boot applications in the default package cannot be scanned properly and will fail at runtime.
ruby.bug-risk.to-json-without-argumentMediumCalling `to_json` with no arguments was deprecated in older Ruby JSON versions. The method now requires an argument (or uses the JSON generator state from the wrapper).
rust.correctness.step-by-zeroCriticalCalling `.step_by(0)` on an iterator panics when the iterator is consumed.
ruby.bug-risk.equal-instead-of-equalHighThe `object_id` method result is compared using `==` instead of the `equal?` method. Using `equal?` is the idiomatic way to test object identity in Ruby.
php.correctness.abstract-method-with-bodyCriticalAbstract methods must not have a body
ruby.bug-risk.undefined-action-filterHighA `before_action` references a method that is not defined in the current controller scope.
ruby.bug-risk.callback-overrideHighThe same callback method name is used across multiple `after_commit` or `after_*_commit` declarations. Only the last declaration takes effect.
ts.security.nestjs-missing-global-validation-pipeMediumNest bootstrap entries should register `ValidationPipe` globally when controllers parse bodies or DTOs.
ts.security.jwt-not-revokedMediumExpress JWT middleware should check revocation state when bearer tokens can be invalidated early.
ts.react.no-missing-error-boundaryMediumNext.js route segments should declare an error.tsx handler so async and client failures surface safely.
rust.testing.ignore-without-ticket-referenceMedium`#[ignore]` without a nearby ticket reference or reason makes the test easy to forget.
ts.react.no-img-missing-alt-textHighJSX images need a meaningful `alt` value, or an explicit empty string when the image is decorative.
ts.security.apollo-server-missing-query-limitsMediumApollo Server bootstrap should declare validation rules or plugins that bound query cost.
php.correctness.missing-return-statementCriticalFunctions and methods with non-void return types should contain at least one return statement.
ruby.security.rails-link-to-blank-without-noopenerMediumExternal links opened in a new tab should set rel noopener or noreferrer.
ts.react.no-target-blank-without-relHighOpening links in a new tab without rel=noopener lets the destination page access window.opener.
ts.correctness.constant-conditionMediumFlow-control conditions should not resolve to a constant boolean value.
ruby.bug-risk.ambiguous-block-associationHighA block is attached to a method call that already has arguments, but the intended receiver of the block is ambiguous. Add parentheses to clarify whether the block belongs to the outer or inner method.
ruby.bug-risk.ambiguous-operator-argumentHighThe first argument to a method call starts with a unary operator, which can be ambiguous. For example, `foo +bar` could be parsed as `foo(+bar)` or `foo() + bar` by readers.
ruby.bug-risk.ambiguous-regexp-literalHighA regex literal `/pattern/` is used as a method argument without parentheses. This can be confused with the division operator by readers.
sql.style.ambiguous-distinctHighDISTINCT with multiple columns including computed expressions may be ambiguous
rust.security.missing-regex-anchorHighRegex patterns compiled with `Regex::new` should be anchored to avoid unintended substring matches, which can lead to security bypasses.
java.correctness.annotation-check-always-falseHighChecking for an annotation at runtime that is retained only at SOURCE or CLASS level will always return false.
ts.security.express-missing-helmetMediumExpress apps should use Helmet or equivalent header hardening middleware.
java.correctness.string-format-arg-mismatchCriticalThe number of format specifiers in the format string does not match the number of arguments provided.
cfn.maintainability.arns-should-use-correctly-placed-pseudo-parametersLowArns should use correctly placed pseudo parameters
ts.correctness.array-callback-missing-returnMediumArray iteration callbacks with block bodies should return a value when required.
java.correctness.array-compared-to-non-arrayMediumComparing an array variable to a non-array value (string literal, number, boolean) is almost certainly a logic bug.
java.correctness.array-index-boundsCriticalAn array, list, or string is accessed at length()/size(), which is always one past the last valid index.
ts.correctness.array-sort-without-compareLowProvide a compare function when sorting non-string arrays.
php.correctness.incomplete-arrow-functionCriticalArrow functions require => body
java.correctness.assertion-in-productionLowThe `assert` keyword in Java is disabled at runtime. Do not use it for argument validation or precondition checks in production code.
java.correctness.unterminated-assertion-chainHighCalls to `assertThat()` or `verify()` must include a chained assertion (e.g. `.isEqualTo()`, `.isGreaterThan()`) or the test assertion is silently ignored.
go.correctness.unused-append-resultHighappend returns a new slice; dropping the result loses the appended element.
php.correctness.assign-to-non-lvalueCriticalAssignment target must be an lvalue
ts.correctness.assignment-to-import-bindingMediumCode assigns to or updates a symbol declared by an import.
ts.correctness.assignment-to-exportsHighDetected direct assignment to the `exports` variable.
ts.correctness.assignment-in-conditionLowControl-flow conditions should compare values, not perform assignments.
ruby.bug-risk.class-name-should-be-stringMediumThe `class_name` option on associations should be a string literal, not a constant reference.
ts.correctness.async-promise-executorMediumThe executor passed to `new Promise` is declared `async`.
rust.correctness.hash-unit-valueCriticalHashing a unit value `()` via `Hash::hash` is a no-op — all unit values hash identically.
rust.correctness.transmute-ptr-to-refCriticalTransmuting `*const T` to `&T` creates a reference with no lifetime guarantees.
rust.correctness.transmute-ref-to-ptrCriticalTransmuting `&T` to `*const T` is unnecessary — use `as` casts instead.
rust.correctness.transmute-ptr-to-ptrCriticalTransmuting `*const T` to `*mut T` is safer through a reference cast.
php.correctness.attribute-on-propertyHighAn attribute that does not target properties should not be applied to a property declaration.
cfn.correctness.attributedefinitions-keyschemas-mismatchHighAttributedefinitions / keyschemas mismatch
php.correctness.attribute-on-closureHighAttributes are not valid on closures
php.correctness.attribute-on-functionHighAttributes are not valid on functions
php.correctness.attribute-on-class-constantCriticalAttributes cannot target class constants
go.bug-risk.compound-assignment-misuseCriticalThe expression uses the same variable on both sides of a compound assignment (e.g. `x += x + y`), which simplifies to a non-obvious result (`2x + y`). This may indicate a typo or unintentional logic.
ts.next.server-action-missing-local-authHighServer Actions that mutate state must validate sessions locally before reaching privileged sinks.
ts.security.frontend-only-authorizationHighBackend routes should enforce authorization directly instead of relying on frontend gating alone.
cfn.maintainability.availability-zone-parameters-should-not-be-hardcodedMediumAvailability zone parameters should not be hardcoded
ruby.bug-risk.symbol-boolean-nameHigh`:true` and `:false` symbols are usually typos for boolean literals.
ts.angularjs.no-controllerHigh`controller()` method on an AngularJS module is discouraged in favor of component-based architecture.
rust.quality.clone-on-double-referenceMediumCalling `.clone()` on `&&T` clones the inner `&T`, not the underlying `T`.
rust.quality.map-followed-by-countMediumCalling `.map()` before `.count()` has no effect on the count result.
rust.quality.replace-same-pattern-and-replacementMediumCalls to `.replace()` or `.replacen()` with identical pattern and replacement have no effect.
rust.quality.ordered-iteration-on-unorderedMediumCalling `.sorted()` on an unordered collection like HashMap or HashSet is misleading.
ts.quality.no-banned-typeMediumUsing the `any` type defeats TypeScript's type safety guarantees.
ts.security.no-arguments-calleeMediumDo not read `arguments.callee` or `arguments.caller` in functions.
ruby.bug-risk.end-in-methodHigh`END` registers a block to run at program exit. Using it inside a method is invalid and the block will never execute.
ts.security.no-javascript-urlMedium`javascript:` URLs can execute arbitrary script when used as navigation targets in href, src, or action attributes.
ts.random.no-math-random-in-coreMediumCore code should not depend on nondeterministic random generation.
ts.correctness.new-expression-with-requireHighDo not use `new` with the result of `require()`. The `require()` return value is not a constructor and this pattern is almost always a bug.
ts.runtime.no-process-exitMediumDo not call `process.exit` from application logic; reserve termination for CLI entrypoints.
ruby.bug-risk.return-in-ensureHighA `return` inside an `ensure` block discards any exception that was raised, silently swallowing errors.
rust.quality.size-of-val-on-referenceMedium`std::mem::size_of_val(&ref)` returns the size of the reference itself, not the pointed-to value.
rust.security.unsafe-remove-dir-allHigh`remove_dir_all` is vulnerable to TOCTOU (time-of-check-time-of-use) races when the directory tree contains symbolic links.
rust.quality.option-env-unwrapMediumCalling `.unwrap()` on `option_env!()` panics at compile-time if the environment variable is unset.
ts.security.no-with-statementHigh`with` statements make binding resolution unpredictable and are disallowed in strict mode.
ts.correctness.namespace-import-unexported-nameHighNamespace import member access should reference names exported by the target module.
ruby.security.rails-skip-validationHighMethods such as update_column and touch persist data without running model validations.
rust.security.actix-wildcard-cors-with-credentialsHigh`actix_cors` configurations must not combine `allow_any_origin` with `supports_credentials`.
ts.security.manual-html-sanitizationMediumHand-rolled HTML escaping and sanitization should be replaced with vetted sanitizers or safe rendering paths.
ruby.bug-risk.allow-blank-with-delegateMediumUse `allow_nil` instead of `allow_blank` in `delegate` declarations.
py.security.drf-allow-any-defaultHighDjango REST Framework APIs should default to authenticated permission classes instead of `AllowAny`.
py.security.drf-allow-any-unsafe-methodHighDRF views that accept POST, PUT, PATCH, or DELETE should not declare `AllowAny` unless the endpoint is intentionally public.
java.security.spring-actuator-health-details-alwaysMedium`management.endpoint.health.show-details=always` (or YAML equivalent) publishes detailed health payloads to any caller, which often leaks dependency and infrastructure facts.
ts.quality.no-ambiguous-abbreviationsLowAmbiguous abbreviated names in exported APIs reduce readability and onboarding speed.
java.security.android-world-readable-modeHighContext files and shared preferences must not use MODE_WORLD_READABLE or MODE_WORLD_WRITABLE.
ts.quality.no-temporal-couplingLowAPIs that require callers to invoke methods in strict hidden order are fragile.
ts.react.no-index-as-key-in-dynamic-listMediumUsing the map index as a React key breaks reconciliation when lists reorder, filter, or insert items.
ts.performance.no-array-spread-in-hot-loopHighArray spread or repeated concat in loops allocates per iteration and scales poorly.
py.correctness.assert-outside-testLowassert statements should only appear in test files
ruby.bug-risk.assignment-in-conditionMediumExtract assignments from if, unless, while, and until conditions.
ts.security.non-literal-fs-filenameMediumDirect filesystem read APIs should not consume request- or upload-controlled filenames.
py.correctness.bare-exceptHighBare exception handlers catch all errors and hide root causes.
py.correctness.useless-returnLowA bare return at the end of a function adds no value and should be removed
ts.quality.no-barrel-file-cycleMediumCycles involving barrel files obscure ownership and complicate module boundaries.
go.security.bind-all-interfacesMediumGo network services should avoid explicit binds to `0.0.0.0`, `::`, or `[::]` unless public exposure is intentional and controlled.
py.security.bind-all-interfacesMediumPython network services should avoid explicit binds to `0.0.0.0` or `::` unless public exposure is intentional and controlled.
rust.security.bind-all-interfacesMediumRust network services should avoid explicit binds to `0.0.0.0`, `::`, or `[::]` unless public exposure is intentional and controlled.
ts.security.bind-to-all-interfacesMediumNetwork-facing services should not explicitly bind to every interface unless public exposure is intentional and protected.
rust.correctness.block-on-in-asyncHighCalling block_on from async code can deadlock the runtime.
ts.security.no-alert-confirm-promptMediumDo not call `alert`, `confirm`, or `prompt` in application code.
rust.security.warp-blocking-or-panic-in-async-handlerMediumWarp filters and handlers run on the async runtime; avoid `std::fs`, `thread::sleep`, and `unwrap` on request paths without `spawn_blocking` or proper errors.
rust.testing.thread-sleep-in-unit-testLowLong blocking sleeps (>100ms) in narrow unit tests slow CI and hide synchronization bugs.
rust.correctness.thread-sleep-in-asyncMediumstd::thread::sleep blocks the executor thread inside async code.
ts.quality.no-boolean-parameter-trapMediumPublic APIs with multiple boolean flags reduce readability and increase change risk.
php.security.laravel-sensitive-csrf-exclusionHighWildcard CSRF exclusions should not cover account, billing, admin, password, or profile endpoints.
ts.vue.no-browser-globals-in-createdHighThe created and beforeCreate hooks may run on the server during SSR; accessing window or document there causes errors.
ts.security.browser-token-storageMediumAccess and session tokens should not be stored in long-lived browser storage.
ruby.bug-risk.each-with-object-immutable-argHigheach_with_object is called with a numeric literal, nil, or boolean. Mutations inside the block are silently lost because these types are immutable.
ts.react.no-cascaded-effect-fetchesMediumReact effects should not serialize independent fetches that can run in parallel or move server-side.
php.correctness.case-insensitive-defineMediumThe third argument to define() for case-insensitive constants is deprecated.
rust.quality.fn-ptr-to-non-pointer-castMediumCasting a function pointer to an integer type discards pointer metadata and is unsafe.
ruby.bug-risk.heredoc-method-orderHigh`<<-SQL.squish` parses as calling `.squish` on the delimiter string `'SQL'`, not on the heredoc body. Wrap the heredoc in parentheses: `(<<-SQL).squish`.
ruby.bug-risk.circular-argument-referenceHighDefault argument values that reference themselves are circular and always nil.
php.correctness.trait-class-constantCriticalAvoid class constants inside traits
py.security.ftp-usageHighFTP transmits credentials and data without encryption
py.security.insecure-http-transportHighPython outbound requests should use HTTPS, not plain HTTP, when calling external services.
py.security.command-execution-with-request-inputCriticalPython process execution helpers must not receive request-controlled arguments.
rust.quality.fn-ptr-null-comparisonMediumComparing a function pointer to null after casting to an integer is error-prone and unnecessary.
php.correctness.function-comparisonLowComparing functions or callables with equality operators is unreliable.
ruby.performance.no-static-size-computationMediumCalling `.count`, `.size`, or `.length` on a static array or hash literal computes a value known at parse-time. Prefer assigning the literal to a constant or using the literal directly.
ts.logging.no-console-errorMediumRoute error logs through the project logger.
ts.logging.no-console-logLowUse the project logger instead of console.log.
java.correctness.return-in-finallyMediumreturn, break, continue, and throw in finally alter normal flow.
go.performance.avoid-large-loop-copyMediumRanging over a slice of large fixed-size arrays copies each element by value.
go.performance.avoid-large-range-copyMediumRanging over a large fixed-size array copies the entire array value per iteration.
py.security.django-csrf-exempt-state-changingHighBrowser-facing Django views that change state should remain CSRF-protected unless they are explicitly token-authenticated APIs.
ruby.bug-risk.error-inherits-exceptionHighErrors should inherit from StandardError so routine rescue handlers behave predictably.
ts.react.no-static-element-with-synthetic-handlersMediumNon-interactive elements that listen for pointer or key events without a widget role usually hide custom interaction that needs explicit semantics.
go.correctness.defer-in-loopMediumdefer inside a loop holds resources until the surrounding function returns.
go.security.insecure-temp-fileMediumGo code should use `os.CreateTemp` and `os.MkdirTemp` instead of the deprecated `ioutil.TempFile` / `ioutil.TempDir` helpers.
ts.angularjs.no-deprecated-cookie-storeHigh`$cookieStore` is a deprecated AngularJS service replaced by `$cookies`.
ts.angularjs.no-deprecated-http-success-errorHigh`.success()` and `.error()` on `$http` promise are deprecated in favor of `.then()` and `.catch()`.
ruby.bug-risk.deprecated-big-decimal-newHighBigDecimal.new is deprecated since BigDecimal 1.3.3 and removed in 2.0.0. Use BigDecimal() instead.
ruby.bug-risk.deprecated-class-methodsHighFile.exists?, Dir.exists?, and iterator? are deprecated. Use File.exist?, Dir.exist?, and block_given? instead.
ts.angularjs.no-deprecated-directive-replaceHighThe `replace` property in AngularJS directive definitions is deprecated and removed in AngularJS 1.7+.
ts.react.no-deprecated-is-mountedHighisMounted is a legacy anti-pattern that leads to stale references and masks async lifecycle bugs.
ruby.bug-risk.deprecated-openssl-apiHighOpenSSL::Cipher and OpenSSL::Digest constant APIs are deprecated; prefer string algorithm names.
java.security.insecure-ssl-contextHigh`SSLContext.getInstance` should not request SSL, SSLv2, SSLv3, TLSv1.0, or TLSv1.1.
ruby.bug-risk.deprecated-uri-escapeLowUse CGI.escape, URI.encode_www_form_component, or Addressable instead.
ruby.bug-risk.deprecated-uri-regexpMediumURI.regexp is deprecated and removed in modern Ruby releases.
ts.vue.no-deprecated-keycodes-configHighVue.config.keyCodes was removed in Vue 3. Use key alias modifiers directly instead.
ts.config.no-process-env-outside-configMediumKeep environment variable access inside config modules.
ts.security.insecure-helmet-hardening-optionsMediumHelmet should keep nosniff, HSTS, DNS prefetch control, Expect-CT, and referrer policy enabled unless another gateway enforces them.
py.security.jinja-autoescape-disabledMediumJinja2 environments should keep autoescaping enabled for HTML rendering contexts.
java.security.spring-csrf-globally-disabledHighDisabling CSRF globally is unsafe for cookie-backed browser sessions unless the app is clearly hardened as a stateless API (for example OAuth2 resource server with stateless sessions).
ruby.bug-risk.division-by-zeroMediumDo not divide by literal zero.
py.security.django-mark-safeHighDjango responses should avoid `mark_safe` when content can include untrusted input.
ruby.bug-risk.duplicate-case-conditionsHighA case statement has two identical when conditions. This is usually a copy-paste mistake that causes the second matching branch to never execute.
ruby.bug-risk.duplicate-elsif-blockHighAn if-elsif chain has two consecutive elsif blocks with identical conditions. This is likely a copy-paste error that causes the second matching branch to never execute.
php.correctness.duplicate-array-keyMediumRepeated keys in an array literal overwrite earlier entries.
py.correctness.duplicate-dict-keyMediumRepeated keys in a dict literal overwrite earlier entries.
ruby.bug-risk.duplicate-hash-keysMediumRemove duplicate symbol or string keys in the same hash literal.
ts.correctness.duplicate-exportHighModule should not export the same name more than once.
php.correctness.duplicate-union-typeCriticalAvoid duplicate types in union declarations
php.correctness.invalid-dynamic-constant-fetchCriticalAvoid dynamic class constant fetch
py.security.dynamic-code-executionHighPython services should not execute runtime-generated code via `eval` or `exec`.
php.security.no-dynamic-evalHighDo not execute runtime-generated PHP via eval, string assert, or create_function.
ruby.security.dynamic-code-executionHighDo not execute runtime-generated Ruby via eval, exec, or *_eval helpers.
rust.security.sqlx-diesel-raw-interpolated-queryHighDo not pass `format!(...)` (or equivalent string concatenation) into `sqlx::query` or `diesel::sql_query` sinks.
py.security.insecure-cipher-modeHighECB mode is deterministic and reveals patterns in plaintext
ruby.bug-risk.else-without-rescueHighA begin block contains an else clause but no rescue clause. In Ruby, else in a begin block only runs when no exception is raised, which is useless without rescue.
php.correctness.empty-bracket-array-accessMediumReading from an array with `$value[]` appends null and returns the new element.
ruby.bug-risk.empty-ensure-blockHighAn ensure block has no body. Either add cleanup code or remove the ensure clause.
ruby.bug-risk.empty-expressionHighEmpty parentheses () are used as an expression, which always evaluates to nil and is almost always a mistake.
ruby.bug-risk.empty-interpolationHighString interpolation with nothing inside the braces #{} produces nothing and is always a mistake.
java.security.unsafe-jackson-deserializationCriticalJackson `ObjectMapper` should not call `enableDefaultTyping` or `activateDefaultTyping`, and `@JsonTypeInfo(use = Id.CLASS|MINIMAL_CLASS)` should not be applied without an allowlist.
py.security.subprocess-shell-enabledHighPython process execution should avoid `shell=True` unless shell interpretation is explicitly required and tightly controlled.
ts.security.fastify-excessive-body-limitMediumFastify applications should not disable body limits or configure unusually large defaults without compensating controls.
php.performance.expensive-loop-conditionMediumFunctions like count() and strlen() inside loop conditions run on every iteration.
ts.performance.no-expensive-sort-in-render-pathMediumSorting or heavy transforms in React render paths should be memoized or precomputed.
rust.quality.explicit-self-assignmentMediumAssigning a value to itself is a no-op and likely indicates a copy-paste bug.
ts.security.exposed-directory-listingMediumDirectory listing middleware should not be enabled on public paths without a deliberate review.
go.security.http-dir-path-traversalHigh`http.Dir("/")` or `http.Dir("\\")` used with `http.FileServer` or `http.StripPrefix` exposes the entire filesystem, enabling directory traversal.
ruby.bug-risk.else-followed-by-expressionHighAn expression follows else on the same line. This is almost always a typo for elsif.
go.security.template-unescaped-request-valueHigh`template.HTML`, `template.JS`, and `template.CSS` should not wrap request-derived strings unless they were sanitized first.
py.security.flask-unsafe-html-outputHighFlask responses should not bypass escaping when interpolating `request` input into HTML helpers or template strings.
ruby.bug-risk.flip-flop-operatorHighThe flip-flop operator (`..`/`...` in conditionals) is deprecated since Ruby 2.6 and has confusing evaluation semantics.
py.correctness.global-statementMediumUsing global variables is an anti-pattern that can lead to hard-to-debug side effects
ts.security.hardcoded-auth-secretCriticalJWT, session, and strategy secrets should not be embedded directly in source code.
py.security.hardcoded-credentialsCriticalPython source should not embed static secrets such as API keys, tokens, or passwords in plain text.
py.security.hardcoded-temp-directoryMediumTemporary paths should use tempfile module instead of string literals
ts.quality.no-hidden-side-effect-importMediumBare side-effect imports outside setup files make module behavior implicit.
rust.security.weak-crypto-importMediumProduction Rust code should not import `md5`, `sha1`, `des`, or `rc4` for security-sensitive purposes.
go.security.weak-crypto-importMediumProduction Go code should not import `crypto/md5`, `crypto/sha1`, `crypto/des`, or `crypto/rc4` for security-sensitive purposes.
ts.next.no-document-import-outside-custom-documentHighnext/document should only be imported in pages/_document.(ts|tsx) or src/pages/_document.(ts|tsx).
ts.next.no-head-import-in-custom-documentHighpages/_document should use next/document's Head component, not next/head.
php.security.unsafe-include-with-user-inputHighInclude and require statements must not load files from request-derived or tainted path values.
ts.react.no-derived-state-from-propsMediumDuplicating props into useState without an explicit sync strategy hides updates and confuses controlled versus uncontrolled boundaries.
ts.react.no-bind-in-jsx-propsMediumCreating `function` handlers or `.bind()` calls inside JSX forces new function identities every render and makes memoized children re-render unnecessarily.
java.security.insecure-cipher-modeHighJava `Cipher.getInstance` should not request ECB mode or legacy algorithms like DES and RC4.
py.security.insecure-cipherHighWeak ciphers like DES, ARC2, ARC4, and Blowfish should not be used
ts.security.express-insecure-listenHighApplication servers should terminate TLS locally or document trusted edge termination before exposing plain HTTP listeners.
ruby.security.insecure-json-loadHighPrefer `JSON.parse` over `JSON.load`, `JSON.restore`, or permissive Oj/MultiJson loaders.
py.security.mako-insecure-templatesHighMako templates with empty default_filters or disable_unicode=True are vulnerable to XSS
php.security.insecure-mail-or-file-transportMediumOutbound mail/file transfer code should not rely on plaintext transport endpoints for sensitive traffic.
py.security.insecure-ssl-versionHighSSLv2, SSLv3, and TLSv1 are known to be vulnerable to protocol-level attacks
py.security.insecure-temp-fileMediumPython temporary files should not use `mktemp` or `tempnam` helpers that create race-prone filenames.
py.security.insecure-urllib-methodMediumurllib.urlopen() and urlretrieve() do not validate TLS certificates by default
py.security.insecure-xml-parserHighStandard library XML parsers are vulnerable to XXE and entity expansion attacks
ruby.security.io-shell-commandCriticalIO.read and related IO class methods can spawn subprocesses when the path starts with a pipe.
ts.performance.no-json-parse-stringify-cloneMediumJSON stringify/parse cloning is expensive and loses type fidelity for rich objects.
ruby.security.kernel-openCriticalDo not use `Kernel.open` with a leading pipe, which spawns a shell command.
ts.performance.no-large-object-spread-in-loopMediumObject spread inside loops creates repeated allocations and can degrade throughput.
ts.security.information-leakageHighLogs, stdout or stderr, and direct response sinks should not expose sensitive fields or internal diagnostic detail.
ts.security.insecure-password-hash-configurationHighPassword hashing should not use `argon2i` or `argon2d` when safer modern modes are available.
ts.react.no-legacy-lifecycleMediumLegacy class lifecycle hooks are brittle in strict mode and block migration toward modern React patterns.
ts.react.no-string-refMediumString refs rely on older React behavior that is harder to analyze and less reliable than callback or object refs.
ts.testing.no-legacy-test-waiterHighDeprecated test waiting APIs like wait(), waitForElement(), and waitForDomChange() should be replaced with waitFor().
java.testing.http-client-in-unit-testMediumHttpClient/URL/RestTemplate usage in unit tests should target fakes or embedded servers.
py.testing.real-network-in-unit-testMediumrequests/httpx/urllib calls in unit tests should be doubled or recorded.
ruby.testing.real-network-in-unit-testMediumNet::HTTP, Faraday, or HTTParty usage in specs should be doubled or recorded.
go.testing.real-network-in-unit-testMediumUnit tests should not dial the real network; prefer fakes or httptest servers.
rust.testing.real-network-in-unit-testMediumreqwest usage in tests should target local servers or fakes.
py.security.insecure-crypto-importMediumLow-level cryptography.hazmat and pycrypto imports bypass safer high-level APIs
php.security.laravel-unsafe-mass-assignmentHighEloquent writes should not use `$request->all()` or fully unguarded models for sensitive records.
ts.react.no-uncontrolled-to-controlled-inputMediumCombining value with defaultValue leads to ambiguous ownership between React and the DOM.
ruby.bug-risk.mixed-regex-capturesHighA regex literal contains both named captures (?<name>) and numbered captures (parenthesized groups without names). Mixing these is confusing and can lead to errors.
ruby.bug-risk.duplicate-method-definitionsHighTwo def declarations with the same name exist in the same class, module, or top-level scope. The second definition silently overwrites the first.
ruby.bug-risk.multiple-rescues-for-same-exceptionHighA begin-rescue block rescues the same exception class more than once. The second rescue clause will never match since the first handles it first.
py.correctness.dangerous-mutable-defaultHighMutable defaults in function signatures retain state across calls.
ts.security.no-assign-mutable-exportLowShared module state should not be exported with `let`/`var` or reassigned after export.
ts.vue.no-computed-mutationHighComputed properties should not produce side effects such as assignments or array mutations.
ts.performance.no-n-plus-one-await-in-mapHighPer-item awaits inside map-like flows often create avoidable latency and fan-out bottlenecks.
php.correctness.nested-function-declarationLowDeclaring functions inside other functions is discouraged and hard to test.
php.correctness.nested-switchLowSwitch statements nested inside other switch statements are hard to follow.
go.performance.no-regex-construction-in-loopMediumPerformance hygiene signal for go sources.
java.performance.no-regex-construction-in-loopMediumPerformance hygiene signal for java sources.
php.performance.no-regex-construction-in-loopMediumPerformance hygiene signal for php sources.
py.performance.no-regex-construction-in-loopMediumPerformance hygiene signal for python sources.
ruby.performance.no-regex-construction-in-loopMediumPerformance hygiene signal for ruby sources.
rust.performance.no-regex-construction-in-loopMediumPerformance hygiene signal for rust sources.
go.performance.no-sync-fs-in-request-pathHighPerformance hygiene signal for go sources.
java.performance.no-sync-fs-in-request-pathHighPerformance hygiene signal for java sources.
php.performance.no-sync-fs-in-request-pathHighPerformance hygiene signal for php sources.
py.performance.no-sync-fs-in-request-pathHighPerformance hygiene signal for python sources.
ruby.performance.no-sync-fs-in-request-pathHighPerformance hygiene signal for ruby sources.
rust.performance.no-sync-fs-in-request-pathHighPerformance hygiene signal for rust sources.
go.performance.no-unbounded-concurrencyMediumPerformance hygiene signal for go sources.
java.performance.no-unbounded-concurrencyMediumPerformance hygiene signal for java sources.
php.performance.no-unbounded-concurrencyMediumPerformance hygiene signal for php sources.
py.performance.no-unbounded-concurrencyMediumPerformance hygiene signal for python sources.
ruby.performance.no-unbounded-concurrencyMediumPerformance hygiene signal for ruby sources.
rust.performance.no-unbounded-concurrencyMediumPerformance hygiene signal for rust sources.
rust.quality.non-utf8-literal-in-from-utf8-uncheckedHighPassing a byte string literal with non-UTF-8 sequences to `str::from_utf8_unchecked` creates invalid UTF-8 strings that violate Rust's safety assumptions about `&str`.
ts.vue.no-server-env-in-client-hooksHighClient-side lifecycle hooks should not reference process.server, process.client, or process.browser.
ruby.security.rails-open-redirectMediumRedirect helpers must not send users to hosts or paths derived directly from request input without validation.
ruby.security.rails-output-unsafeMediumDo not use html_safe, raw, or safe_concat to bypass escaping.
rust.quality.isize-usize-overflowHighUsing `isize::MAX` or `usize::MAX` in a range expression can cause overflow.
py.correctness.broad-exception-handlerHighCatching `Exception` or `BaseException` makes error handling too broad.
go.security.weak-file-permissionHigh`os.WriteFile` or `os.OpenFile` with permission bits above `0600` (owner read/write) may expose sensitive data to other users on the system.
rust.security.manual-error-type-idHighImplementing `fn type_id` inside `impl Error for` blocks leaks internal type details and breaks trait object safety guarantees.
ts.vue.no-reserved-key-overwriteMediumVue instance reserved keys ($el, $data, $props, etc.) should not be overwritten to prevent framework contract violations.
rust.security.panic-in-async-handlerMediumAsync request handlers should propagate errors instead of panicking or unwrapping Results.
rust.security.rocket-panic-prone-request-handlerMediumRocket route handlers should not `unwrap`, `expect`, or otherwise panic on values derived from the HTTP request.
go.performance.avoid-large-param-copyMediumFunction parameters that are large fixed-size arrays (>80 bytes) cause excessive copying when passed by value.
ts.security.express-permissive-cookie-configMediumExpress session cookies should not explicitly opt into cross-site or wildcard-style scope.
py.security.fastapi-insecure-corsHighFastAPI `CORSMiddleware` should not combine wildcard origins, methods, or headers with `allow_credentials=True`.
ts.security.permissive-file-permissionsHighFiles that can carry user or security data should not be created with world-accessible modes.
rust.security.axum-insecure-cors-with-credentialsHighDo not pair wildcard or `very_permissive` origin policies with credentialed CORS or private-network access in `tower-http`.
java.security.insecure-network-protocolHighURL/URI literals should not use `ftp://`, `telnet://`, or `jar:http://`.
ruby.security.plaintext-password-in-callbackHighDo not pass literal passwords to http_basic_authenticate_with.
ts.react.no-positive-tabindexMediumPositive `tabIndex` values create a custom keyboard order that is fragile and usually less accessible than DOM order.
java.correctness.possible-null-access-exceptionCriticalDereferencing a variable in a catch or finally block may throw a NullPointerException if the variable was assigned from a failed operation.
java.correctness.possible-null-accessCriticalChaining a method call on a `.get()`, `.poll()`, or `.peek()` result may throw a NullPointerException.
rust.security.insecure-temp-fileMediumTemporary file creation should use secure helpers with random suffixes and restrictive permissions.
php.security.insecure-session-id-generationHighsession_id must not be set from weak hash helpers, uniqid, or request-derived values.
ts.security.predictable-token-generationHighTokens, reset links, and session secrets should be generated from cryptographically strong randomness.
ts.quality.no-primitive-obsession-in-domain-modelLowDomain-facing APIs with many primitive parameters should use richer value objects.
ruby.security.rails-http-digest-authHighauthenticate_with_http_digest and authenticate_or_request_with_http_digest are vulnerable to denial-of-service attacks in affected Rails versions.
php.testing.curl-in-unit-testMediumcurl_exec in tests should target doubles or local fixtures.
rust.security.rocket-unsafe-template-outputHighDo not wrap request-sourced strings in `RawHtml` (or similar) without escaping in Rocket handlers.
ts.security.raw-html-using-user-inputHighRequest-derived values should not be interpolated into raw HTML strings.
security.no-sql-interpolationHighDatabase query sinks must not receive request-driven or dynamically interpolated SQL text.
ts.security.unsanitized-http-responseMediumRaw response sinks should not echo request data without escaping or sanitization. JSON.stringify and JSON responses are excluded — their output is not executable markup.
ts.react.no-hooks-rule-violationHighReact hooks must only be called at the top level of React function components or custom hooks, not inside conditions, loops, or regular functions.
ts.react.no-deprecated-create-factoryLow`createFactory` is a legacy helper for pre-JSX code and is removed from modern React typings and guidance.
ts.react.no-find-dom-nodeMedium`findDOMNode` reaches through component boundaries with a deprecated escape hatch that breaks strict mode migrations.
py.security.request-path-file-readHighPython file read operations should not consume request-controlled path segments.
ts.testing.no-network-call-in-unit-testLowUnit tests should not open real sockets; prefer doubles, recordings, or local fakes.
py.correctness.redefined-builtinMediumFunction definitions should not shadow builtin names like list, dict, str, or int
ts.performance.no-redundant-network-fetchMediumRepeated fetches for the same stable request identity waste network and CPU budget.
java.security.reflected-output-from-requestHighServlet writers should not emit raw request parameters or headers without encoding or policy checks.
ts.performance.no-regex-construction-in-loopMediumConstructing regular expressions inside loops repeatedly allocates and reparses patterns.
go.security.sensitive-data-egressHighOutbound `http.Post` bodies should not be built directly from request values without validation or redaction.
ruby.security.sensitive-data-egressHighOutbound HTTP helpers should not receive URLs or bodies directly from `params` or other tainted sources without validation.
php.security.sensitive-data-egressHighOutbound HTTP clients should not forward tainted request/session material without validation or redaction.
ruby.security.rails-render-inlineHighInline and text render modes bypass view escaping and are easy to misuse for cross-site scripting.
ruby.security.rails-unsafe-renderHigh`render` options such as `html:`, `plain:`, or `inline:` must not consume unvalidated request data.
ts.security.express-user-controlled-static-mountHighThe path prefix for express.static should not be derived directly from request objects.
ts.security.format-string-using-user-inputHighLogging and formatting helpers should not take request input as the format string itself.
ts.security.request-driven-array-index-accessMediumArrays indexed with request-derived keys can read or write out-of-bounds entries.
ts.security.dynamodb-query-injectionCriticalDynamoDB query and scan inputs should not be built directly from request input.
ruby.bug-risk.rescue-exceptionHighRescuing Exception also catches signals and system exits that should not be swallowed.
ts.security.express-error-handler-information-disclosureMediumExpress error handlers should not send the err object directly to clients in production paths.
java.correctness.ncopies-argument-orderCriticalPassing a string as the first argument to `Collections.nCopies()` likely has the arguments reversed.
java.correctness.indexof-reversed-argumentsHighCalling `indexOf()` with an integer as the first argument and a string as the second likely has the arguments reversed.
java.security.predictable-securerandomHigh`new SecureRandom(byte[])` should not be initialized with literal byte arrays, short fixed buffers, or string-derived seeds.
security.no-sensitive-data-in-logs-and-telemetryHighSensitive fields should not be sent to logging, tracing, or analytics sinks.
ts.security.sensitive-data-in-exceptionHighExceptions and rejection payloads should not include raw secrets or personal data.
ts.next.no-server-client-boundary-leaksHighServer components should not use browser-only APIs or client-only hooks without an explicit client boundary.
ts.react.no-set-state-in-component-did-mountMediumSynchronous state updates during mount trigger an extra render before the browser paints the initial tree.
ts.react.no-set-state-in-component-will-updateHighSynchronous state updates during the legacy will-update lifecycle can cause infinite re-rendering loops.
rust.security.shell-command-spawnHighSpawning `/bin/sh` or `bash` with `-c` enables shell metacharacter injection.
ts.security.apollo-server-graphql-dev-tooling-exposureMediumApollo Server dev landing pages, sandbox UIs, and GraphQL Playground-style plugins should not load unconditionally in production builds.
ts.react.no-should-component-updateMediumManual shouldComponentUpdate overrides increase maintenance cost and are rarely needed with modern React.
ts.quality.no-side-effect-in-pure-callbackHighGetters and transformation callbacks (map/filter/reduce) should not produce side effects such as assignments or mutations.
php.testing.sleep-in-unit-testLowsleep() in tests slows CI and hides synchronization bugs.
ruby.testing.sleep-in-unit-testLowsleep in specs slows CI and hides synchronization bugs.
ts.react.no-jsx-props-spreadLowUnfiltered prop spreads hide which attributes reach the DOM and defeat static analysis of event handlers and accessibility props.
java.security.spring-debug-exposureMediumSpring Boot configuration should not force debug logging or wildcard actuator exposure.
java.security.spring-permit-all-defaultHighProduction HTTP security chains should not end with a broad permit-all fallback such as `anyRequest().permitAll()` or `requestMatchers("/**").permitAll()`.
py.security.sql-interpolationCriticalPython SQL queries should not be built via f-string or string-formatting with user input.
ts.security.electron-insecure-local-stateMediumelectron-store writes that look like credentials should use OS-level secret storage instead.
ts.security.unsafe-dirname-path-concatMediumDo not build filesystem paths by concatenating `__dirname` or `__filename` with strings or templates.
go.performance.avoid-string-index-allocMediumUsing `strings.Index(string(x), ...)` with a `[]byte` argument causes an unnecessary allocation.
ts.performance.no-sync-fs-in-request-pathHighSynchronous filesystem calls on request paths block the event loop and degrade latency.
ts.security.no-sync-child-process-execHighexecSync and spawnSync should not run commands built from variables or template strings.
ts.security.no-fs-readfile-sync-in-handlerMediumRequest handlers should not call `readFileSync` or equivalent blocking file APIs.
py.security.telnet-usageHighTelnet sends credentials and data in cleartext
go.security.unsafe-package-importMediumProduction Go code should not import the `unsafe` package, which bypasses the type system and memory safety guarantees.
php.correctness.error-suppression-operatorMediumThe `@` operator hides warnings and errors instead of handling them explicitly.
ts.react.no-this-state-in-set-stateHighReading this.state inside setState() leads to stale state references because React batches updates asynchronously.
java.testing.thread-sleep-in-unit-testLowSleeping in tests slows CI and hides synchronization bugs.
java.correctness.throw-nullCritical`throw null;` throws a `NullPointerException` at the throw site instead of communicating intent. Throw a proper exception instance.
go.testing.time-sleep-in-unit-testLowSleeping in _test.go files slows CI and hides synchronization bugs.
py.testing.time-sleep-in-unit-testLowSleeping in tests slows suites and hides synchronization bugs.
go.correctness.time-tick-leakMediumtime.Tick leaks the underlying ticker because it cannot be stopped.
ts.testing.no-flaky-timer-testLowUnit tests using real timers (setTimeout/setInterval with delays >50ms) without fake timers may produce flaky results under CI load.
go.security.gin-trust-all-proxiesHigh`SetTrustedProxies` should list real upstreams instead of `nil` or `0.0.0.0/0` style catch-alls that spoof `X-Forwarded-For`.
ts.security.angular-dom-sanitizer-bypass-untrusted-inputHighDomSanitizer bypass helpers should not receive route, storage, or request-derived values without validation.
py.correctness.assert-on-tupleMediumAsserting a tuple literal-like expression is usually always truthy and can mask failing checks.
rust.correctness.unbounded-channelMediumUnbounded channels can grow without backpressure and exhaust memory.
ts.performance.no-unbounded-concurrencyHighUnbounded Promise fan-out over unknown input can exhaust downstream capacity.
ruby.bug-risk.unreachable-loopHighA loop body starts with an unconditional return, break, or raise. This causes the loop to execute at most once and the remaining loop body is unreachable.
ts.security.apollo-server-introspection-exposureMediumApollo Server should not hard-enable introspection without environment guards.
ruby.security.rails-unsafe-html-outputHighDo not mark request-driven strings as HTML safe or bypass sanitization in views or helpers.
php.security.laravel-unsafe-blade-outputHighRaw Blade rendering (`{!! !!}`) should not directly render request, model, or translated user content.
py.correctness.unnecessary-comprehensionLowWrapping a list comprehension in list() or set() is redundant and should be simplified
ruby.bug-risk.disjunctive-assignment-in-constructorHighInstance variables are nil until assigned, so `@var ||= value` in initialize is redundant.
ts.correctness.unresolved-importHighImport declarations should reference modules that exist on disk or in node_modules.
ts.security.dangerously-set-inner-htmlHighReact `dangerouslySetInnerHTML` should only render fixed or explicitly sanitized HTML.
ts.security.no-innerhtml-assignmentHigh`innerHTML` assignments should only use fixed or explicitly sanitized HTML.
ts.security.insecure-content-security-policy-literalMediumStatic CSP header values should not rely on unsafe-inline, unsafe-eval, or unsafe-hashes without nonces.
py.security.unsafe-deserializationHighPython deserialization of untrusted data via `pickle` can enable arbitrary code execution.
py.security.django-unsafe-production-settingsHighProduction Django settings should disable debug mode, restrict hosts, protect secrets, and enable HTTPS-aligned cookie flags.
ts.security.dangerous-insert-htmlHigh`outerHTML`, `document.write*`, and `insertAdjacentHTML` should only receive fixed or explicitly sanitized HTML.
php.security.unsafe-new-staticMediumUsing `new static()` can instantiate unexpected subclasses and weaken type guarantees.
ruby.security.rails-unsafe-strong-parametersHighStrong parameters and mass assignment sinks should not accept unfiltered request hashes or privileged attributes.
ts.performance.no-cache-miss-from-unstable-keyMediumCache keys built from unstable values cause low hit rates and repeated recomputation.
rust.security.insecure-yaml-loadHighUntyped `serde_yaml` deserialization can instantiate arbitrary types from untrusted input.
rust.quality.unused-enumerate-or-zip-itemsMediumOne of the destructured variables from `.enumerate()` or `.zip()` is never used in the loop body.
ruby.bug-risk.useless-comparisonHighA variable is compared to itself using ==, !=, <, >, <=, >=, or ===. This comparison always produces a known result and is likely a logic error.
ruby.bug-risk.useless-setter-callHighAn attribute is assigned to its own current value (e.g., self.x = self.x or @x = @x). This assignment has no effect.
py.security.path-traversal-user-inputHighPython path construction and file delivery helpers should not consume request- or route-derived segments without validation.
ts.security.path-join-user-inputHighPath construction APIs should not consume request- or upload-derived segments without a trusted root and validation.
ts.security.user-controlled-regexpMediumRegular expression construction should not consume request-derived pattern strings without validation.
ruby.bug-risk.git-in-gemspecHighUsing backtick `git ls-files` inside a gemspec to list gem files couples the build to the git binary and repository state.
java.correctness.deprecated-thread-methodsMediumCalls to deprecated Thread instance methods stop(), suspend(), and resume() should be removed. These methods are inherently unsafe.
java.correctness.threadgroup-deprecated-methodsHighThreadGroup.stop(), .suspend(), .resume(), .destroy(), and related methods are deprecated and unsafe.
java.correctness.equals-nullHighCalling `.equals(null)` always returns false and may throw NullPointerException.
php.correctness.invalid-string-interpolation-typeHighString interpolation with objects, arrays, or array literals using `${...}` syntax produces unexpected results. The resulting string will contain "Object" or "Array" rather than a meaningful representation.
go.security.tainted-value-sinkHighUser-controlled input (parameters named `input`, `data`, `body`, etc.) should not reach SQL execution or OS command sinks via `fmt.Sprintf` string interpolation.
ts.security.weak-cipher-or-modeHighCryptographic ciphers should use modern authenticated modes and approved algorithms.
py.security.weak-hash-algorithmMediumPython security-sensitive hashing should use SHA-256 or stronger, not MD5 or SHA-1.
py.security.weak-crypto-keyHighRSA/DSA keys below 3072 bits are insufficient for modern security
security.weak-hash-algorithmHighCryptographic hashing should use modern, collision-resistant algorithms.
ts.security.weak-key-strengthHighKey-generation helpers should use current minimum strengths for RSA, AES, and HMAC keys.
php.security.weak-cipherHighOpenSSL and mcrypt usage should not rely on DES, RC4, Blowfish, ECB mode, or legacy mcrypt APIs.
rust.security.weak-tls-cipherHighRust TLS configuration must not include cipher suites using RC4, 3DES, NULL, or EXPORT algorithms.
ruby.bug-risk.when-branch-without-bodyHighA when clause has no body expression. Add the intended behavior or remove the branch.
ts.security.postmessage-wildcard-originHigh`postMessage` calls should not use `*` as the target origin when they carry application data.
java.security.permissive-corsHighSpring `@CrossOrigin("*")`, `allowedOrigins("*")`, and `addAllowedOriginPattern("*")` open the API to any origin.
go.security.gin-wildcard-cors-with-credentialsHigh`gin-contrib/cors` configurations must not combine wildcard origins with `AllowCredentials: true`.
py.security.wildcard-subprocess-injectionHighShell wildcards in subprocess calls can be expanded unexpectedly, enabling injection
security.permissive-file-permissionsMediumFile creation and permission changes should not grant broad local access.
ts.angularjs.no-jquery-wrapping-angular-elementHighWrapping `angular.element()` objects with jQuery or `$()` is unnecessary and can cause issues.
py.security.xmlrpc-importMediumXML-RPC uses XML serialization that is vulnerable to DTD attacks
ts.correctness.invalid-async-await-callHighThe `await` keyword and `for await...of` are only valid inside an `async` function.
ruby.bug-risk.bad-operand-orderMediumA literal appears on the left side of a binary expression where a variable is expected on the left.
ruby.bug-risk.rails-env-equalityMedium`Rails.env` should be compared using predicate methods (`Rails.env.production?`) instead of equality operators.
ruby.bug-risk.bad-rescue-orderingHighA more general exception class is rescued after a more specific one. Ruby matches rescues top-to-bottom, so the specific handler never runs.
ruby.bug-risk.bad-magic-comment-orderHighMagic comments like `# frozen_string_literal: true` must appear before any code in the file. When placed after code, they are ignored.
java.correctness.bad-short-circuit-null-checkHighNull check uses || instead of && causing a NullPointerException when the variable is null.
cfn.correctness.base64-validation-of-parametersHighBase64 validation of parameters
cfn.correctness.basic-cloudformation-resource-checkHighBasic cloudformation resource check
cfn.correctness.basic-cloudformation-template-configurationHighBasic cloudformation template configuration
rust.correctness.identical-binary-operandsHighBinary operation where both sides are identical, likely a copy-paste error.
go.correctness.identical-binary-operandsHighIdentical expressions on both sides of an operator is likely a copy-paste error.
ruby.bug-risk.identical-binary-operandsHighA binary expression uses the same variable for both the left and right operand. This is likely a copy-paste error and produces a predictable result that may not be intended.
java.security.hibernate-sql-concatenationCriticalHibernate `Session.createQuery`, `createNativeQuery`, and `createSQLQuery` calls must not build their query text from string concatenation or `String.format`.
java.correctness.bitwise-or-never-equalHighA bitwise OR expression is compared with `==` to a constant but will never equal it.
ts.correctness.blocking-call-in-async-flowMediumAsync functions should not call synchronous blocking APIs on the hot path.
java.performance.boxed-boolean-constructorHigh`new Boolean(value)` creates a new object instance; use `Boolean.valueOf()` or autoboxing instead.
go.correctness.boolean-simplificationHighComplex boolean expressions like `x > y - 1` or `x < y || x == y` can be written more concisely.
go.correctness.boolean-literal-in-expressionMediumExpressions like `flag == true` or `flag != false` can be simplified to the bare boolean value or its negation.
java.correctness.boxed-boolean-conditionalHighUsing a boxed Boolean directly in a conditional can throw NullPointerException if the value is null.
java.quality.c-style-array-declarationLowArray brackets should be placed with the type, not the variable name.
java.correctness.cacheloader-null-returnMediumReturning null from a CacheLoader.load() method causes InvalidCacheLoadException at runtime. Guava caches do not support null values.
ts.vue.no-slot-property-accessHighIn Vue 3, $slots entries are functions. Access them by calling `$slots.slotName()`, not by treating them as values.
ruby.bug-risk.exit-in-app-codeHighBare `exit` or `exit!` calls halt process execution and should be avoided in application code.
java.correctness.unsupported-method-callHighA final method that throws UnsupportedOperationException is called from another method, which will always fail at runtime.
go.correctness.waitgroup-add-in-goroutineHighWaitGroup.Add called inside the goroutine races with Wait.
php.correctness.inconsistent-printf-paramsCriticalThe number of arguments passed to sprintf, sscanf, or fscanf does not match the number of format placeholders.
ts.correctness.callback-missing-error-handlingMediumRequire error handling in callbacks.
rust.correctness.forget-drop-on-copy-typeHigh`mem::forget` / `mem::drop` on a Copy type does nothing — the type is copied into the function.
rust.correctness.forget-drop-on-non-drop-typeHigh`mem::forget` / `mem::drop` on a type that does not implement `Drop` is a no-op.
rust.correctness.forget-drop-on-referenceHigh`mem::forget` / `mem::drop` on a reference drops only the reference, not the underlying value.
ts.react.no-effect-fetch-without-cancellationMediumReact effects that fetch remote data should attach AbortSignal wiring so stale responses cannot commit after dependencies change.
cfn.correctness.cannot-reference-resources-in-the-conditions-block-of-the-templateHighCannot reference resources in the conditions block of the template
java.correctness.case-insensitive-regex-lacks-unicodeHighCASE_INSENSITIVE or (?i) without UNICODE_CASE or (?u) does not handle Unicode-aware case folding.
java.correctness.random-coerced-to-zeroLowCasting Math.random() to int directly (without multiplying) always yields zero.
cfn.correctness.check-at-least-one-essential-container-is-specifiedHighCheck at least one essential container is specified
cfn.correctness.check-deletionpolicy-values-for-resourcesHighCheck deletionpolicy values for resources
cfn.correctness.check-dependson-values-for-resourcesHighCheck dependson values for resources
cfn.security.check-dynamic-references-secure-strings-are-in-supported-locationsHighCheck dynamic references secure strings are in supported locations
cfn.correctness.check-ec2-ebs-propertiesHighCheck ec2 ebs properties
cfn.correctness.check-elastic-cache-redis-cluster-settingsHighCheck elastic cache redis cluster settings
go.correctness.defer-close-before-checkHighA deferred Close runs even when the open call failed and returned a nil handle.
cfn.correctness.check-events-rule-targets-are-less-than-or-equal-to-5HighCheck events rule targets are less than or equal to 5
cfn.correctness.check-fargate-service-scheduling-strategyHighCheck fargate service scheduling strategy
cfn.correctness.check-fn-and-structure-for-validityHighCheck fn::and structure for validity
cfn.correctness.check-fn-equals-structure-for-validityHighCheck fn::equals structure for validity
cfn.correctness.check-fn-if-structure-for-validityHighCheck fn::if structure for validity
cfn.correctness.check-fn-not-structure-for-validityHighCheck fn::not structure for validity
cfn.correctness.check-fn-or-structure-for-validityHighCheck fn::or structure for validity
cfn.security.check-for-noecho-referencesMediumCheck for noecho references
rust.quality.possible-missing-comma-in-arrayMediumTwo adjacent expressions in an array literal without a comma separator likely indicate a missing comma.
cfn.correctness.check-for-subscriptionfilters-have-beyond-2-attachments-to-a-cloudwatch-log-groupHighCheck for subscriptionfilters have beyond 2 attachments to a cloudwatch log group
cfn.security.check-iam-permission-configurationMediumCheck iam permission configuration
cfn.maintainability.check-iam-resource-policies-syntaxMediumCheck iam resource policies syntax
cfn.correctness.check-if-a-json-object-is-within-size-limitsHighCheck if a json object is within size limits
cfn.correctness.check-if-a-list-has-between-min-and-max-number-of-values-specifiedHighCheck if a list has between min and max number of values specified
cfn.correctness.check-if-a-list-has-duplicate-valuesHighCheck if a list has duplicate values
cfn.maintainability.check-if-a-list-that-allows-duplicates-has-any-duplicatesLowCheck if a list that allows duplicates has any duplicates
cfn.correctness.check-if-a-number-is-between-min-and-maxHighCheck if a number is between min and max
cfn.correctness.check-if-a-string-has-between-min-and-max-number-of-values-specifiedHighCheck if a string has between min and max number of values specified
cfn.maintainability.check-if-conditions-are-usedMediumCheck if conditions are used
cfn.correctness.check-if-eol-lambda-function-runtimes-are-usedHighCheck if eol lambda function runtimes are used
cfn.maintainability.check-if-eol-lambda-function-runtimes-are-used-w2531MediumCheck if eol lambda function runtimes are used
cfn.security.check-if-iam-policies-are-properly-configuredHighCheck if iam policies are properly configured
cfn.maintainability.check-if-imageid-parameters-have-the-correct-typeMediumCheck if imageid parameters have the correct type
cfn.maintainability.check-if-mappings-are-usedMediumCheck if mappings are used
cfn.maintainability.check-if-parameters-are-usedMediumCheck if parameters are used
cfn.maintainability.check-if-parameters-have-a-valid-valueMediumCheck if parameters have a valid value
cfn.maintainability.check-if-parameters-have-a-valid-value-based-on-an-allowed-patternMediumCheck if parameters have a valid value based on an allowed pattern
cfn.security.check-if-password-properties-are-correctly-configuredMediumCheck if password properties are correctly configured
cfn.correctness.check-if-properties-have-a-valid-valueHighCheck if properties have a valid value
cfn.correctness.check-if-property-values-adhere-to-a-specific-patternHighCheck if property values adhere to a specific pattern
cfn.correctness.check-if-refing-to-a-iam-resource-with-path-setHighCheck if refing to a iam resource with path set
cfn.correctness.check-if-refs-existHighCheck if refs exist
cfn.correctness.check-if-serverless-resources-have-serverless-transformHighCheck if serverless resources have serverless transform
cfn.correctness.check-if-the-referenced-conditions-are-definedHighCheck if the referenced conditions are defined
cfn.correctness.check-minimum-90-period-is-met-between-backupplan-cold-and-deleteHighCheck minimum 90 period is met between backupplan cold and delete
cfn.maintainability.check-obsolete-dependson-configuration-for-resourcesMediumCheck obsolete dependson configuration for resources
java.correctness.unsafe-optional-getMediumOptional.get without a presence check can throw.
cfn.maintainability.check-outputs-using-importvalueMediumCheck outputs using importvalue
cfn.correctness.check-properties-that-are-mutually-exclusiveHighCheck properties that are mutually exclusive
cfn.correctness.check-properties-that-are-required-togetherHighCheck properties that are required together
cfn.correctness.check-properties-that-need-at-least-one-of-a-list-of-propertiesHighCheck properties that need at least one of a list of properties
cfn.correctness.check-properties-that-need-only-one-of-a-list-of-propertiesHighCheck properties that need only one of a list of properties
cfn.maintainability.check-required-properties-for-lambda-if-the-deployment-package-is-a-zip-fileMediumCheck required properties for lambda if the deployment package is a .zip file
cfn.correctness.check-resource-properties-valuesHighCheck resource properties values
cfn.maintainability.check-resources-with-auto-expiring-content-have-explicit-retention-periodLowCheck resources with auto expiring content have explicit retention period
cfn.maintainability.check-resources-with-updatereplacepolicy-deletionpolicy-have-bothMediumCheck resources with updatereplacepolicy/deletionpolicy have both
cfn.correctness.check-state-machine-definition-for-proper-syntaxHighCheck state machine definition for proper syntax
cfn.maintainability.check-stateful-resources-have-a-set-updatereplacepolicy-deletionpolicyLowCheck stateful resources have a set updatereplacepolicy/deletionpolicy
cfn.correctness.check-that-modules-resources-are-validHighCheck that modules resources are valid
cfn.correctness.check-the-configuration-of-a-resources-updatepolicyHighCheck the configuration of a resources updatepolicy
cfn.correctness.check-updatereplacepolicy-values-for-resourcesHighCheck updatereplacepolicy values for resources
cfn.correctness.check-values-of-properties-for-valid-refs-and-getattsHighCheck values of properties for valid refs and getatts
cfn.maintainability.checks-for-legacy-instance-type-generationsLowChecks for legacy instance type generations
cfn.correctness.cidr-validation-of-parametersHighCidr validation of parameters
java.correctness.class-name-collisionMediumA class shares its simple name with a superclass referenced in the extends clause, causing ambiguity.
php.correctness.instanceof-invalid-typeHighinstanceof should only be used with valid class, interface, or trait names.
php.correctness.class-implements-non-interfaceCriticalClasses can only implement interfaces
java.correctness.clone-without-superHigh`clone()` methods should call `super.clone()` to create the correct object.
java.correctness.closeable-provides-injectionHigh@Provides/@Inject methods returning Closeable types can cause resource management problems.
php.correctness.unused-closure-use-variableHighClosure use variables must be referenced
cfn.correctness.cloudfront-aliasesHighCloudfront aliases
cfn.correctness.codepipeline-stage-actionsHighCodepipeline stage actions
cfn.correctness.codepipeline-stagesHighCodepipeline stages
java.performance.non-zero-to-arrayHighPassing a non-zero sized array to `Collection.toArray(T[])` is less efficient than passing a zero-sized array.
java.correctness.collection-adds-selfHighA collection is being added to itself, which is likely a logic error.
java.correctness.collection-contains-selfCriticalA collection checks if it contains itself — likely a logic error.
sql.style.column-expression-without-aliasHighComplex column expressions should include an explicit alias
ruby.bug-risk.alter-queries-combineLowPrefer `change_table` with multiple column changes over repeated `change_column` calls.
go.performance.combine-append-callsMediumConsecutive `append` calls to the same slice can be combined into a single call.
security.no-command-execution-with-request-inputCriticalProcess execution helpers must not receive request-controlled executables or shell-interpreted arguments.
java.correctness.equals-on-arrayMediumArray.equals compares references, not contents.
java.correctness.compareto-min-valueMediumReturning Integer.MIN_VALUE from compareTo() can break comparison contracts and cause subtle ordering bugs.
rust.correctness.unit-comparisonHighComparing two block expressions that both return `()` is likely unintended.
rust.correctness.nan-comparisonHighComparing a float value with NaN using `==` or `!=` is always false or true.
ts.correctness.negative-zero-comparisonMediumDetects comparison with negative zero issues in JavaScript and TypeScript source.
ts.correctness.simplify-boolean-returnHighReturn statements that explicitly return true/false based on a condition can be simplified.
ts.correctness.compound-assignment-with-awaitHighDetects compound assignment with await issues in JavaScript and TypeScript source.
cfn.correctness.conditions-have-appropriate-propertiesHighConditions have appropriate properties
go.security.net-http-missing-timeoutsMediumPublic Go HTTP servers should use `http.Server` with read, write, idle, and header timeouts instead of convenience `ListenAndServe` helpers or incomplete literals.
ts.correctness.no-confusing-label-in-switchHighLabeled statements inside switch blocks can be confused with case clauses.
ts.correctness.confusing-multiline-expressionMediumDetects confusing multiline expression issues in JavaScript and TypeScript source.
ruby.bug-risk.where-first-over-find-byLow`find_by` is not incorrect, but `where(...).first` is more explicit and consistent with other query chain patterns.
ruby.bug-risk.constant-in-blockHighA constant is defined with an uppercase identifier inside a method body. Constants defined within methods are re-assigned on each call and produce a warning.
ts.security.user-controlled-view-renderMediumExpress view names should not cross into server-side rendering from untrusted input.
ts.security.user-controlled-sendfileHigh`res.sendFile()` should not resolve filenames or options from request input without a trusted root.
ts.security.file-generationHighLocal file writes should not derive their destination path from request or upload input.
ts.security.import-using-user-inputMedium`require()` and dynamic `import()` should not resolve modules from untrusted input.
java.security.spring-webmvc-unrestricted-data-bindingHighBinding request parameters directly into entity-like models without `setAllowedFields` / `@InitBinder` controls risks mass-assignment privilege escalation.
java.correctness.constructor-starts-threadMediumStarting a thread in a constructor of a non-final class may expose a partially constructed object.
ts.correctness.control-flow-in-finallyMediumAvoid return, throw, break, or continue inside finally blocks.
ruby.bug-risk.controller-base-subclassMediumController class directly subclasses `ActionController::Base` instead of `ApplicationController`.
cfn.security.controlling-access-to-an-s3-bucket-should-be-done-with-bucket-policiesMediumControlling access to an s3 bucket should be done with bucket policies
rust.security.differently-sized-slice-conversionHighCasting between raw slices of different element sizes can produce out-of-bounds access and memory corruption.
rust.security.const-to-mut-ptrHighConverting a `*const T` to `*mut T` violates Rust's aliasing guarantees and can introduce undefined behavior.
java.correctness.serialization-method-signatureHighSerializable classes declaring writeObject, readObject, or readObjectNoData must use exactly the correct signatures expected by the serialization API.
ts.react.no-keyboard-interaction-without-widget-roleMediumElements that handle both clicks and key events behave like custom controls and should advertise an appropriate ARIA role.
php.correctness.missing-member-visibilityLowClass properties and methods should declare public, protected, or private visibility.
ts.vue.no-computed-missing-dependencyHighVue computed properties referencing data Vue cannot reactively track should declare explicit dependencies.
ts.quality.deep-nestingLowDeeply nested control flow should be flattened where practical.
cfn.correctness.default-value-cannot-use-refsHighDefault value cannot use refs
cfn.correctness.default-value-is-within-parameter-constraintsHighDefault value is within parameter constraints
java.correctness.mutable-data-exposedHighAssigning a mutable object (collection or array) directly to a field without a defensive copy exposes internal state.
go.correctness.deferred-func-literalHighA `defer func() { bar() }()` wrapping a single call can be simplified to `defer bar()`.
ts.correctness.delete-on-variableMediumDetects delete operator on variable issues in JavaScript and TypeScript source.
ts.correctness.deprecated-api-usageHighUse of known deprecated APIs should be replaced with modern alternatives.
ts.vue.no-data-object-declarationHighThe `data` option in Vue components must be a function, not an object literal, to avoid shared state across instances.
java.security.xxe-xml-input-factoryHigh`XMLInputFactory.newInstance()` and `XMLInputFactory.newFactory()` should set `SUPPORT_DTD` and `IS_SUPPORTING_EXTERNAL_ENTITIES` to false before reading untrusted XML.
java.security.xxe-document-builderHigh`DocumentBuilderFactory`, `SAXParserFactory`, and `TransformerFactory` instances should enable secure processing and disable external entities before they parse untrusted XML.
py.security.flask-debug-enabledHighFlask applications should not enable debug mode through `app.run`, config assignment, or `FLASK_DEBUG`.
php.security.symfony-debug-exposureHighProduction-like Symfony configuration should not enable debug mode or web profiler surfaces.
sql.style.distinct-with-parenthesisHighAvoid using parentheses after DISTINCT as if it were a function call
php.correctness.undefined-static-propertyCriticalAccessing a static property that is not declared on the target class will produce a runtime notice and return null.
ts.security.express-static-dotfiles-allowMediumexpress.static should not serve dotfiles from disk unless explicitly required and reviewed.
ts.security.permissive-allow-originHighCORS should not fall back to wildcard or implicit allow-all origin settings.
ruby.bug-risk.exception-class-overwrittenMediumUse rescue StandardError or rescue StandardError => e, not rescue => StandardError.
java.security.jpa-concatenated-queryCritical`createQuery`, `createNativeQuery`, `JdbcTemplate` calls, and string-based `@Query` values must not stitch SQL with request data using `+`, `String.format`, or similar.
java.correctness.catch-null-pointerCriticalNullPointerException indicates a programming error.
ts.security.express-permissive-corsHighCORS middleware must not reflect every origin or use a wildcard while `credentials` is enabled.
php.security.insecure-cors-wildcard-with-credentialsHighPHP CORS responses should not allow credentials when origin is set to `*`.
ts.security.ui-redressHighFraming and CSP headers should not be set from request-controlled values.
rust.security.axum-body-limit-disabledHighAxum apps should keep a finite `DefaultBodyLimit` (or equivalent) so request bodies cannot exhaust memory.
ruby.security.rails-csrf-disabledHighBrowser-facing Rails controllers should keep forgery protection enabled with a safe strategy.
py.security.tls-verification-disabledHighPython HTTPS clients should not set `verify=False`, which disables server certificate validation.
rust.correctness.ignored-future-valueHighAn async function was called without awaiting or storing its returned Future.
php.correctness.echo-invalid-valueCriticalecho should only be called with string-convertible scalar values. Objects, arrays, and arrays using array() syntax cannot be meaningfully converted to strings by echo and may produce warnings.
ts.security.debug-mode-enabledMediumDebug handlers, stack-showing middleware, and diagnostic endpoints should stay behind explicit development-only guards.
go.security.pprof-exposedMediumImporting `net/http/pprof` or registering `/debug/pprof` handlers on the default mux exposes debugging endpoints to remote callers.
ts.security.no-native-prototype-extensionLowDo not assign properties on built-in prototype objects such as `Array.prototype`.
rust.correctness.forget-join-handleMediumForgetting a JoinHandle leaks the task and drops panic propagation.
rust.correctness.mutex-held-across-awaitHighHolding a std::sync::Mutex guard across an await point can deadlock the async executor.
ts.security.astro-vite-public-secret-defineHighAstro and Vite define entries for import.meta.env.PUBLIC_* must not map to high-risk process.env secrets.
php.correctness.instantiate-abstract-classCriticalDo not instantiate abstract classes
java.correctness.invalidated-iteratorHighModifying a collection with `add()`, `remove()`, or `clear()` inside a for-each loop will throw a ConcurrentModificationException.
ts.react.no-direct-state-mutationHighAssigning to `this.state` bypasses React change detection and produces stale UI.
ts.security.electron-shell-open-external-unvalidatedHighshell.openExternal should not receive request-controlled URLs without validation.
ts.security.xml-parse-string-with-untrusted-inputHighparseString and similar XML helpers should not consume request-controlled payloads without hardening.
ts.security.external-file-uploadHighUpload handlers should not store attacker-controlled filenames without generating or validating a safe local name.
security.external-file-uploadHighUpload handlers should not store attacker-controlled filenames without generating or validating a safe local name.
php.correctness.print-invalid-valueCriticalprint should only be used with strings. Objects, arrays, and array() expressions cannot be meaningfully converted to strings by print.
ts.security.no-global-native-reassignmentHighDo not assign to global native bindings such as `Object`, `Array`, or `undefined`.
ts.security.insecure-allow-originHigh`Access-Control-Allow-Origin` should not be set from request-controlled input.
php.correctness.nullsafe-returned-by-referenceHighBy-reference arrow functions cannot safely return nullsafe property access.
go.security.insecure-rand-seedMedium`rand.Seed` from `math/rand` produces predictable streams; security-sensitive code must use `crypto/rand`.
rust.quality.builtin-type-shadowMediumA local variable shadows a Rust built-in type name, which can confuse readers and hide type errors.
ts.security.jwt-insecure-signing-algorithmCriticalJSON Web Token signing options must not enable the none algorithm.
ts.security.nestjs-skip-throttle-sensitive-routeMediumSensitive Nest routes should not disable `@nestjs/throttler` protections without a compensating throttle.
ruby.security.rails-unsafe-session-or-cookie-storeMediumSession and signed cookie stores should not persist raw `params` blobs that attackers can influence.
java.correctness.sync-boxed-primitiveMediumSynchronizing on a boxed primitive (Integer, Long, Boolean, etc.) is unsafe due to interning and caching.
java.correctness.sync-on-string-literalMediumString literals are interned and shared across the JVM.
java.security.trust-all-certificatesCriticalTrustManagers must validate certificates; empty `checkServerTrusted`/`checkClientTrusted` bodies or `TrustAllStrategy` accept any peer.
java.correctness.empty-catchMediumCatch blocks should handle or rethrow exceptions.
rust.quality.potentially-incomplete-ascii-rangeMediumExclusive range operator `..` between character literals like `'a'..'z'` excludes the upper bound.
java.security.null-cipherCriticalConstructing `new NullCipher()` or `Cipher.getInstance("Null")` performs no encryption.
ts.react.no-this-in-function-componentHighFunction components have no instance, so `this` references are almost always mistakes copied from class components.
java.correctness.double-assignmentHighA local variable is assigned twice consecutively without being read between the assignments.
java.correctness.double-checked-lockingHighA double-checked locking pattern on a non-volatile field is unsafe.
java.correctness.nan-comparisonHighComparing a floating-point value to Double.NaN or Float.NaN using == or != always yields false (or true for !=) because NaN is not equal to any value, including itself.
java.correctness.comparator-downcast-sign-flipMediumNarrowing casts (short, byte, int) of subtraction results inside compare/compareTo methods can overflow and flip the comparison sign, producing incorrect ordering.
java.correctness.duplicate-binary-argumentMediumSame expression appears on both sides of a binary operator — likely a copy-paste bug.
ruby.bug-risk.duplicate-constant-assignmentHighMultiple assignments to the same constant were found. The previous value is discarded, which is likely a developer mistake.
go.correctness.duplicate-branch-bodyHighAdjacent if-else branches have identical bodies. One branch is likely dead or wrong.
go.correctness.duplicate-switch-casesHighDuplicate case values mean the second case is unreachable.
ts.correctness.duplicate-class-memberMediumDetects duplicate class member issues in JavaScript and TypeScript source.
ts.quality.duplicate-code-blockLowLarge duplicated function bodies across files make behavior harder to maintain safely.
go.correctness.duplicate-function-argumentsHighConsecutive identical arguments may indicate a copy-paste error.
ts.correctness.duplicate-function-parameterMediumA function declares the same parameter name more than once.
ts.correctness.duplicate-if-else-conditionMediumDo not repeat the same test in an if-else-if chain.
ts.correctness.duplicate-import-sourceLowThe file imports from the same module path more than once.
ts.correctness.duplicate-object-keyMediumAn object literal repeats the same static property name.
ts.correctness.duplicate-switch-caseMediumA switch repeats the same case discriminant.
sql.style.duplicate-table-aliasesCriticalEach table alias should be unique within a query
ruby.bug-risk.enum-duplicate-valuesHighTwo or more enum items share the same integer value, which will cause mapping collisions.
go.correctness.unnecessary-else-returnHighWhen an if-body ends with a return/break/continue, the else branch is unnecessary.
go.security.echo-sensitive-binding-without-validationMediumSensitive Echo binds should use struct tags or validators so mutations cannot accept empty or malformed credentials and roles.
java.correctness.volatile-array-elementsMediumDeclaring an array reference as volatile does not make array element accesses volatile.
ts.vue.emits-validator-return-booleanHighEmit event validators are expected to return a boolean value indicating whether the event payload is valid.
ts.correctness.empty-block-statementLowA control-flow or try/catch branch uses an empty `{}` block.
ts.correctness.regexp-empty-character-classMediumThe regular expression pattern contains an empty character class that never matches.
ts.correctness.empty-destructuring-patternMediumDetects empty destructuring pattern issues in JavaScript and TypeScript source.
rust.correctness.empty-range-expressionCriticalRange expression where start > end, producing an empty range or runtime panic.
py.security.django-missing-csrf-middlewareMediumDjango projects using cookie-backed sessions should include `CsrfViewMiddleware` in `MIDDLEWARE`.
ts.security.fastify-public-bind-without-trust-proxyMediumFastify instances listening on all interfaces should enable trustProxy or terminate behind a reverse proxy you register in code.
py.security.ssh-host-key-validationMediumAutoAddPolicy disables SSH host key verification, enabling MITM attacks
ruby.bug-risk.enum-array-syntaxMediumUse of array syntax for enum declarations is brittle and can lead to unexpected values when enum items are reordered.
java.correctness.mutable-enum-fieldsMediumEnum fields that are not declared final create mutable state in a shared singleton instance.
java.correctness.enum-equals-methodHighAn enum should not define an `equals()` method — enum equality is determined by identity.
java.correctness.equals-inherits-parentMediumA class defines an overloaded `equals` but does not override `equals(Object)`, so the parent's equals semantics are silently inherited.
java.correctness.overloaded-equalsMediumA method named `equals` with a non-Object parameter type overloads rather than overrides equals.
java.correctness.equals-null-checkHighAn `equals(Object)` implementation accesses fields or methods without a preceding null guard, risking NullPointerException.
cfn.correctness.error-processing-rule-on-the-templateHighError processing rule on the template
ts.quality.swallowed-errorLowCatch blocks must log, reject, or rethrow failures instead of dropping them silently.
java.security.template-unescaped-user-outputHighThymeleaf `th:utext`, JSP scriptlets, and FreeMarker `?no_esc` patterns must not render untrusted request or model values without an explicit sanitization strategy.
go.bug-risk.etcd-getlogger-misuseHighGetLogger is an internal method on etcd's client type. Using it as a general-purpose application logger is a misuse pattern; the returned logger is configured for etcd's internal use.
ts.security.no-dynamic-executionLowEval-like helpers, `vm` execution APIs, and string-evaluated timers should not execute dynamic code.
java.performance.expensive-method-on-ui-threadHighMethods annotated with `@WorkerThread` or `@Expensive` are invoked from a `@MainThread`, `@UIThread`, or `@PerformanceCritical` context, potentially blocking the UI.
java.performance.explicit-gcHighExplicit calls to `System.gc()` or `Runtime.getRuntime().gc()` trigger full GC cycles that degrade performance.
ts.correctness.extraneous-importMediumDetected import declarations which import extraneous modules.
go.security.fiber-sensitive-binding-without-validationMediumSensitive Fiber parsers should pair structs with validator tags or explicit validation so roles and secrets cannot be silently omitted.
java.correctness.non-final-immutable-fieldsMediumFields in a class annotated with @Immutable or @Value should be declared final.
php.correctness.redundant-final-methodHighFinal methods are redundant in final classes
java.correctness.explicit-finalizer-invocationHighCalling `.finalize()` explicitly is dangerous and deprecated.
cfn.maintainability.findinmap-keys-exist-in-the-mapMediumFindinmap keys exist in the map
cfn.correctness.findinmap-validation-of-configurationHighFindinmap validation of configuration
php.correctness.invalid-regex-literalMediumpreg_* calls must use a valid delimiter and closing pattern literal.
ts.correctness.flawed-string-comparisonHighString comparison using identical operands or locale-sensitive operators may indicate a bug.
java.performance.boxed-double-constructorHigh`new Float(value)` and `new Double(value)` create unnecessary objects; use `valueOf()` instead.
cfn.maintainability.fn-equals-will-always-return-true-or-falseMediumFn::equals will always return true or false
java.correctness.for-loop-mismatched-incrementMediumThe loop condition checks one variable but a different variable is being incremented.
rust.correctness.iter-next-in-for-loopCriticalIterating over `.next()` in a for loop iterates over the Option result, not the remaining iterator elements.
ts.correctness.for-in-on-arrayMediumPrefer for-of or index loops instead of for-in on arrays.
ts.correctness.this-outside-classHighDo not use the `this` keyword outside of a class body.
rust.correctness.unhandled-io-resultHighI/O operations return `Result` which should be handled to avoid silently ignoring errors.
rust.quality.approximate-floating-constantMediumFloat literal approximates a known mathematical constant that should use `std::f64::consts::*` or `std::f32::consts::*`.
ts.correctness.non-existent-assignment-operatorsHighDetects patterns like `=+`, `=-`, `=!`, `=~` that suggest a typo in a compound assignment operator.
rust.performance.single-char-string-literal-patternMediumDetects use of single-character string literals where a char would be more performant.
rust.correctness.transmute-t-to-ptr-refHighTransmuting between a value type and its pointer/reference form is unsound.
rust.correctness.transmute-integer-to-boolHighTransmuting an integer to bool can produce invalid boolean values.
rust.quality.deprecated-function-useHighUsage of a known deprecated Rust standard library function, constant, or type.
ruby.bug-risk.argument-overwritten-before-useHighA method parameter is reassigned on the first line of the method body before any read. This discards the caller's value and likely indicates a bug or unintended shadowing.
go.correctness.hidden-goroutineHighA function whose entire body consists of a single `go func()` call obscures the concurrent nature of the operation and makes error handling and cancellation invisible to the caller.
ts.correctness.declaration-in-nested-blockLowA `function` or `var` declaration appears inside a nested block instead of the enclosing scope top level.
ts.quality.function-too-large-or-complexLowOversized or overly complex functions should be split into smaller units.
cfn.correctness.getatt-validation-of-parametersHighGetatt validation of parameters
cfn.correctness.getaz-validation-of-parametersHighGetaz validation of parameters
java.correctness.enum-get-classMediumCalling getClass() inside an enum body returns the anonymous subclass for constants with custom bodies, not the enum class itself. Prefer getDeclaringClass().
java.correctness.getter-setter-sync-mismatchHighOne of a getter/setter pair is synchronized and the other is not.
go.security.gin-sensitive-binding-without-validationMediumSensitive Gin binds should use `binding` or validator tags so authentication and mutation payloads cannot be silently empty.
go.bug-risk.gin-loadhtmlglob-ill-formedHigh`gin.LoadHTMLGlob()` with an ill-formed glob pattern silently matches zero files and causes a runtime panic when rendering templates.
ts.react.no-accessibility-label-missingHighButtons, links, and inputs need labels, aria attributes, or visible text so assistive technologies can describe them.
ts.correctness.global-object-called-as-functionMediumA built-in namespace object such as `Math` or `JSON` is called like a function.
go.bug-risk.gorm-dry-run-enabledHigh`DryRun` is set to `true` in gorm.Config. When DryRun is enabled, GORM generates SQL statements without executing them. If actual execution is needed, DryRun should be disabled.
go.bug-risk.gorm-skip-default-transactionHighSetting `SkipDefaultTransaction` to `false` in gorm.Config causes GORM to wrap every operation in a transaction. Audit if this is intentional.
go.bug-risk.gorm-updates-zero-valuesHigh`db.Updates(Struct{...})` or `db.Model(...).Updates(Struct{...})` silently skips zero-value fields (0, "", false, nil), potentially leaving stale data in the database.
go.bug-risk.gorm-where-zero-valuesHigh`db.Where(&Struct{...})` silently ignores zero-value fields (0, "", false, nil) in the WHERE clause, leading to unintended broader queries.
ruby.bug-risk.grouped-parentheses-in-callHighUsing double parentheses in a method call like `foo((a, b))` passes a single argument instead of two. The inner parentheses create grouping via comma operator, not multiple arguments.
go.security.decompression-bombCritical`io.Copy` or `io.CopyBuffer` with an uncompressed reader from a decompressor (`gzip.NewReader`, `zlib.NewReader`, etc.) without a size limit can exhaust memory or disk in a decompression bomb attack.
ts.react.no-set-state-in-component-did-updateMediumUnconditional setState in componentDidUpdate can recurse through renders when props or state change on every pass.
go.security.unsafe-defer-closeHigh`defer f.Close()` silently discards the error returned by `Close()`. For writable files, this can mask data loss when buffered writes fail on close.
security.no-hardcoded-credentialsCriticalSource files should not embed credential-like string literals.
ts.quality.hardcoded-configuration-valuesLowConfig-like values should usually come from configuration sources rather than source literals.
ts.security.ajv-insecure-configurationMediumAJV should not compile schemas with allErrors true unless strict mode is enabled.
ts.security.insecure-auth-cookie-flagsMediumAuth and session cookies should set HttpOnly, Secure, and SameSite.
go.security.echo-unsafe-multipart-uploadHighMultipart handlers should cap body size, sanitize filenames with `filepath.Base`, and avoid concatenating user filenames into destination paths.
ts.security.electron-dangerous-webpreferencesHighElectron renderers should not run with unsafe webPreferences that weaken isolation or transport protection.
go.security.fiber-unsafe-multipart-uploadHighFiber upload helpers should enforce size limits and never persist client-controlled filenames without normalization.
ts.security.nestjs-validation-pipe-without-whitelistMediumGlobal ValidationPipe instances should enable whitelist-style stripping for unexpected fields.
php.security.insecure-session-or-cookie-configMediumSession/cookie configuration should keep secure, httpOnly, and safe same-site posture for authenticated contexts.
php.security.xml-external-entityHighXML parsing should disable external entities and avoid LIBXML_NOENT or libxml_disable_entity_loader(false).
java.security.servlet-insecure-cookieHighSession-like cookies must not disable HttpOnly or Secure, and explicit insecure builder flags should be removed.
java.correctness.hashcode-on-arrayHighCalling hashCode() directly on an array uses Object's identity-based hashCode rather than a content-based hash code.
java.correctness.hashtable-contains-valueCritical`.contains()` on `Hashtable` and `ConcurrentHashMap` checks for value existence. Use `.containsKey()` to check for key existence.
go.correctness.http-nobody-nilMediumUse http.NoBody for HTTP requests with no body instead of nil.
ts.correctness.identical-comparison-operandsLowBoth sides of a comparison use the same source text.
go.correctness.duplicate-if-else-conditionHighThe same boolean expression appears on both an `if` and the following `else if` branch. This is likely a copy-paste error; the second condition should probably be different.
ruby.bug-risk.skip-filter-conditionalHighCombining `only:`/`except:` with `if:`/`unless:` on a skip filter creates confusing conditional logic.
ruby.bug-risk.branches-without-bodyHighAn `if`, `elsif`, or `unless` branch has no body expression. Add the intended behavior or remove the dead branch.
ts.security.iframe-missing-sandbox-attributeLowIntrinsic iframe elements embedding untrusted third-party content should declare a sandbox attribute to reduce blast radius.
ruby.bug-risk.ignored-column-accessedHighAn ActiveRecord model references a column that has been declared in self.ignored_columns.
java.correctness.illegal-monitor-state-caughtHighIllegalMonitorStateException indicates a programming error; handling it masks the bug.
go.correctness.flag-pointer-immediate-derefHighDereferencing the flag pointer at the call site defeats the purpose of using a flag method.
php.correctness.empty-function-bodyLowNon-abstract functions with empty bodies hide missing behavior.
sql.style.implicit-column-aliasHighAvoid implicit column aliases without the AS keyword
sql.style.implicit-table-aliasHighAvoid implicit table aliases without the AS keyword
ts.correctness.implicit-undefined-returnMediumFunctions that return a value on some paths must not fall through implicitly.
cfn.correctness.importvalue-validation-of-parametersHighImportvalue validation of parameters
java.correctness.impossible-toarray-downcastCriticalCasting the result of no-arg toArray() to a specific array type will throw ClassCastException.
go.correctness.impossible-interface-nil-checkHighInterface value compared to nil when the underlying concrete type is always non-nil. The nil check is always false because an interface holding a nil concrete pointer is not itself nil.
php.correctness.inaccessible-propertyHighAccessing a property that is not visible from the current scope will cause a runtime error.
py.security.django-security-middleware-missingHighDjango settings should include `django.middleware.security.SecurityMiddleware` in `MIDDLEWARE`.
go.correctness.incomplete-nil-checkHighChecking `xs != nil` before indexing a slice is not sufficient — a non-nil empty slice still panics on index access.
sql.style.inconsistent-keyword-caseHighSQL keywords should be consistently cased throughout a file
sql.style.inconsistent-capitalizationHighIdentifiers should be consistently capitalized throughout a file
ruby.bug-risk.inconsistent-safe-navigationHighThe same receiver is accessed with both `&.` and bare `.` in close proximity. This inconsistency suggests the nil-safety strategy is applied inconsistently.
ts.correctness.incorrect-boolean-logicMediumComparison chains on the same value must use the boolean operator that matches the intended logic.
java.correctness.math-max-min-swappedMediumUsing `Math.max(A, Math.min(A, ...))` or `Math.min(A, Math.max(A, ...))` with a repeated argument is suspicious.
java.correctness.incorrect-main-signatureHighA method named main does not match the required public static void main(String[]) or String... signature, so it will not be usable as a program entry point.
ruby.bug-risk.callback-orderHighActiveRecord lifecycle callbacks (before_validation, after_validation, before_save, around_save, before_create, around_create, after_create, after_save, after_commit) should appear in that order within a class body.
ruby.bug-risk.incorrect-pluralizationLowUses pluralized ActiveSupport duration or byte method names with `1` (e.g. `1.days`) instead of the singular form (`1.day`).
java.correctness.volatile-increment-non-atomicMediumOperations like `counter++` on a volatile field are not atomic.
php.correctness.invalid-increment-operandHighIncrement or decrement only valid lvalues
java.correctness.lost-increment-in-assignmentHighAssigning a post-incremented variable to itself (e.g., x = x++) discards the increment because the old value is assigned back.
ruby.bug-risk.ineffective-access-modifierHighA `private`, `protected`, or `public` modifier at top-level scope has no effect. Access modifiers must be inside a class or module definition.
ts.performance.inefficient-data-structure-usageMediumLinear membership checks or key projections should be reviewed for more suitable lookup structures.
java.performance.keyset-instead-of-entrysetHighIterating over `Map.keySet()` and calling `Map.get(key)` for each key performs redundant hash lookups.
java.performance.inefficient-string-constructorHigh`new String(String)` creates an unnecessary copy; use the string literal directly.
go.correctness.nil-map-assignmentHighWriting to a nil map panics at runtime.
php.correctness.uninitialized-typed-propertyHighTyped class properties without a default value should be initialized in the constructor.
ts.angularjs.inject-function-assignments-onlyHighAngularJS `inject` callbacks should only contain variable assignments for injected dependencies.
security.insecure-http-transportHighOutbound transport should not use plain HTTP for sensitive requests.
rust.quality.non-owned-rc-pointer-into-vecMediumPushing an `Rc::clone()` from an `Rc` defined outside a vector ties cleanup to the vector lifetime.
java.correctness.instant-unsupported-temporal-unitHigh`Instant.plus()`, `Instant.minus()`, and `Instant.until()` throw `UnsupportedTemporalTypeException` when called with date-based units such as WEEKS, MONTHS, or YEARS.
go.correctness.signedness-castingHighNarrowing an integer type (e.g., `int8(x)`, `uint16(y)`) can lose precision or produce unexpected results when the source value exceeds the target type's range.
java.performance.boxed-integer-constructorHigh`new Integer(value)` and `new Long(value)` create unnecessary objects; use `valueOf()` instead.
java.correctness.unimplementable-interfaceHighAn interface declares a method that clashes with a final or differently-typed method in Object, making the interface impossible to implement correctly.
php.correctness.interface-extends-non-interfaceCriticalInterfaces can only extend interfaces
php.correctness.interface-implements-keywordCriticalInterfaces cannot use implements
ruby.bug-risk.interpolation-in-single-quoteHighSingle-quoted strings do not support interpolation. `#{expr}` inside a single-quoted string is treated as a literal, which is likely unintended.
php.correctness.invalid-attribute-classCriticalThe
ts.correctness.invalid-await-expressionMediumAwait only promise-like values
ts.react.no-invalid-markup-charactersMediumControl characters and zero-width Unicode codepoints in JSX text content can cause rendering anomalies and accessibility issues.
ruby.bug-risk.invalid-percent-string-literalHigh`%q` and `%Q` string literals use non-alphanumeric delimiters. An unmatched opening delimiter makes the literal span to the end of the file, likely causing a syntax error.
ruby.bug-risk.invalid-percent-symbol-arrayHigh`%i` and `%I` literal arrays (and `%w`/`%W` word arrays) use non-alphanumeric delimiters. An unmatched opening delimiter causes a syntax error.
php.correctness.invalid-constructor-promotionCriticalInvalid constructor property promotion
php.correctness.invalid-extends-targetCriticalInvalid extends target for declaration
ts.correctness.regexp-constructor-invalid-patternMediumA string literal passed to `RegExp` or `new RegExp` is not a valid regular expression.
rust.correctness.invalid-regex-literalCriticalRegex pattern contains invalid syntax such as reversed character ranges.
java.correctness.invalid-regex-literalCriticalThe regex pattern string contains invalid syntax (e.g. unmatched brackets, reversed character range, or invalid escape).
ruby.bug-risk.invalid-rescue-typeHigh`rescue` is followed by a non-class expression such as `nil`, a number, or a string literal. Rescue clauses must reference exception classes.
go.bug-risk.etcd-invalid-compare-operatorHigh`clientv3.Compare()` with a result operator other than `=`, `!=`, `>`, or `<` causes a runtime panic.
ts.correctness.invalid-shebangMediumShebang `#!` must appear on line 1 at column 0.
ts.correctness.invalid-typeof-comparisonMediumCompare typeof results only to known typeof strings.
php.correctness.invalid-use-keywordCriticalThe `use` keyword is used in a context where it does not apply — inside interfaces, anonymous classes, or referencing a non-trait class.
ruby.bug-risk.invalid-integer-timesHighThe `Integer#times` method is called with an integer literal value that produces a no-op or unexpected behavior (`0.times`, `1.times`, or negative values).
java.correctness.invalid-time-constantsHighCalls to java.time factory methods with literal arguments outside valid ranges (month > 12, day > 31, hour >= 24, minute/seconds >= 60) will always throw DateTimeException at runtime.
ts.correctness.invalid-variable-usageHighDetects invalid variable usage issues in JavaScript and TypeScript source.
ruby.bug-risk.missing-inverse-ofMediumDeclare `inverse_of:` on associations where Rails cannot automatically determine the inverse.
rust.security.invisible-unicodeHighInvisible Unicode characters such as zero-width spaces, bidi markers, and BOM characters can be used for Trojan Source attacks.
ruby.bug-risk.io-select-single-argHigh`IO.select` called with only one input/output array. This pattern is hard to make compatible with the Ruby 3 scheduler.
php.correctness.invalid-isset-argumentHighisset argument must be a variable reference
java.correctness.iterable-iterator-returns-thisHighA class implementing both Iterable and Iterator that returns this from iterator() cannot support multiple concurrent iterations and violates the Iterator contract.
java.correctness.iterable-path-typeHigh`Path` implements `Iterable<Path>`, so `Iterable<Path>` creates confusing APIs. Use `Collection<Path>` instead for clarity.
java.correctness.hasnext-invokes-nextHighCalling .next() inside a hasNext() implementation mutates iterator state during a query operation.
java.doc.parameter-tag-no-descriptionLow@param tags must include a description of the parameter.
java.doc.empty-javadoc-tagLowJavadoc block tags must have content following the tag name.
cfn.correctness.join-validation-of-parametersHighJoin validation of parameters
java.correctness.jump-in-finallyHighUsing return, throw, or break in a finally block overrides any exception or return value from the try block.
java.testing.disabled-without-ticket-referenceMediumDisabled tests without a reason string or nearby tracker note are hard to triage.
php.correctness.abstract-method-outside-abstract-classHighOnly abstract classes may declare abstract methods.
ts.security.apollo-server-csrf-disabledHighApollo Server should not explicitly disable CSRF prevention for browser-accessible endpoints.
ts.quality.no-inconsistent-error-shapeMediumInconsistent thrown or rejected error shapes make error handling brittle.
ts.quality.no-mixed-abstraction-levelMediumFunctions that mix transport, persistence, validation, and domain logic are hard to change safely.
ts.security.handlebars-no-escapeHighServer-side Handlebars compilation should not disable HTML escaping with `noEscape: true`.
ts.react.no-interactive-role-on-static-semanticsMediumHeadings, captions, and phrasing content should not pretend to be buttons or tabs without restructuring the markup.
ts.quality.no-wide-public-surfaceMediumModules exporting too many symbols become hard to evolve safely.
ruby.security.rails-detailed-exceptions-enabledMediumProduction environments should not enable local-style exception pages or verbose Action Dispatch exception rendering.
ts.security.nuxt-public-runtime-secretHighSensitive credentials must not be exposed through runtimeConfig.public, which is visible to client bundles.
php.security.symfony-csrf-disabledHighSymfony forms and controllers handling state changes should not disable CSRF protection without a clear API token boundary.
ts.testing.no-test-only-code-in-productionHighProduction modules should not import test doubles or gate behavior on test-only environment flags.
sql.style.keyword-as-identifierHighAvoid using SQL keywords as table aliases
ts.performance.large-payload-without-streamingMediumWhole-payload reads of likely large content should be reviewed for streaming alternatives.
cfn.correctness.length-validation-of-parametersHighLength validation of parameters
ts.quality.logic-change-without-test-updatesMediumDiffs that change critical logic should usually update the matching tests in the same change.
java.correctness.loop-condition-never-trueHighA loop condition that evaluates to false at compile time means the loop body will never execute.
ts.correctness.infinite-loopMediumDetect obvious infinite loops that have no exit path via break, return, throw, or yield.
ts.quality.magic-numbers-or-stringsLowNon-trivial literals in logic should be named to explain their meaning.
ts.react.no-activedescendant-on-non-focusable-hostHighElements that manage active descendants must participate in the tab order or be native controls that already receive focus.
go.doc.malformed-deprecated-commentHighGo doc comment does not follow the `// Deprecated:` convention. Use `// Deprecated: <explanation>` so tools like `go doc` and `gopls` can mark the symbol as deprecated.
java.doc.malformed-javadoc-commentLowJavadoc comments must use valid tag syntax without double @ symbols.
cfn.maintainability.mapping-attribute-limitLowMapping attribute limit
cfn.correctness.mapping-attribute-limit-not-exceededHighMapping attribute limit not exceeded
cfn.correctness.mapping-keys-are-strings-and-alphanumericHighMapping keys are strings and alphanumeric
cfn.maintainability.mapping-limitLowMapping limit
cfn.correctness.mapping-limit-not-exceededHighMapping limit not exceeded
cfn.maintainability.mapping-name-limitLowMapping name limit
cfn.correctness.mapping-name-limit-not-exceededHighMapping name limit not exceeded
cfn.correctness.mappings-are-appropriately-configuredHighMappings are appropriately configured
cfn.correctness.mappings-have-appropriate-namesHighMappings have appropriate names
java.performance.url-in-collectionCritical`java.net.URL` performs DNS resolution on `equals()` and `hashCode()`, making Map and Set operations unexpectedly expensive.
php.testing.mark-test-skipped-without-ticket-referenceMediumEmpty markTestSkipped() calls without a tracker note are hard to triage.
php.correctness.void-match-armHighMatch arms must return a value
cfn.correctness.metadata-interface-have-appropriate-propertiesHighMetadata interface have appropriate properties
cfn.maintainability.metadata-interface-parameters-existMediumMetadata interface parameters exist
java.correctness.non-null-method-returns-nullCriticalMethods annotated @Nonnull, @NotNull, or @NonNull that contain explicit return null statements are buggy.
ts.react.no-deprecated-react-dom-root-apiMedium`render`, `hydrate`, and `unmountComponentAtNode` from `react-dom` are legacy APIs replaced by the `createRoot` and `hydrateRoot` clients.
ts.correctness.missing-async-on-promise-methodHighMark promise callbacks async when using await
ts.security.missing-authorization-before-sensitive-actionHighSensitive backend actions should be guarded by an authorization or permission check.
ts.correctness.missing-await-on-async-callHighAsync functions should not drop direct async calls without awaiting them.
ts.performance.missing-batch-operationsMediumRepeated one-by-one operations inside loops should prefer available batch-style helpers.
ts.correctness.missing-default-dispatchMediumDispatch constructs should include an explicit default or final else path.
java.correctness.missing-enum-switch-elementsHighSwitch statements on enum types without a default label must cover all enum members.
ts.quality.missing-error-contextLowCatch blocks should include the caught error when they log or rethrow.
ts.security.missing-ownership-validationHighResource identifiers from request input should be checked against the caller before sensitive actions run.
ts.correctness.missing-super-callHighSubclass constructors must call super() before using this.
ts.quality.missing-tests-for-critical-logicMediumCritical auth, payment, or similar business logic should have a matching test file.
ts.correctness.missing-timeout-on-external-callHighExternal calls should declare timeout, cancellation, or retry behavior.
ts.correctness.missing-type-annotationMediumAdd explicit type annotations where TypeScript cannot infer the type.
java.correctness.wait-on-conditionMediumCalling `.wait()` on a `java.util.concurrent.locks.Condition` object is incorrect. Use `condition.await()` instead.
ts.correctness.regexp-multicodepoint-character-classMediumDetects multi-code-point character in regex class issues in JavaScript and TypeScript source.
java.quality.multiple-variables-same-lineLowDeclaring multiple variables on one line reduces readability and can hide initialization bugs.
java.correctness.servlet-mutable-fieldsHighMutable fields in an HttpServlet subclass can cause thread-safety issues because servlets are typically shared across requests.
ts.correctness.unsafe-negation-in-relationalMediumA relational or membership test applies unary `!` to the left operand instead of negating the whole comparison.
ts.performance.nested-loops-hot-pathMediumNested loops in the same function should be reviewed for quadratic work on larger inputs.
ts.correctness.nested-property-access-without-checkMediumDeep property chains derived from external input should verify intermediate values before access.
ts.correctness.new-symbol-instanceHighFound new operator used with the `Symbol` object.
ts.quality.no-empty-functionLowAvoid empty function bodies
ts.correctness.no-floating-promise-in-functionHighHandle promise-returning calls explicitly
ts.correctness.no-misused-promisesMediumDo not pass async callbacks where sync is expected
rust.correctness.non-binding-let-on-lockCritical`let _ = lock.lock()` immediately drops the lock guard instead of holding the lock.
ts.correctness.callback-not-error-firstMediumEnsure Node.js-style error-first callback pattern is followed.
ruby.bug-risk.non-local-exit-from-iteratorHigh`return` inside an iterator block exits the enclosing method, not just the block. `break` and `next` without a value return `nil` to the iterator.
ruby.bug-risk.non-null-column-without-defaultHighColumn definitions with `null: false` should also specify a `default` value to avoid constraint failures when inserting records without the column.
rust.correctness.non-octal-permissionsCriticalUnix file permissions should be specified as octal literals (e.g., `0o755`) to avoid misconfiguration.
java.correctness.non-terminating-loopCriticalA loop with an unconditionally true condition has no break or return statement, causing it to run indefinitely.
php.correctness.nullable-mixed-typeCriticalNullable mixed type is not allowed
ts.correctness.no-href-with-nuxt-linkHighThe `href` attribute on NuxtLink should be replaced with `to` for internal navigation.
ts.correctness.prototype-builtin-called-directlyMediumA method from `Object.prototype` is invoked directly on a receiver object.
java.correctness.assert-self-comparisonHighAssertions comparing a value to itself always pass and indicate a testing bug where a different expected value should be used.
java.correctness.oddness-check-fails-negativeHighUsing `x % 2 == 1` to check parity fails for negative values because Java's modulo preserves sign.
ts.correctness.off-by-one-loop-boundaryMediumIndex-based loops should not skip the first element or iterate one step past the collection boundary.
go.correctness.off-by-one-indexHighIndexing an array or slice at len(arr) reads one past the last valid element.
ruby.bug-risk.old-style-validation-macroHighUses the deprecated `validates_*_of` macro. Prefer the modern `validates` method with options.
php.correctness.throw-non-exceptionCriticalThrow statements should only raise objects that extend Exception or Error.
rust.security.open-redirectHighURLs returned from redirect helpers that include user-controlled input may enable open redirect attacks, bypassing domain validation.
ts.security.open-redirectHighRedirect and navigation sinks should not use request-controlled destinations without validation.
rust.correctness.erasing-operationCriticalAn arithmetic or bitwise operation that always evaluates to zero.
ts.correctness.optional-value-without-fallbackMediumOptional values should be normalized before arithmetic, concatenation, or other direct use.
java.correctness.optional-get-without-present-checkHighCalling Optional.get() without a preceding isPresent() check will throw NoSuchElementException when the Optional is empty.
java.correctness.optional-nullCriticalAn Optional-typed variable is assigned null or a method returns null for an Optional return type.
ruby.bug-risk.outer-variable-shadowedMediumA block parameter has the same name as a variable in the outer scope. Inside the block, the outer variable is inaccessible.
cfn.maintainability.output-description-limitLowOutput description limit
cfn.correctness.output-description-limit-not-exceededHighOutput description limit not exceeded
cfn.maintainability.output-limitLowOutput limit
cfn.correctness.output-limit-not-exceededHighOutput limit not exceeded
cfn.maintainability.output-name-limitLowOutput name limit
cfn.correctness.output-name-limit-not-exceededHighOutput name limit not exceeded
cfn.correctness.outputs-descriptions-can-only-be-stringsHighOutputs descriptions can only be strings
cfn.correctness.outputs-have-appropriate-namesHighOutputs have appropriate names
cfn.correctness.outputs-have-appropriate-propertiesHighOutputs have appropriate properties
cfn.correctness.outputs-have-required-propertiesHighOutputs have required properties
cfn.correctness.outputs-have-values-of-stringsHighOutputs have values of strings
ts.security.express-default-cookie-configMediumExpress session cookie settings should not omit explicit lifetime, scope, and transport attributes.
ts.security.express-default-session-configMediumExpress session middleware should not rely on default session naming and configuration.
ruby.bug-risk.active-record-method-overrideMediumAn ActiveRecord model overrides a built-in ActiveRecord method such as `save`, `create`, `destroy`, or `update`. This can cause subtle bugs when ActiveRecord lifecycle expects the original behavior.
ts.security.graphql-upload-without-csrf-guardHighLegacy GraphQL multipart upload helpers should not run alongside Apollo Server configurations that disable CSRF protections.
ts.react.no-widget-role-without-tabindexHighCustom elements that declare widget roles need to enter the tab order unless they wrap a native focusable control.
ts.performance.sequential-async-callsLowIndependent awaited calls in the same block should run concurrently. Skips test files, build scripts, and data-dependent chains.
cfn.maintainability.parameter-limitLowParameter limit
cfn.correctness.parameter-limit-not-exceededHighParameter limit not exceeded
cfn.maintainability.parameter-memory-size-attributes-should-have-max-and-minMediumParameter memory size attributes should have max and min
cfn.maintainability.parameter-name-limitLowParameter name limit
cfn.correctness.parameter-name-limit-not-exceededHighParameter name limit not exceeded
java.correctness.parameter-reassignmentLowReassigning a method parameter is confusing and can mask bugs; prefer a local variable.
cfn.maintainability.parameter-value-limitLowParameter value limit
cfn.correctness.parameter-value-limit-not-exceededHighParameter value limit not exceeded
cfn.correctness.parameters-have-appropriate-namesHighParameters have appropriate names
cfn.correctness.parameters-have-appropriate-propertiesHighParameters have appropriate properties
cfn.correctness.parameters-have-appropriate-typeHighParameters have appropriate type
ts.correctness.parse-int-on-number-literalMediumFound `parseInt()` or `Number.parseInt()` called on a number literal.
go.correctness.nil-context-passedMediumContext-accepting calls should not receive a literal `nil` as their first argument.
security.no-request-path-file-readHighFile access calls must not use request-controlled paths directly.
java.performance.pattern-compile-in-loopCriticalCalling `Pattern.compile()` inside a loop causes repeated regex compilation, leading to performance degradation.
ruby.testing.pending-without-ticket-referenceLowpending without a tracker reference is easy to forget.
php.correctness.default-parameter-not-lastHighParameters with default values must appear after required parameters.
go.bug-risk.poorly-formed-nilness-guardsCriticalThe expression uses `== nil &&` (short-circuits to the dereference when the value IS nil) or `!= nil ||` (short-circuits to the dereference when the value IS nil). Both patterns risk a nil pointer dereference.
php.correctness.named-arg-before-positionalCriticalPositional arguments cannot follow named arguments
ts.correctness.possible-null-dereferenceHighNullable values should be guarded before property access or invocation.
ruby.bug-risk.unintended-string-concatenationHighAdjacent string literals without a comma or operator between them are concatenated, which is likely a missing comma in an array or method argument.
rust.correctness.mistyped-suffixHighInteger literal suffix like `_32` or `_64` may be a typo for `_u32` or `_i64`.
java.correctness.sync-on-nullable-fieldCriticalSynchronizing on a field that may be null will throw NullPointerException at runtime.
ts.performance.unbounded-growth-memory-leakHighShared collections that only grow should be reviewed for eviction or lifecycle boundaries.
rust.security.actix-namedfile-path-traversalHighUsing `actix_web::files::NamedFile::open` or `actix_files::NamedFile::open` with an unsanitized user-controlled path can lead to directory traversal.
rust.correctness.unit-argumentHighA value from a method that returns `()` may be unintentionally passed as a function argument.
go.correctness.integer-truncationHighNarrowing an integer type before comparison may lose precision.
rust.security.potentially-vulnerable-regexHighUsage of `regex::Regex::new` with patterns containing nested quantifiers may be susceptible to ReDoS attacks when using a vulnerable crate version.
ruby.bug-risk.predicate-method-without-parenthesesHighA predicate method ending in `?` is called with an argument but without parentheses. Ruby may parse this differently than intended in compound expressions.
ruby.performance.range-cover-over-includeMedium`Range#include?` iterates the range to check membership, while `Range#cover?` uses a simple comparison. For numeric ranges, `cover?` is significantly faster.
ruby.performance.prefer-flat-mapMedium`.map { ... }.flatten` iterates the collection and then flattens the result in a second pass. `flat_map` combines both operations in a single pass.
ruby.performance.efficient-hash-searchMedium`.keys.include?(...)` and `.values.include?(...)` allocate a new array of all keys or values before searching. Use `key?` or `has_value?` instead.
ruby.performance.regex-match-over-matchMedium`.match(...)` used as a boolean condition allocates a MatchData object. Use `.match?(...)` or `===` instead when the match result is not needed.
ruby.performance.prefer-struct-over-openstructMedium`OpenStruct.new` is significantly slower and more memory-intensive than `Struct.new` for fixed-schema data objects.
ruby.performance.yield-over-block-callMediumMethods that accept a block with `&block` and call it via `block.call` should use implicit `yield` instead for better performance.
ts.vue.no-deprecated-listenersMedium$listeners was deprecated in Vue 3. Use $attrs instead, which now includes both attributes and listeners.
ts.vue.no-deprecated-scoped-slotsHigh$scopedSlots was deprecated in Vue 2.6 and merged into $slots in Vue 3. Use $slots instead.
ts.angularjs.prefer-angular-for-eachHighUse `angular.forEach` instead of native `Array.prototype.forEach` in AngularJS contexts.
ts.angularjs.prefer-angular-is-stringHighUse `angular.isString(value)` instead of `typeof value === 'string'` in AngularJS code.
ts.correctness.prefer-as-const-over-literal-typeMediumUse `as const` assertion instead of an explicit literal type annotation.
rust.correctness.std-mutex-in-async-fnMediumstd::sync::Mutex in async code encourages blocking and await deadlocks.
ruby.performance.merge-single-keyMedium`.merge!({key: value})` for a single key creates an intermediate hash. Use direct assignment `self[:key] = value` instead.
rust.correctness.unchecked-indexMediumDirect indexing with a variable can panic when the index is out of bounds.
ts.correctness.prefer-includes-over-indexofLowUse `.includes()` instead of `.indexOf()` comparison for readability.
ts.vue.no-keycode-modifiersHighNumeric keycode modifiers (e.g., @keyup.13) were deprecated in Vue 3. Use key alias modifiers instead.
ts.react.no-children-propLowPassing `children` as a named prop is harder to read than composing elements between opening and closing tags.
ts.correctness.prefer-nullish-coalescingMediumUse the nullish coalescing operator `??` instead of `||` for null/undefined defaults.
ts.vue.prefer-prop-type-constructorMediumVue prop types should reference constructor functions (e.g. String, Number) instead of string literals (e.g. "string").
java.security.shell-runtime-execHigh`Runtime.getRuntime().exec(...)` should not be invoked with a single `String` command argument; the array form (`exec(String[])`) avoids shell-style tokenization.
ts.vue.no-deprecated-model-optionMediumThe `model` option was deprecated in Vue 3. Use `v-model` arguments and `emits` instead.
java.correctness.prepared-statement-in-loopMediumCreating PreparedStatement or CallableStatement inside a loop causes repeated database parsing and compilation, leading to performance degradation and potential resource exhaustion.
java.correctness.prepared-statement-index-zeroCriticalJDBC PreparedStatement parameters use 1-based indexing; index 0 is invalid.
ruby.bug-risk.use-present-to-simplify-conditionalMediumDetects patterns like `x != nil && !x.empty?` that can be simplified to `x.present?`.
py.security.sensitive-loggingMediumPython log statements should not include tokens, secrets, or personal data that could leak in log output.
rust.correctness.print-in-display-implCritical`print!` or `println!` used inside a `Display` implementation.
ts.correctness.private-member-should-be-readonlyMediumClass members declared `private` that are never reassigned should be marked `readonly`.
ts.runtime.process-exit-control-flowHighAvoid `process.exit()` in finally blocks or followed by reachable code.
cfn.correctness.property-is-required-based-on-another-properties-valueHighProperty is required based on another properties value
cfn.correctness.property-is-unwanted-based-on-another-properties-valueHighProperty is unwanted based on another properties value
security.unsafe-deserializationHighDeserializers should not consume untrusted payloads directly across a trust boundary.
java.security.android-screenshot-exposureHighSensitive activities should enable FLAG_SECURE or avoid clearing it so screen content is harder to capture.
ruby.security.sidekiq-web-unauthenticated-mountHighSidekiq Web must not be exposed on public routes without an authentication or network guard.
java.correctness.sync-on-public-fieldHighSynchronizing on a public field allows external code to interfere with synchronization.
java.correctness.static-date-fieldHighA non-thread-safe date/time formatter or calendar is declared as a public/protected static field.
py.testing.pytest-skip-without-ticket-referenceMediumSkips without `reason=` or a nearby tracker reference are hard to triage.
ts.correctness.shared-state-raceHighAsync functions that mutate shared state after an await boundary should be reviewed for races.
ruby.bug-risk.active-job-base-subclassMediumJob class directly subclasses `ActiveJob::Base` instead of `ApplicationJob`.
ruby.bug-risk.action-mailer-base-subclassMediumMailer class directly subclasses `ActionMailer::Base` instead of `ApplicationMailer`.
ruby.bug-risk.active-record-base-subclassMediumModel class directly subclasses `ActiveRecord::Base` instead of `ApplicationRecord`.
ruby.bug-risk.irreversible-migrationHighMigration uses irreversible operations in `change`, or defines one direction method (`up` or `down`) without the other.
ruby.bug-risk.invalid-rails-env-predicateHigh`Rails.env.<unknown>?` is called where `<unknown>` is not a known Rails environment name. This likely indicates a typo or non-standard environment.
ruby.bug-risk.rake-task-missing-environmentHighRake tasks that load application code should declare `:environment` as a dependency to ensure Rails is loaded before execution.
rust.security.raw-slice-to-ptrHighCreating a raw pointer from a slice reference using `as *const` or `as *mut` can lead to dangling pointers if the slice reference lifetime is not respected.
cfn.correctness.rds-instance-type-is-compatible-with-the-rds-typeHighRds instance type is compatible with the rds type
java.correctness.readline-without-null-checkHighThe result of `readLine()` is dereferenced without a null check.
java.correctness.read-resolve-return-typeHighThe readResolve method in a Serializable class must have a return type of Object. A non-Object return type will cause the method to be silently ignored during deserialization.
ts.correctness.reassign-class-memberHighDetects reassigning class member issues in JavaScript and TypeScript source.
ts.correctness.reassign-const-bindingMediumDetects reassigning const binding issues in JavaScript and TypeScript source.
ts.correctness.reassign-catch-bindingMediumThe catch clause parameter is assigned or updated after it is bound.
ts.correctness.reassign-function-declarationLowA declared function name is later reassigned, which breaks hoisting expectations.
cfn.correctness.recordset-hostedzonename-is-a-superdomain-of-nameHighRecordset hostedzonename is a superdomain of name
go.bug-risk.redis-incorrect-arg-countHighRedis variadic methods such as `MemoryUsage`, `ZPopMax`, `ZPopMin`, and `BitPos` accept a specific number of arguments. Passing too many will cause a runtime panic.
ts.security.express-reduce-fingerprintMediumExpress apps should disable `x-powered-by` or equivalent fingerprinting headers.
ruby.bug-risk.redundant-allow-nilMediumA `validates` declaration includes both `allow_nil: true` and `allow_blank: true`. Since `allow_blank: true` already permits `nil` values, the `allow_nil` option is redundant.
ruby.bug-risk.redundant-foreign-keyHighExplicit `foreign_key` matches the Rails default convention (`<association_name>_id`). The explicit declaration is redundant.
go.correctness.redundant-type-declarationHighThe explicit type in `var count int = 10` is unnecessary — Go can infer it from the RHS literal.
ruby.bug-risk.redundant-with-options-receiverMediumInside a `with_options` block, use implicit method calls instead of explicitly calling methods on the block variable.
cfn.correctness.ref-validation-of-valueHighRef validation of value
cfn.maintainability.ref-getatt-to-resource-that-is-available-when-conditions-are-appliedMediumRef/getatt to resource that is available when conditions are applied
php.correctness.undefined-constant-referenceCriticalReference only defined constants
ruby.bug-risk.regex-literal-in-conditionHighA regex literal is used directly as a condition expression. Without `=~` or `.match?` the regex is always truthy, making the condition behave unexpectedly.
ts.security.nestjs-helmet-after-route-mountMediumNest bootstrap files should apply Helmet before mounting path-bound routers.
rust.security.insecure-ssl-protocolHighRust code must not enable SSLv3, TLS 1.0, or TLS 1.1 in TLS configuration.
ts.correctness.promise-reject-non-errorMediumPromise rejections and async throws should use Error objects.
go.security.insecure-ssl-protocolHigh`tls.VersionSSL30`, SSLv2, or SSLv3 string literals indicate use of broken legacy protocols.
ruby.bug-risk.relative-date-as-constantHighConstants should not be assigned relative date/time expressions because they are evaluated at load time, not at runtime.
ts.runtime.no-debugger-statementMediumRemove debugger statements before committing source files.
ts.quality.no-dead-exportLowExported symbols with no known consumers increase maintenance overhead.
php.security.debug-function-exposureMediumvar_dump, print_r, debug_zval_dump, and xdebug helpers should not ship in application code paths.
ruby.security.debugger-callMediumDebugger breakpoints must not ship in non-test Ruby sources.
py.security.debugger-importMediumProduction Python modules should not ship with interactive debugger imports.
php.correctness.deprecated-unset-castMediumThe `(unset)` cast is deprecated and should not be used in modern PHP code.
php.correctness.deprecated-libxml-entity-loaderMediumlibxml_disable_entity_loader() is deprecated and no longer needed on supported PHP versions.
php.correctness.duplicate-declarationHighFunctions, classes, traits, and interfaces must be declared only once per file.
ts.react.no-duplicate-jsx-attributesMediumRepeating the same prop on a JSX element makes the last value win silently and hides author intent.
php.correctness.empty-code-blockLowEmpty control-flow blocks hide missing logic or unfinished branches.
php.correctness.empty-array-literal-slotMediumArray literals with consecutive commas define empty slots that are easy to miss during review.
ts.testing.no-focused-testMediumFocused tests such as it.only or describe.only should not ship because they silence the rest of the suite in CI.
ruby.testing.focused-exampleMediumfit and fdescribe skip the rest of the suite and should not ship.
ts.security.debug-statement-in-sourceLow`console.trace()` calls should not ship in production code outside an explicit dev-only branch.
php.correctness.redundant-string-cast-concatLowCasting to string immediately before concatenation is usually redundant in PHP.
php.correctness.self-assignmentLowAssigning a variable to itself has no effect.
ts.security.jwt-sensitive-claimsHighJWT payloads should avoid embedding PII or secrets unless absolutely required.
ts.react.no-unnecessary-fragmentLowFragments wrapping a single child add runtime overhead without structural benefit.
php.correctness.unreachable-after-returnLowCode after `return` or `throw` in the same block never runs.
php.correctness.unused-constructor-parameterHighConstructor parameters that are not referenced in the constructor body should be removed.
php.correctness.unused-importHighRemove unused import statements
php.correctness.useless-post-incrementLowStandalone post-increment statements with discarded results are usually mistakes.
php.correctness.useless-unsetLowCalling unset on literals or non-variables has no effect.
go.security.weak-tls-cipherHigh`tls.Config.CipherSuites` should not include RC4, DES, 3DES, NULL, or export-grade cipher constants.
java.performance.removeall-to-clearCriticalCalling `collection.removeAll(collection)` is equivalent to `collection.clear()` but performs unnecessary iteration and element comparisons.
ruby.bug-risk.renamed-column-accessedHighA migration renames a database column. Model files may still reference the old column name.
ts.react.no-render-invalid-return-typeHighA render method that returns a number, boolean, or plain object will produce an empty or broken UI.
go.performance.reorder-operandsHighBoolean `&&`/`||` expressions should place cheap operands on the left so expensive calls are skipped when possible.
ts.performance.repeated-expensive-computationMediumRepeating the same expensive computation in one block should usually be cached.
ts.performance.repeated-io-in-loopHighDatabase or network calls inside loops can multiply latency and load.
php.correctness.deprecated-filter-constantMediumSeveral FILTER_* constants are deprecated and should not be used in new code.
ts.security.legacy-buffer-constructorMediumUse Buffer.from, Buffer.alloc, or Buffer.allocUnsafe instead of the deprecated Buffer constructor.
rust.correctness.self-not-self-typeCritical`self` used in return type or type position where uppercase `Self` is expected.
ruby.bug-risk.all-each-to-find-eachMedium`Model.all.each` loads all records into memory. Use `find_each` for batch processing.
ruby.bug-risk.console-output-instead-of-loggerMediumUses `puts`, `print`, `p`, or `pp` instead of a structured logger for diagnostic output.
ts.security.express-nosql-injectionHighExpress handlers should not pass raw request objects into NoSQL filters, query helpers, or aggregation pipelines to prevent injection attacks.
ts.security.weak-tls-versionHighTransport clients should not explicitly allow SSLv3, TLS 1.0, or TLS 1.1.
php.security.wordpress-missing-nonce-or-capabilityHighWordPress admin/AJAX mutation callbacks should verify nonce tokens and enforce capability checks.
ts.correctness.require-outside-importHighUse ES module `import` syntax instead of `require()` calls.
cfn.correctness.required-resource-properties-are-missingHighRequired resource properties are missing
php.correctness.todo-fixme-markerLowTODO, FIXME, XXX, and HACK comments mark unfinished or risky work.
cfn.correctness.resource-dependencies-are-not-circularHighResource dependencies are not circular
cfn.correctness.resource-ec2-security-group-ingress-propertiesHighResource ec2 security group ingress properties
cfn.correctness.resource-elb-propertiesHighResource elb properties
cfn.maintainability.resource-limitLowResource limit
cfn.correctness.resource-limit-not-exceededHighResource limit not exceeded
cfn.maintainability.resource-name-limitLowResource name limit
cfn.correctness.resource-name-limit-not-exceededHighResource name limit not exceeded
cfn.correctness.resource-properties-are-invalidHighResource properties are invalid
cfn.correctness.resource-schemaHighResource schema
cfn.correctness.resource-subnetroutetableassociation-propertiesHighResource subnetroutetableassociation properties
cfn.correctness.resources-have-appropriate-namesHighResources have appropriate names
java.security.spring-actuator-sensitive-exposureHighActuator `management.endpoints.web.exposure.include` should not expose wildcards or high-risk endpoints (such as `env`, `beans`, or `heapdump`) without deliberate access control.
ts.correctness.restricted-global-variableMediumDetects restricted global variable issues in JavaScript and TypeScript source.
ts.correctness.restricted-object-propertyLowDetects restricted object property access issues in JavaScript and TypeScript source.
java.correctness.result-set-index-zeroCriticalJDBC ResultSet methods use 1-based indexing; index 0 is invalid.
ts.correctness.setter-return-valueMediumDetects return value from setter issues in JavaScript and TypeScript source.
ts.correctness.constructor-return-valueMediumDetects return value in constructor issues in JavaScript and TypeScript source.
java.correctness.ignored-inputstream-readMediumCalling `read()` on an InputStream without using the return value discards data.
java.correctness.ignored-inputstream-skipMediumCalling `skip()` on an InputStream without using the return value discards data.
go.correctness.nil-error-returnedHighReturning nil, nil may indicate a missing result or an error that should be returned instead.
ts.security.datadog-browser-track-user-interactionsMediumDatadog Browser RUM should not enable broad user interaction capture without a privacy review.
py.security.django-format-html-unsafeHighDjango `format_html` calls with placeholder templates and dynamic arguments should be reviewed for unsafe output composition.
ruby.testing.skip-without-ticket-referenceMediumskip(...) without a nearby tracker reference is hard to triage.
java.correctness.runnable-run-directMediumCalling `run()` on a Thread or Runnable directly bypasses the new thread and executes in the caller's thread.
ruby.bug-risk.safe-navigation-with-blankHighThe safe navigation operator `&.` already handles nil, making `blank?` redundant when used with it.
ruby.bug-risk.safe-navigation-with-emptyHigh`&.empty?`, `&.blank?`, or `&.present?` is used in a conditional context. When the receiver is nil, the safe navigation returns nil, which is falsy regardless of the predicate result.
security.archive-path-traversalHighArchive extraction should not write entry names directly to the filesystem.
go.security.tar-path-traversalHighTar extraction must normalize `header.Name` with `filepath.Base` or `filepath.Clean` before opening destination files.
py.security.flask-unsafe-upload-filenameHighFlask upload handlers should pass filenames through `secure_filename` (or equivalent) before persisting to disk.
rust.security.template-unescaped-request-valueHighTera, Maud, and similar engines should not insert request-sourced strings into contexts or `PreEscaped`/`raw` sinks without sanitization.
ts.security.log-injectionMediumLogger calls in pino, winston, bunyan, and consola should not interpolate or concatenate request input directly into the message text.
cfn.correctness.select-validation-of-parametersHighSelect validation of parameters
ts.correctness.self-assignmentLowAn assignment uses the same expression on the left and right side.
ruby.bug-risk.self-assignmentHighA variable, constant, or multi-assignment is assigned to itself. This is likely a copy-paste error that makes the assignment a no-op.
java.correctness.self-assignmentHighA local variable is assigned to itself, which has no effect.
ts.security.sensitive-data-egressHighSensitive values should not be sent to external processors or outbound SDKs without minimization or redaction.
security.sensitive-data-egressHighSensitive values should not be sent to external processors or outbound SDKs without minimization or redaction.
ts.security.sensitive-data-written-to-fileMediumFile writes that persist fields like passwords, tokens, secrets, credentials, or PII (email, SSN, phone) risk data exposure.
ts.performance.no-await-in-loopMediumUsing await inside a loop serializes async operations, multiplying total latency.
java.correctness.serializable-superclassHighA Serializable class has a non-serializable superclass that may lack a no-arg constructor, which will cause deserialization to fail with InvalidClassException.
java.correctness.invalid-serial-version-uidHighThe serialVersionUID field must be declared as static final long to serve as a valid serialization identifier.
ts.security.express-static-assets-after-sessionMediumStatic assets should be mounted before session middleware when they do not need session state.
ts.security.ssrfHighOutbound requests should not use attacker-controlled targets or private hosts.
ts.security.express-cookie-missing-http-onlyMediumExpress session and cookie-session configs should not disable the `HttpOnly` flag.
ts.security.express-insecure-cookieMediumExpress session and cookie-session configs should not disable the `Secure` flag.
rust.security.tls-missing-min-versionHighRust TLS client and server configuration should set an explicit minimum protocol version (TLS 1.2 or newer).
go.security.tls-missing-min-versionMedium`tls.Config` literals should set `MinVersion` to a modern protocol (`tls.VersionTLS12` or newer) to avoid downgrade attacks.
ts.security.express-unbounded-body-parserMediumExpress and Body Parser middleware plus Multer should declare explicit payload limits.
py.security.flask-missing-upload-body-limitMediumFlask apps handling uploads should configure `MAX_CONTENT_LENGTH` to bound request bodies.
rust.security.global-write-permissionCriticalUsing world-writable permissions (0o777, 0o666) on files or directories allows any user to modify them, creating a security risk.
java.testing.setup-without-superHighJUnit 3 `setUp()` methods in test classes that extend `TestCase` must call `super.setUp()` for base class initialization.
java.testing.setup-teardown-annotationHighJUnit 3-style setUp/tearDown methods are silently ignored in JUnit 4/5 without @Before/@After or @BeforeEach/@AfterEach annotations.
java.correctness.shift-out-of-rangeHighBit-shift operations with out-of-range amounts produce undefined or unexpected behavior for int and long operands.
ruby.bug-risk.use-blank-simplifyLowReplace `obj.nil? || obj.empty?` with `obj.blank?` for simpler code.
java.performance.single-char-string-indexofHighUsing a single-character `String` literal in `indexOf()`, `lastIndexOf()`, or `contains()` is less efficient than using a `char` literal.
ts.testing.no-skipped-test-without-ticketMediumSkipped or disabled tests should reference a tracked issue, expiry, or accepted suppression comment.
ts.testing.no-snapshot-without-intentLowSnapshot matchers without a snapshot name or preceding intent comment are hard to review in diffs.
cfn.correctness.snapstart-supports-the-configured-runtimeHighSnapstart supports the configured runtime
ts.correctness.sparse-array-literalLowAn array literal contains empty slots that create a sparse array.
cfn.correctness.split-validation-of-parametersHighSplit validation of parameters
ruby.bug-risk.use-square-brackets-for-attributesMediumUses `read_attribute` or `write_attribute` instead of the shorter `self[:attr]` / `self[:attr] = val` syntax.
ruby.bug-risk.raw-sql-without-squishLowNormalize heredoc SQL with squish before passing to where or find_by_sql.
php.correctness.invalid-static-methodCriticalCalling self::method() or static::method() when the method is not declared as static will produce a deprecation notice in PHP 8.2+ and an error in future versions.
java.correctness.stream-reuseHighA Stream variable has multiple terminal operations invoked on it.
go.correctness.string-concat-simplifyMediumString concatenation patterns like `strings.Join(parts, "")` or `fmt.Sprintf("%s%s", a, b)` can be simplified.
java.performance.string-concat-in-loopHighString concatenation using `+=` or `= ... + ...` inside a loop creates many intermediate String objects, degrading performance.
java.performance.replaceall-instead-of-replaceHighUsing `String.replaceAll()` with a literal (non-regex) string argument is less efficient than `String.replace()`.
java.correctness.stringbuilder-char-ctorCriticalStringBuilder/StringBuffer constructed with a single char argument behaves as a capacity argument, not a string value.
cfn.correctness.sub-is-required-if-a-variable-is-used-in-a-stringHighSub is required if a variable is used in a string
cfn.maintainability.sub-isn-t-needed-if-it-doesn-t-have-a-variable-definedMediumSub isn't needed if it doesn't have a variable defined
cfn.correctness.sub-validation-of-parametersHighSub validation of parameters
cfn.maintainability.sub-validation-of-parameters-w1019MediumSub validation of parameters
ts.react.no-click-without-keyboard-handlerHighNon-interactive JSX elements that respond to clicks also need an equivalent keyboard path.
ruby.bug-risk.suppressed-exceptionsHighA rescue block has no body, silently swallowing all exceptions. Every rescue should at minimum log the error or re-raise.
rust.quality.env-string-literalMediumThe argument to `env!` does not resemble an environment variable name.
go.correctness.suspicious-regex-patternHighAn unescaped dot (`.`) in a regex pattern matches any character, not a literal dot.
java.correctness.switch-statement-labelsCriticalStatement labels inside switch blocks are confusing and likely unintended.
ts.correctness.switch-case-fallthroughMediumDetects switch case fallthrough issues in JavaScript and TypeScript source.
java.correctness.sync-on-lock-primitiveMediumSynchronizing on a ReentrantLock or other lock primitive defeats the lock's purpose.
java.correctness.sync-on-mutable-refHighSynchronizing on a non-final field means the lock object can be reassigned, breaking synchronization guarantees.
java.correctness.sync-on-get-classHighSynchronizing on `getClass()` locks on the runtime Class object, which can vary for subclasses.
rust.correctness.syntax-errorCriticalSource contains invalid syntax such as multi-character char literals or unclosed strings.
java.correctness.system-exitHighCalling `System.exit()` outside of `main()` or framework entry points makes code hard to test and may terminate the JVM unexpectedly.
java.correctness.runfinalizers-on-exitCriticalCalling `System.runFinalizersOnExit()` or `Runtime.runFinalizersOnExit()` is inherently unsafe.
go.testing.t-skip-without-ticket-referenceMediumGo tests that call t.Skip without a nearby tracker reference are easy to forget.
ruby.bug-risk.table-without-timestampsMediumAdd `t.timestamps` to `create_table` blocks to include `created_at` and `updated_at` columns.
java.testing.teardown-without-superHighJUnit 3 `tearDown()` methods in test classes extending `TestCase` should call `super.tearDown()` for base class cleanup.
cfn.correctness.template-description-can-only-be-a-stringHighTemplate description can only be a string
cfn.correctness.template-description-limitHighTemplate description limit
cfn.maintainability.template-description-limit-i1003LowTemplate description limit
ts.correctness.template-placeholder-in-stringMediumDetects template placeholder in regular string issues in JavaScript and TypeScript source.
cfn.correctness.template-size-limitHighTemplate size limit
cfn.maintainability.template-size-limit-i1002LowTemplate size limit
go.correctness.terminal-call-with-deferHighos.Exit/log.Fatal skips deferred calls, leaving resources in an inconsistent state.
java.correctness.modulus-multiplication-precedenceHighMixing `%` and `*` without parentheses creates ambiguous precedence that may not match developer intent.
ts.correctness.this-before-superHighDo not use this or super members before calling super() in a subclass constructor.
java.correctness.thread-static-misuseCriticalCalling static Thread methods like sleep(), yield(), or interrupted() on a Thread instance is misleading because they operate on the current thread, not the instance.
java.performance.thread-as-runnableHighPassing `new Thread(runnable)` to an executor or scheduler creates unnecessary Thread objects.
java.correctness.thread-sleep-with-lockCriticalCalling Thread.sleep() inside a synchronized block keeps the lock held, causing contention or deadlocks.
ts.security.no-throw-literalMediumOnly throw `Error` instances (or subclasses), not strings, numbers, or plain objects.
php.correctness.throw-as-expressionCriticalThrow expressions require PHP 8.0+
ts.quality.tight-module-couplingMediumDirect import cycles between modules increase coupling and make change boundaries harder to maintain.
ruby.bug-risk.time-without-zoneHigh`Time.now`, `Time.parse`, `Time.current`, `Time.at`, or `Time.new` is used without a zone wrapper. Use `Time.zone.now` to respect the configured time zone.
java.correctness.timezone-invalid-idHigh`TimeZone.getTimeZone()` silently returns GMT for unrecognized IDs instead of throwing. Hardcoded strings should be valid timezone IDs.
security.tls-verification-disabledHighTransport clients should not disable certificate verification.
cfn.correctness.tojsonstring-validation-of-parametersHighTojsonstring validation of parameters
ts.security.token-or-session-not-validatedHighSession and token values from external input should be verified before authentication or identity use.
java.performance.string-to-stringHighCalling `toString()` on a string literal or string variable creates an unnecessary identity copy.
ruby.bug-risk.trailing-comma-attributeHighAn `attr_reader`, `attr_writer`, or `attr_accessor` declaration has a trailing comma after the last symbol. This does not cause a syntax error but may indicate an incomplete declaration.
sql.style.trailing-select-commaHighRemove trailing commas before FROM in SELECT statements
php.correctness.trait-as-attributeCriticalTraits cannot be used as attributes
rust.correctness.transmute-integer-to-nonzeroCritical`transmute` used to convert between an integer type and a `NonZero` type.
rust.correctness.transmute-int-to-fn-ptrCritical`transmute` used to convert an integer to a function pointer.
rust.correctness.transmute-int-lit-to-raw-ptrCritical`transmute` used to convert an integer literal to a raw pointer.
rust.correctness.transmute-number-to-slice-or-arrayCritical`transmute` used to reinterpret a numeric value as an array or slice.
rust.correctness.transmute-tuple-to-slice-or-arrayCritical`transmute` used to reinterpret a tuple as an array or slice.
rust.correctness.transmute-float-char-to-ref-or-ptrCritical`transmute` used to reinterpret a float or char value as a reference or pointer.
rust.correctness.transmute-integer-to-charCritical`transmute` used to convert an integer to a `char`.
java.quality.type-name-uppercaseLowClass, interface, and enum names should start with an uppercase letter per Java naming conventions.
ts.correctness.no-ts-suppress-directiveHighAvoid `@ts-ignore`, `@ts-nocheck`, and `@ts-expect-error` directives.
ruby.bug-risk.inconsistent-request-referrerLow`request.referrer` is a common misspelling of `request.referer`.
ts.react.no-lifecycle-method-typoHighA misspelled lifecycle method name will never be called by React, leading to silent runtime bugs.
go.correctness.unexported-capital-nameMediumUnexported types with exported fields may indicate a design inconsistency.
ts.correctness.unchecked-map-key-accessMediumLookups should verify key presence before reading from maps or keyed objects.
java.correctness.unconditional-recursionCriticalA method calls itself without a conditional guard, causing infinite recursion.
ts.correctness.undeclared-variableLowDetects undeclared variable reference issues in JavaScript and TypeScript source.
php.correctness.undefined-functionCriticalCalling a function that is not defined in the current file and is not a known PHP built-in function will cause a runtime fatal error.
php.correctness.undefined-methodCriticalCalling a method on $this, self::, or static:: that is not declared in the enclosing class will cause a runtime error.
php.correctness.undefined-propertyHighAccessing a property via $this-> that is not declared on the class will cause a runtime notice.
sql.correctness.undefined-referenceHighQualify column references with known tables or aliases only
ts.correctness.unhandled-async-errorMediumPromise chains started in a function should terminate with explicit rejection handling.
go.bug-risk.redis-unimplemented-methodHigh`Sync(ctx)` and `Quit(ctx)` are listed in the go-redis interface but are not implemented — calling them panics at runtime.
cfn.correctness.unique-resource-and-parameter-namesHighUnique resource and parameter names
java.doc.unmatched-parameter-tagLow@param tags must reference declared method parameters.
ts.performance.retained-large-objectMediumLarge payloads assigned into shared state should be reviewed for shorter lifetimes.
go.correctness.unnecessary-dereferenceHighUnnecessary pointer dereference when accessing struct fields or indexing — Go auto-dereferences pointers in these contexts.
ts.performance.unnecessary-rerenders-from-state-misuseMediumReact state setters invoked directly during render should be reviewed for rerender loops.
ruby.bug-risk.unnecessary-requireHighA `require` or `require_relative` statement that duplicates an earlier one is unnecessary. Requiring `rubygems` is also unnecessary in modern Ruby.
ts.correctness.unnecessary-return-awaitLowRemove redundant return await
ruby.bug-risk.unnecessary-splatHighUsing the splat operator `*` on an array inside `[...]` or in a method argument is redundant when the array could be used directly.
sql.style.unqualified-referencesHighQualify column references with table name or alias when querying multiple tables
go.correctness.unreachable-switch-caseHighCase after return/break/panic without fallthrough is unreachable.
ts.correctness.unreachable-statementLowStatements after terminal exits should be removed or moved before the exit.
ruby.bug-risk.unreachable-codeHighCode following `return`, `raise`, `exit`, `abort`, `throw`, or `fail` at the same indentation level will never execute.
java.correctness.unsafe-collection-downcastHighCasting a collection interface reference to a concrete implementation type without an instanceof check may cause ClassCastException at runtime.
ruby.bug-risk.unsafe-number-conversionHigh`Integer()`, `Float()`, `Rational()`, and `Complex()` can raise `ArgumentError` on invalid input. Prefer safe alternatives or wrap in a rescue block.
ruby.bug-risk.unsafe-safe-navigation-chainHighA `&.` (safe navigation) call is followed by a non-safe method chain. The chained call may receive `nil` and raise `NoMethodError`.
java.correctness.unsafe-getresourceMediumUsing `getClass().getResource()` with a relative path may fail in subclasses.
java.correctness.unsupported-jdk-apiHighImporting or using sun.* or com.sun.* internal APIs introduces portability issues and risks breakage across JDK versions.
java.correctness.unsync-static-lazy-initCriticalStatic field lazy initialization without synchronization can expose partially constructed objects to other threads.
ts.correctness.unused-expressionMediumExpression statement has no side effects and its result is discarded.
ruby.bug-risk.unused-method-argumentsLowA method argument prefixed with underscore is used in the method body, contradicting the convention that underscore-prefixed names indicate intentionally unused parameters.
sql.style.unused-table-aliasHighEach table alias should be referenced in the query
ts.correctness.unused-variableLowDetects unused variable issues in JavaScript and TypeScript source.
ts.correctness.regexp-pattern-unusual-control-characterLowThe regular expression pattern embeds low ASCII control characters outside common whitespace.
ts.testing.no-missing-edge-case-testsMediumDiffs that touch many branches in critical service paths should update paired tests in the same change.
ts.security.unsafe-dompurify-versionHighDOM sanitization libraries should stay on patched versions before they are trusted for untrusted HTML.
ts.security.unsafe-marked-versionHighMarkdown renderers should stay on patched versions before rendering untrusted content.
java.performance.empty-string-constructorHigh`new String()` creates an unnecessary object; use the empty string literal `""` instead.
rust.quality.iter-nth-instead-of-getMedium`.iter().nth(idx)` on collections supporting indexing is less performant than `.get(idx)`.
rust.quality.iter-count-instead-of-lenMedium`.iter().count()` is unnecessarily expensive compared to `.len()`.
go.performance.iowriter-write-stringHighPrefer `w.WriteString(s)` over `w.Write([]byte(s))` to avoid `[]byte` allocation, or over `io.WriteString(w, s)` which incurs dynamic dispatch.
rust.quality.crate-in-macro-definitionHighInside `macro_rules!`, use `$crate::` to refer to the defining crate, not `crate::`.
php.security.wordpress-unprepared-sqlHighWordPress SQL calls should not interpolate request values directly into query strings.
go.correctness.interface-any-preferredHighGo 1.18 introduced `any` as an alias for `interface{}`. Prefer `any` for brevity.
ruby.bug-risk.non-preferred-assert-falsenessMediumPrefer `assert_not` over `refute` for negative assertions.
java.correctness.duration-with-nanos-misuseHighCalling `Duration.withNanos()` may produce unexpected results because it only sets the nanos-of-second component, not the total duration.
go.performance.fmt-fprintHighPrefer `fmt.Fprint(w, ...)` over `w.Write([]byte(fmt.Sprintf(...)))` for writing formatted output.
go.performance.non-idiomatic-slice-zeroingHighA three-clause `for i := 0; i < len(s); i++ { s[i] = <zero> }` is slower and less idiomatic than `for i := range s { s[i] = <zero> }`.
java.correctness.class-isinstance-on-classHighCalling `.class.isInstance(obj)` should be replaced with `obj instanceof Type` for clarity and type safety.
rust.quality.redundant-mem-replace-with-defaultMedium`mem::replace(&mut val, Default::default())` can be replaced with `mem::take(&mut val)`.
rust.quality.redundant-mem-replace-with-zeroMedium`mem::replace(&mut val, 0/false/"")` can be replaced with `mem::take(&mut val)`.
rust.quality.redundant-mem-replace-with-noneMedium`mem::replace(&mut opt, None)` can be replaced with `opt.take()` which is simpler and more idiomatic.
rust.security.misused-bitwise-xorMediumBitwise XOR (`^`) should not be used for exponentiation. `X ^ Y` performs bitwise XOR, not `X` to the power of `Y`.
go.performance.utf8-decode-runeHighThe `[]rune(str)[0]` pattern allocates a rune slice. Use `utf8.DecodeRuneInString(str)` for single-rune access.
go.security.incomplete-hostname-regexMediumRegex patterns used for hostname validation should use start (`^`) and end (`$`) anchors, escape literal dots, and avoid overly permissive character classes that allow subdomains or non-hostname input through.
go.security.weak-bcrypt-costHigh`bcrypt.GenerateFromPassword` (and similar helpers) must use a cost factor of at least `bcrypt.DefaultCost` (10).
ruby.bug-risk.assert-not-usageLowReplace `assert !` with `assert_not` for clearer test assertions.
java.security.weak-rsa-key-sizeHighRSA key generation should request a key size of 2048 bits or higher.
go.security.weak-rsa-key-sizeHigh`rsa.GenerateKey` and `rsa.GenerateMultiPrimeKey` should request a key size of 2048 bits or higher.
ts.security.missing-integrity-checkHighSession, cookie, and token encryption should provide integrity protection in the same helper.
php.correctness.break-continue-outside-loopHighbreak and continue outside a loop or switch block are invalid control flow.
php.correctness.psr-method-camel-caseHighUse camelCase for class method names
ts.vue.require-transition-conditionalMediumThe `<Transition>` component should be used with conditional rendering to control enter/leave animations.
ts.security.observable-timing-discrepancyMediumSecrets and tokens should not be compared with ordinary equality operators.
ruby.bug-risk.use-delegateLowReplace simple delegation methods with the `delegate` macro.
ruby.performance.prefer-delete-prefixMediumCalling `gsub(/\Aprefix/, '')` compiles and runs a regex to strip a literal prefix. `String#delete_prefix` is faster and clearer.
ruby.performance.prefer-delete-suffixMediumCalling `gsub(/suffix\z/, '')` compiles and runs a regex to strip a literal suffix. `String#delete_suffix` is faster and clearer.
rust.quality.inaccurate-duration-calculationMediumManual division of `subsec_micros()` or `subsec_nanos()` can be inaccurate.
ts.security.insufficiently-random-valuesHighSecret-bearing tokens and secrets should use at least 16 bytes of cryptographic entropy.
ruby.performance.enumerable-index-byMediumUses `.map { |e| [e.key, e] }.to_h` which can be replaced with `.index_by(&:key)` for clearer intent and better performance.
ruby.performance.enumerable-index-withMediumUses `.map { |e| [e, e.value] }.to_h` which can be replaced with `.index_with(&:value)` for clearer intent and better performance.
ruby.bug-risk.plain-method-instead-of-procHighA `method(:name)` call is passed directly to a block-accepting method. Use `&method(:name)` or an explicit block/lambda instead.
ts.correctness.use-number-is-nanMediumDo not compare values to NaN with `===` or `==`.
ruby.bug-risk.routes-match-single-verbHigh`match` in Rails routes should be used only when multiple HTTP verbs are handled. Prefer the specific verb helper (`get`, `post`, etc.) for single-verb routes.
ruby.bug-risk.use-presence-over-explicit-checkMediumDetects ternary expressions like `a.present? ? a : nil` or `a.blank? ? nil : a` that can be simplified to `a.presence`.
ruby.bug-risk.active-support-aliasMediumAn ActiveSupport alias method (`starts_with?`, `ends_with?`, `append`, `prepend`) is used instead of the core Ruby equivalent.
go.correctness.bare-returnMediumBare returns in named-return functions return the current values of return parameters, which can be surprising.
ruby.bug-risk.dependent-option-cascadeMediumAssociation `dependent:` option can lead to unexpected cascade deletes or orphaned records.
ruby.bug-risk.deprecated-filter-methodsMediumRails controller uses `before_filter`, `after_filter`, `around_filter`, or similar legacy filter methods instead of the modern `*_action` equivalents.
ruby.bug-risk.active-record-aliasMediumActiveRecord method `update_attributes` or `update_attributes!` is called. These are deprecated aliases for `update` and `update!`.
ruby.bug-risk.deprecated-find-by-dynamicMedium`find_by_*` dynamic finder methods (e.g. `find_by_email`) are deprecated in Rails and will raise a deprecation warning.
go.bug-risk.deprecated-redis-methodsHighCall to deprecated go-redis method (XTrim, XTrimApprox, ZAddCh, ZAddNXCh, ZAddXXCh, ZIncr, ZIncrNX, ZIncrXX). These methods have been removed or replaced in newer versions of the library.
ruby.bug-risk.has-and-belongs-to-manyMediumUse `has_many :through` instead of `has_and_belongs_to_many` for more flexibility.
ruby.bug-risk.helper-instance-variablesLowAvoid instance variables in view helpers. Pass data explicitly as local variables.
ruby.bug-risk.http-methods-without-paramsMediumTest HTTP helper methods like `get`, `post` should explicitly pass a params argument for clarity.
go.bug-risk.reflect-makefunc-usageHigh`reflect.MakeFunc` dynamically constructs a function at runtime. This is a powerful but dangerous operation — audit that type safety is preserved.
php.correctness.switch-multiple-defaultHighA switch statement must not declare more than one default branch.
php.correctness.unknown-magic-methodMediumPHP recognizes a fixed set of double-underscore magic methods.
ruby.bug-risk.deprecated-belongs-to-requiredMediumReplace `required: true` with `optional: false` in `belongs_to` declarations for Rails 5+.
py.correctness.super-with-argumentsLowPython 3 supports super() without arguments in class methods
php.correctness.psr-class-constant-namingHighUse PSR-12 uppercase snake case for class constants
ruby.bug-risk.unqualified-constantHighA bare constant reference is used where a qualified constant (prefixed with the module namespace) may be expected. This may reference an unexpected constant.
ruby.bug-risk.rails-root-joinLowPath concatenation with `Rails.root` using `+` or `File.join` is less idiomatic than using `Rails.root.join`.
ts.react.no-invalid-anchor-hrefMediumLinks need a concrete `href` so navigation, keyboard activation, and assistive technologies behave predictably.
rust.security.weak-rsa-key-sizeHighRSA key generation must use at least 2048 bits.
ruby.bug-risk.inconsistent-safe-navigation-tryMediumUse the safe navigation operator (`&.`) instead of `.try!()`.
go.security.squirrel-unsafe-quotingHigh`squirrel.Expr` (or `sq.Expr`) with `fmt.Sprintf` interpolation constructs SQL queries via string formatting, enabling SQL injection when arguments contain untrusted data.
py.security.insecure-yaml-loadMediumPython YAML parsing should use `SafeLoader` when calling `yaml.load`.
ts.security.insecure-websocket-transportHighWebSocket clients should not connect over cleartext `ws://` when sensitive application data is involved.
cfn.maintainability.use-sub-instead-of-joinLowUse sub instead of join
ruby.bug-risk.deprecated-http-status-symbolsMediumPrefer numeric HTTP status codes over symbolic references for clarity.
php.correctness.invalid-arrow-function-typehintCriticalUse valid arrow function typehints
php.correctness.invalid-closure-return-typehintCriticalUse valid closure return typehints
php.correctness.invalid-cookie-optionsMediumsetcookie and setrawcookie option arrays only accept documented keys.
php.correctness.invalid-return-typehintCriticalUse valid function return typehints
php.correctness.invalid-type-castCriticalUse valid PHP cast types
ruby.bug-risk.bad-date-usageMediumPrefer `Time.zone` or `Date.current` over `Date.today`, `Date.parse`, `DateTime.now`, or `DateTime.current`.
ruby.bug-risk.useless-access-modifierLowA `private`, `protected`, or `public` modifier is redundant (applied after the same modifier, or at end of class/end of module with no methods in between).
ts.testing.useless-assertionMediumAssertions that compare a static primitive literal against itself will never fail.
ts.correctness.regexp-useless-backreferenceMediumDetects useless regex backreference issues in JavaScript and TypeScript source.
java.correctness.week-year-in-date-patternHighYYYY represents the ISO week year, not the calendar year, which can cause dates around year boundaries to be off by one year.
cfn.correctness.validate-accesscontrol-are-set-with-ownershipcontrolsHighValidate accesscontrol are set with ownershipcontrols
cfn.correctness.validate-aws-event-scheduleexpression-formatHighValidate aws event scheduleexpression format
ts.security.electron-missing-ipc-origin-checkHighPrivileged ipcMain handlers should validate event.sender origins before acting.
cfn.correctness.validate-parameters-for-in-a-nested-stackHighValidate parameters for in a nested stack
cfn.correctness.validate-route53-recordsetsHighValidate route53 recordsets
cfn.maintainability.validate-that-snapstart-is-configured-for-java11-runtimesLowValidate that snapstart is configured for >= java11 runtimes
cfn.maintainability.validate-that-snapstart-is-properly-configuredMediumValidate that snapstart is properly configured
cfn.correctness.validate-the-configuration-of-the-metadata-sectionHighValidate the configuration of the metadata section
ts.security.unvalidated-external-inputMediumUntrusted input should be validated before it is used to construct sensitive parsers or runtime objects.
php.security.unsafe-file-upload-handlingHighPHP upload handlers should not persist raw `$_FILES` names without validation and normalization.
cfn.correctness.validates-foreach-functionsHighValidates foreach functions
cfn.correctness.validation-not-function-configurationHighValidation not function configuration
cfn.correctness.validationdomain-is-superdomain-of-domainnameHighValidationdomain is superdomain of domainname
ts.correctness.var-declarationLowConsider using `let` or `const` instead of `var`.
php.correctness.undefined-variableHighUsing a variable that has not been defined in scope will cause a runtime notice.
ts.correctness.used-before-definitionLowDetects variable used before definition issues in JavaScript and TypeScript source.
ts.security.missing-message-origin-checkHigh`message` handlers should validate `event.origin` before trusting cross-window data.
java.security.jwt-without-verificationHighDecoding a JWT without verifying its signature allows attackers to forge tokens and impersonate users.
rust.security.jwt-without-verificationHighJWT parsing must use a verification key and must not disable signature validation.
go.security.jwt-without-verificationHighParsing JWTs with `jwt.Parse` and a nil keyfunc, `jwt.ParseUnverified`, or `jwt.Decode` skips signature verification and lets attackers forge tokens.
rust.security.insecure-ssh-host-keyHighSSH clients must not disable host key verification.
go.security.insecure-ssh-host-keyHigh`ssh.InsecureIgnoreHostKey()` disables host key verification and exposes SSH clients to man-in-the-middle attacks.
java.correctness.two-lock-waitHighCalling `wait()` while holding multiple locks can cause confusing monitor state and hard-to-diagnose deadlocks.
java.correctness.unsynchronized-wait-notifyHighObject.wait(), notify(), or notifyAll() called outside a synchronized block.
java.correctness.wait-notify-on-threadHighCalling wait(), notify(), or notifyAll() on a Thread instance interferes with the JVM's internal thread lifecycle signaling.
cfn.maintainability.warn-when-properties-are-configured-to-only-work-with-the-package-commandMediumWarn when properties are configured to only work with the package command
java.correctness.unescaped-whitespaceCriticalWhitespace escape sequences like \n, \t, \r, \f, \b in Pattern.compile or String.matches arguments should be double-escaped (\\n, \\t, etc.) to be interpreted as regex escapes rather than Java string escapes.
ruby.bug-risk.with-index-value-unusedHigh`with_index` or `each_with_index` is called but the block only receives one argument. The index value is silently discarded.
ruby.bug-risk.with-object-value-unusedHigh`with_object` or `each_with_object` is called but the block only receives one argument. The accumulated object is silently discarded.
java.testing.wrong-assertion-argument-orderHighTest assertions should use the pattern `assertEquals(expected, actual)` where the first argument is the expected value (typically a literal) and the second is the actual value (typically an expression).
java.correctness.collection-remove-type-mismatchHighPassing a numeric literal to Collection.remove() on a collection with a non-numeric generic type will silently fail to remove the intended element.
java.correctness.zoneid-invalid-timezoneHighCalling `ZoneId.of()` with a hardcoded string that may not be a valid IANA timezone ID will throw `ZoneRulesException` at runtime.