Skip to content
Critiq Docs

Search docs

Search documentation pages and rules

Reference

Rules

Directory generated from @critiq/rules metadata. Browse by language and framework, then open a rule for full rationale and remediation.

#Summary

1243 rules9 languages

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-retryMedium
[DEPRECATED] Use ts.correctness.missing-timeout-on-external-call instead

DEPRECATED: This rule is consolidated into ts.correctness.missing-timeout-on-external-call. External calls should define timeout, cancellation, or retry behavior.

Security
java.correctness.noallocation-method-creates-objectMedium
@NoAllocation method performs object allocation

A method annotated @NoAllocation creates heap objects via `new`.

Correctness
java.correctness.default-package-spring-scanHigh
@SpringBootApplication or @ComponentScan must not be used in the default package

Spring Boot applications in the default package cannot be scanned properly and will fail at runtime.

Correctness
ruby.bug-risk.to-json-without-argumentMedium
#to_json requires an optional argument

Calling `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).

Correctness
rust.correctness.step-by-zeroCritical
`.step_by(0)` will always panic

Calling `.step_by(0)` on an iterator panics when the iterator is consumed.

Correctness
ruby.bug-risk.equal-instead-of-equalHigh
`==` for comparison instead of `equal?` method

The `object_id` method result is compared using `==` instead of the `equal?` method. Using `equal?` is the idiomatic way to test object identity in Ruby.

Correctness
php.correctness.abstract-method-with-bodyCritical
Abstract methods must not have a body

Abstract methods must not have a body

Correctness
ruby.bug-risk.undefined-action-filterHigh
Action filter is not defined in the scope it is used in

A `before_action` references a method that is not defined in the current controller scope.

Correctness
ruby.bug-risk.callback-overrideHigh
ActiveRecord callback being overridden

The same callback method name is used across multiple `after_commit` or `after_*_commit` declarations. Only the last declaration takes effect.

Correctness
ts.security.nestjs-missing-global-validation-pipeMedium
Add a global Nest ValidationPipe

Nest bootstrap entries should register `ValidationPipe` globally when controllers parse bodies or DTOs.

SecurityNestJS
ts.security.jwt-not-revokedMedium
Add a JWT revocation hook

Express JWT middleware should check revocation state when bearer tokens can be invalidated early.

Security
ts.react.no-missing-error-boundaryMedium
Add a route-level error boundary for Next.js App Router segments

Next.js route segments should declare an error.tsx handler so async and client failures surface safely.

CorrectnessReact
rust.testing.ignore-without-ticket-referenceMedium
Add a ticket reference to ignored Rust tests

`#[ignore]` without a nearby ticket reference or reason makes the test easy to forget.

Quality
ts.react.no-img-missing-alt-textHigh
Add alt text to meaningful images

JSX images need a meaningful `alt` value, or an explicit empty string when the image is decorative.

CorrectnessReact
ts.security.apollo-server-missing-query-limitsMedium
Add GraphQL query depth or complexity controls

Apollo Server bootstrap should declare validation rules or plugins that bound query cost.

SecurityApollo Server
php.correctness.missing-return-statementCritical
Add missing return statement

Functions and methods with non-void return types should contain at least one return statement.

Correctness
ruby.security.rails-link-to-blank-without-noopenerMedium
Add rel noopener to link_to with target _blank

External links opened in a new tab should set rel noopener or noreferrer.

SecurityRails
ts.react.no-target-blank-without-relHigh
Add rel=noopener to target=_blank links

Opening links in a new tab without rel=noopener lets the destination page access window.opener.

SecurityReact
ts.correctness.constant-conditionMedium
Always-true or always-false condition

Flow-control conditions should not resolve to a constant boolean value.

Correctness
ruby.bug-risk.ambiguous-block-associationHigh
Ambiguous association of block with method

A 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.

Correctness
ruby.bug-risk.ambiguous-operator-argumentHigh
Ambiguous operators in first arg of method invocation

The 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.

Correctness
ruby.bug-risk.ambiguous-regexp-literalHigh
Ambiguous regular expression literal in method invocation

A regex literal `/pattern/` is used as a method argument without parentheses. This can be confused with the division operator by readers.

Correctness
sql.style.ambiguous-distinctHigh
Ambiguous use of DISTINCT

DISTINCT with multiple columns including computed expressions may be ambiguous

Sql
rust.security.missing-regex-anchorHigh
Anchor regex patterns with `^` or `(?`

Regex patterns compiled with `Regex::new` should be anchored to avoid unintended substring matches, which can lead to security bypasses.

Security
java.correctness.annotation-check-always-falseHigh
Annotation retention prevents runtime check

Checking for an annotation at runtime that is retained only at SOURCE or CLASS level will always return false.

Correctness
ts.security.express-missing-helmetMedium
Apply Helmet to Express apps

Express apps should use Helmet or equivalent header hardening middleware.

SecurityExpress
java.correctness.string-format-arg-mismatchCritical
Arguments to String.format must match the provided format string

The number of format specifiers in the format string does not match the number of arguments provided.

Correctness
cfn.maintainability.arns-should-use-correctly-placed-pseudo-parametersLow
Arns should use correctly placed pseudo parameters

Arns should use correctly placed pseudo parameters

Maintainability
ts.correctness.array-callback-missing-returnMedium
Array callback missing return

Array iteration callbacks with block bodies should return a value when required.

Correctness
java.correctness.array-compared-to-non-arrayMedium
Array compared to non-array value

Comparing an array variable to a non-array value (string literal, number, boolean) is almost certainly a logic bug.

Correctness
java.correctness.array-index-boundsCritical
Array or list access with out-of-bounds index

An array, list, or string is accessed at length()/size(), which is always one past the last valid index.

Correctness
ts.correctness.array-sort-without-compareLow
Array.sort without compare function

Provide a compare function when sorting non-string arrays.

Correctness
php.correctness.incomplete-arrow-functionCritical
Arrow functions require => body

Arrow functions require => body

Correctness
java.correctness.assertion-in-productionLow
Assert statement in production code

The `assert` keyword in Java is disabled at runtime. Do not use it for argument validation or precondition checks in production code.

Correctness
java.correctness.unterminated-assertion-chainHigh
Assertion chain methods must be terminated with an assertion

Calls to `assertThat()` or `verify()` must include a chained assertion (e.g. `.isEqualTo()`, `.isGreaterThan()`) or the test assertion is silently ignored.

Correctness
go.correctness.unused-append-resultHigh
Assign the result of append

append returns a new slice; dropping the result loses the appended element.

Correctness
php.correctness.assign-to-non-lvalueCritical
Assignment target must be an lvalue

Assignment target must be an lvalue

Correctness
ts.correctness.assignment-to-import-bindingMedium
Assignment to an imported binding

Code assigns to or updates a symbol declared by an import.

Correctness
ts.correctness.assignment-to-exportsHigh
Assignment to exports

Detected direct assignment to the `exports` variable.

Correctness
ts.correctness.assignment-in-conditionLow
Assignment used as a conditional test

Control-flow conditions should compare values, not perform assignments.

Correctness
ruby.bug-risk.class-name-should-be-stringMedium
Association class_name should be a string

The `class_name` option on associations should be a string literal, not a constant reference.

Correctness
ts.correctness.async-promise-executorMedium
Async Promise executor function

The executor passed to `new Promise` is declared `async`.

Correctness
rust.correctness.hash-unit-valueCritical
Attempting to hash a unit value

Hashing a unit value `()` via `Hash::hash` is a no-op — all unit values hash identically.

Correctness
rust.correctness.transmute-ptr-to-refCritical
Attempting to transmute a raw pointer to a reference

Transmuting `*const T` to `&T` creates a reference with no lifetime guarantees.

Correctness
rust.correctness.transmute-ref-to-ptrCritical
Attempting to transmute a reference to a raw pointer

Transmuting `&T` to `*const T` is unnecessary — use `as` casts instead.

Correctness
rust.correctness.transmute-ptr-to-ptrCritical
Attempting to transmute one raw pointer to another

Transmuting `*const T` to `*mut T` is safer through a reference cast.

Correctness
php.correctness.attribute-on-propertyHigh
Attribute class cannot be used with property

An attribute that does not target properties should not be applied to a property declaration.

Correctness
cfn.correctness.attributedefinitions-keyschemas-mismatchHigh
Attributedefinitions / keyschemas mismatch

Attributedefinitions / keyschemas mismatch

Correctness
php.correctness.attribute-on-closureHigh
Attributes are not valid on closures

Attributes are not valid on closures

Correctness
php.correctness.attribute-on-functionHigh
Attributes are not valid on functions

Attributes are not valid on functions

Correctness
php.correctness.attribute-on-class-constantCritical
Attributes cannot target class constants

Attributes cannot target class constants

Correctness
go.bug-risk.compound-assignment-misuseCritical
Audit: Possibly odd compound assignment operators '+=' or '-='

The 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.

Bug-risk
ts.next.server-action-missing-local-authHigh
Authenticate Next.js Server Actions before mutations

Server Actions that mutate state must validate sessions locally before reaching privileged sinks.

SecurityNext.js
ts.security.frontend-only-authorizationHigh
Authorization enforced only on frontend

Backend routes should enforce authorization directly instead of relying on frontend gating alone.

Security
cfn.maintainability.availability-zone-parameters-should-not-be-hardcodedMedium
Availability zone parameters should not be hardcoded

Availability zone parameters should not be hardcoded

Maintainability
ruby.bug-risk.symbol-boolean-nameHigh
Avoid :true and :false symbols

`:true` and `:false` symbols are usually typos for boolean literals.

Correctness
ts.angularjs.no-controllerHigh
Avoid .controller() in AngularJS

`controller()` method on an AngularJS module is discouraged in favor of component-based architecture.

MaintainabilityAngular
rust.quality.clone-on-double-referenceMedium
Avoid `.clone()` on a double reference

Calling `.clone()` on `&&T` clones the inner `&T`, not the underlying `T`.

Correctness
rust.quality.map-followed-by-countMedium
Avoid `.map()` followed by `.count()` without effect

Calling `.map()` before `.count()` has no effect on the count result.

Correctness
rust.quality.replace-same-pattern-and-replacementMedium
Avoid `.replace()` with identical pattern and replacement

Calls to `.replace()` or `.replacen()` with identical pattern and replacement have no effect.

Correctness
rust.quality.ordered-iteration-on-unorderedMedium
Avoid `.sorted()` on unordered collections

Calling `.sorted()` on an unordered collection like HashMap or HashSet is misleading.

Performance
ts.quality.no-banned-typeMedium
Avoid `any` type

Using the `any` type defeats TypeScript's type safety guarantees.

Quality
ts.security.no-arguments-calleeMedium
Avoid `arguments.callee` and `arguments.caller`

Do not read `arguments.callee` or `arguments.caller` in functions.

Security
ruby.bug-risk.end-in-methodHigh
Avoid `END` blocks inside methods

`END` registers a block to run at program exit. Using it inside a method is invalid and the block will never execute.

Correctness
ts.security.no-javascript-urlMedium
Avoid `javascript:` URLs in href, src, or navigation attributes

`javascript:` URLs can execute arbitrary script when used as navigation targets in href, src, or action attributes.

Security
ts.random.no-math-random-in-coreMedium
Avoid `Math.random()` in core code

Core code should not depend on nondeterministic random generation.

Maintainability
ts.correctness.new-expression-with-requireHigh
Avoid `new` operator on `require()` calls

Do not use `new` with the result of `require()`. The `require()` return value is not a constructor and this pattern is almost always a bug.

Correctness
ts.runtime.no-process-exitMedium
Avoid `process.exit` in application code

Do not call `process.exit` from application logic; reserve termination for CLI entrypoints.

Security
ruby.bug-risk.return-in-ensureHigh
Avoid `return` inside `ensure` blocks

A `return` inside an `ensure` block discards any exception that was raised, silently swallowing errors.

Correctness
rust.quality.size-of-val-on-referenceMedium
Avoid `size_of_val` on a reference

`std::mem::size_of_val(&ref)` returns the size of the reference itself, not the pointed-to value.

Correctness
rust.security.unsafe-remove-dir-allHigh
Avoid `std::fs::remove_dir_all` without TOCTOU mitigations

`remove_dir_all` is vulnerable to TOCTOU (time-of-check-time-of-use) races when the directory tree contains symbolic links.

Security
rust.quality.option-env-unwrapMedium
Avoid `unwrap()` on `option_env!()`

Calling `.unwrap()` on `option_env!()` panics at compile-time if the environment variable is unset.

Correctness
ts.security.no-with-statementHigh
Avoid `with` statements

`with` statements make binding resolution unpredictable and are disallowed in strict mode.

Security
ts.correctness.namespace-import-unexported-nameHigh
Avoid accessing unexported names through namespace imports

Namespace import member access should reference names exported by the target module.

Correctness
ruby.security.rails-skip-validationHigh
Avoid ActiveRecord updates that skip validations

Methods such as update_column and touch persist data without running model validations.

SecurityRails
rust.security.actix-wildcard-cors-with-credentialsHigh
Avoid Actix any-origin CORS with credentials enabled

`actix_cors` configurations must not combine `allow_any_origin` with `supports_credentials`.

SecurityActix Web
ts.security.manual-html-sanitizationMedium
Avoid ad hoc HTML sanitization

Hand-rolled HTML escaping and sanitization should be replaced with vetted sanitizers or safe rendering paths.

Security
ruby.bug-risk.allow-blank-with-delegateMedium
Avoid allow_blank with delegate

Use `allow_nil` instead of `allow_blank` in `delegate` declarations.

Correctness
py.security.drf-allow-any-defaultHigh
Avoid AllowAny as DRF default permission

Django REST Framework APIs should default to authenticated permission classes instead of `AllowAny`.

SecurityDjango REST Framework
py.security.drf-allow-any-unsafe-methodHigh
Avoid AllowAny on unsafe DRF methods

DRF views that accept POST, PUT, PATCH, or DELETE should not declare `AllowAny` unless the endpoint is intentionally public.

SecurityDjango REST Framework
java.security.spring-actuator-health-details-alwaysMedium
Avoid always-on Spring Boot health details in external profiles

`management.endpoint.health.show-details=always` (or YAML equivalent) publishes detailed health payloads to any caller, which often leaks dependency and infrastructure facts.

SecuritySpring
ts.quality.no-ambiguous-abbreviationsLow
Avoid ambiguous abbreviations in public APIs

Ambiguous abbreviated names in exported APIs reduce readability and onboarding speed.

Quality
java.security.android-world-readable-modeHigh
Avoid Android world-readable or world-writable IO modes

Context files and shared preferences must not use MODE_WORLD_READABLE or MODE_WORLD_WRITABLE.

SecurityAndroid
ts.quality.no-temporal-couplingLow
Avoid APIs with hidden call-order requirements

APIs that require callers to invoke methods in strict hidden order are fragile.

Quality
ts.react.no-index-as-key-in-dynamic-listMedium
Avoid array index keys in dynamic lists

Using the map index as a React key breaks reconciliation when lists reorder, filter, or insert items.

CorrectnessReact
ts.performance.no-array-spread-in-hot-loopHigh
Avoid array spread inside hot loops

Array spread or repeated concat in loops allocates per iteration and scales poorly.

Performance
py.correctness.assert-outside-testLow
Avoid assert statements in production code

assert statements should only appear in test files

Correctness
ruby.bug-risk.assignment-in-conditionMedium
Avoid assignment inside conditionals

Extract assignments from if, unless, while, and until conditions.

Correctness
ts.security.non-literal-fs-filenameMedium
Avoid attacker-controlled filesystem read paths

Direct filesystem read APIs should not consume request- or upload-controlled filenames.

Security
py.correctness.bare-exceptHigh
Avoid bare except handlers

Bare exception handlers catch all errors and hide root causes.

Correctness
py.correctness.useless-returnLow
Avoid bare return at end of function body

A bare return at the end of a function adds no value and should be removed

Correctness
ts.quality.no-barrel-file-cycleMedium
Avoid barrel file cycles

Cycles involving barrel files obscure ownership and complicate module boundaries.

Quality
go.security.bind-all-interfacesMedium
Avoid binding Go services to all interfaces

Go network services should avoid explicit binds to `0.0.0.0`, `::`, or `[::]` unless public exposure is intentional and controlled.

Security
py.security.bind-all-interfacesMedium
Avoid binding Python services to all interfaces

Python network services should avoid explicit binds to `0.0.0.0` or `::` unless public exposure is intentional and controlled.

Security
rust.security.bind-all-interfacesMedium
Avoid binding Rust services to all interfaces

Rust network services should avoid explicit binds to `0.0.0.0`, `::`, or `[::]` unless public exposure is intentional and controlled.

Security
ts.security.bind-to-all-interfacesMedium
Avoid binding to all interfaces

Network-facing services should not explicitly bind to every interface unless public exposure is intentional and protected.

Security
rust.correctness.block-on-in-asyncHigh
Avoid block_on inside async functions

Calling block_on from async code can deadlock the runtime.

Correctness
ts.security.no-alert-confirm-promptMedium
Avoid blocking dialog APIs

Do not call `alert`, `confirm`, or `prompt` in application code.

Security
rust.security.warp-blocking-or-panic-in-async-handlerMedium
Avoid blocking I/O and infallible unwraps in async Warp handlers

Warp filters and handlers run on the async runtime; avoid `std::fs`, `thread::sleep`, and `unwrap` on request paths without `spawn_blocking` or proper errors.

SecurityWarp
rust.testing.thread-sleep-in-unit-testLow
Avoid blocking std::thread::sleep with long duration in Rust unit tests

Long blocking sleeps (>100ms) in narrow unit tests slow CI and hide synchronization bugs.

Quality
rust.correctness.thread-sleep-in-asyncMedium
Avoid blocking thread sleep in async functions

std::thread::sleep blocks the executor thread inside async code.

Correctness
ts.quality.no-boolean-parameter-trapMedium
Avoid boolean parameter trap in public APIs

Public APIs with multiple boolean flags reduce readability and increase change risk.

Quality
php.security.laravel-sensitive-csrf-exclusionHigh
Avoid broad Laravel CSRF exclusions on sensitive routes

Wildcard CSRF exclusions should not cover account, billing, admin, password, or profile endpoints.

SecurityLaravel
ts.vue.no-browser-globals-in-createdHigh
Avoid browser globals in server-side lifecycle hooks

The created and beforeCreate hooks may run on the server during SSR; accessing window or document there causes errors.

Correctness
ts.security.browser-token-storageMedium
Avoid browser token storage

Access and session tokens should not be stored in long-lived browser storage.

Security
ruby.bug-risk.each-with-object-immutable-argHigh
Avoid calling each_with_object with an immutable argument

each_with_object is called with a numeric literal, nil, or boolean. Mutations inside the block are silently lost because these types are immutable.

Correctness
ts.react.no-cascaded-effect-fetchesMedium
Avoid cascaded fetches inside React effects

React effects should not serialize independent fetches that can run in parallel or move server-side.

PerformanceReact
php.correctness.case-insensitive-defineMedium
Avoid case-insensitive define calls

The third argument to define() for case-insensitive constants is deprecated.

Correctness
rust.quality.fn-ptr-to-non-pointer-castMedium
Avoid casting function pointer to non-pointer type

Casting a function pointer to an integer type discards pointer metadata and is unsafe.

Correctness
ruby.bug-risk.heredoc-method-orderHigh
Avoid chaining methods on heredoc without parentheses

`<<-SQL.squish` parses as calling `.squish` on the delimiter string `'SQL'`, not on the heredoc body. Wrap the heredoc in parentheses: `(<<-SQL).squish`.

Correctness
ruby.bug-risk.circular-argument-referenceHigh
Avoid circular argument references

Default argument values that reference themselves are circular and always nil.

Correctness
php.correctness.trait-class-constantCritical
Avoid class constants inside traits

Avoid class constants inside traits

Correctness
py.security.ftp-usageHigh
Avoid cleartext FTP protocol

FTP transmits credentials and data without encryption

Security
py.security.insecure-http-transportHigh
Avoid cleartext HTTP for API calls

Python outbound requests should use HTTPS, not plain HTTP, when calling external services.

Security
py.security.command-execution-with-request-inputCritical
Avoid command execution with request-controlled input

Python process execution helpers must not receive request-controlled arguments.

Security
rust.quality.fn-ptr-null-comparisonMedium
Avoid comparing function pointer to null

Comparing a function pointer to null after casting to an integer is error-prone and unnecessary.

Correctness
php.correctness.function-comparisonLow
Avoid comparing function values

Comparing functions or callables with equality operators is unreliable.

Correctness
ruby.performance.no-static-size-computationMedium
Avoid computing size of static arrays and hashes

Calling `.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.

Performance
ts.logging.no-console-errorMedium
Avoid console.error

Route error logs through the project logger.

Maintainability
ts.logging.no-console-logLow
Avoid console.log

Use the project logger instead of console.log.

Maintainability
java.correctness.return-in-finallyMedium
Avoid control flow in finally blocks

return, break, continue, and throw in finally alter normal flow.

Correctness
go.performance.avoid-large-loop-copyMedium
Avoid copying large array elements in range loops

Ranging over a slice of large fixed-size arrays copies each element by value.

Performance
go.performance.avoid-large-range-copyMedium
Avoid copying large arrays in range loops

Ranging over a large fixed-size array copies the entire array value per iteration.

Performance
py.security.django-csrf-exempt-state-changingHigh
Avoid CSRF exemptions on state-changing Django views

Browser-facing Django views that change state should remain CSRF-protected unless they are explicitly token-authenticated APIs.

SecurityDjango
ruby.bug-risk.error-inherits-exceptionHigh
Avoid custom errors that inherit from Exception

Errors should inherit from StandardError so routine rescue handlers behave predictably.

Correctness
ts.react.no-static-element-with-synthetic-handlersMedium
Avoid dangling pointer or key handlers on static elements

Non-interactive elements that listen for pointer or key events without a widget role usually hide custom interaction that needs explicit semantics.

CorrectnessReact
go.correctness.defer-in-loopMedium
Avoid defer inside loops

defer inside a loop holds resources until the surrounding function returns.

Correctness
go.security.insecure-temp-fileMedium
Avoid deprecated `ioutil` temporary file helpers

Go code should use `os.CreateTemp` and `os.MkdirTemp` instead of the deprecated `ioutil.TempFile` / `ioutil.TempDir` helpers.

Security
ts.angularjs.no-deprecated-cookie-storeHigh
Avoid deprecated $cookieStore service

`$cookieStore` is a deprecated AngularJS service replaced by `$cookies`.

CorrectnessAngular
ts.angularjs.no-deprecated-http-success-errorHigh
Avoid deprecated $http success/error methods

`.success()` and `.error()` on `$http` promise are deprecated in favor of `.then()` and `.catch()`.

CorrectnessAngular
ruby.bug-risk.deprecated-big-decimal-newHigh
Avoid deprecated BigDecimal.new

BigDecimal.new is deprecated since BigDecimal 1.3.3 and removed in 2.0.0. Use BigDecimal() instead.

Correctness
ruby.bug-risk.deprecated-class-methodsHigh
Avoid deprecated class methods

File.exists?, Dir.exists?, and iterator? are deprecated. Use File.exist?, Dir.exist?, and block_given? instead.

Correctness
ts.angularjs.no-deprecated-directive-replaceHigh
Avoid deprecated directive replace property

The `replace` property in AngularJS directive definitions is deprecated and removed in AngularJS 1.7+.

CorrectnessAngular
ts.react.no-deprecated-is-mountedHigh
Avoid deprecated isMounted method

isMounted is a legacy anti-pattern that leads to stale references and masks async lifecycle bugs.

CorrectnessReact
ruby.bug-risk.deprecated-openssl-apiHigh
Avoid deprecated OpenSSL constant constructors

OpenSSL::Cipher and OpenSSL::Digest constant APIs are deprecated; prefer string algorithm names.

Correctness
java.security.insecure-ssl-contextHigh
Avoid deprecated TLS/SSL protocol versions

`SSLContext.getInstance` should not request SSL, SSLv2, SSLv3, TLSv1.0, or TLSv1.1.

Security
ruby.bug-risk.deprecated-uri-escapeLow
Avoid deprecated URI.escape helpers

Use CGI.escape, URI.encode_www_form_component, or Addressable instead.

Correctness
ruby.bug-risk.deprecated-uri-regexpMedium
Avoid deprecated URI.regexp

URI.regexp is deprecated and removed in modern Ruby releases.

Correctness
ts.vue.no-deprecated-keycodes-configHigh
Avoid deprecated Vue.config.keyCodes

Vue.config.keyCodes was removed in Vue 3. Use key alias modifiers directly instead.

Correctness
ts.config.no-process-env-outside-configMedium
Avoid direct `process.env` access outside config

Keep environment variable access inside config modules.

Maintainability
ts.security.insecure-helmet-hardening-optionsMedium
Avoid disabling core Helmet protections

Helmet should keep nosniff, HSTS, DNS prefetch control, Expect-CT, and referrer policy enabled unless another gateway enforces them.

Security
py.security.jinja-autoescape-disabledMedium
Avoid disabling Jinja autoescape

Jinja2 environments should keep autoescaping enabled for HTML rendering contexts.

Security
java.security.spring-csrf-globally-disabledHigh
Avoid disabling Spring CSRF protection without a stateless API hardening story

Disabling 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).

SecuritySpring
ruby.bug-risk.division-by-zeroMedium
Avoid division by zero literals

Do not divide by literal zero.

Correctness
py.security.django-mark-safeHigh
Avoid Django mark_safe for dynamic content

Django responses should avoid `mark_safe` when content can include untrusted input.

SecurityDjango
ruby.bug-risk.duplicate-case-conditionsHigh
Avoid duplicate conditions in case statements

A case statement has two identical when conditions. This is usually a copy-paste mistake that causes the second matching branch to never execute.

Correctness
ruby.bug-risk.duplicate-elsif-blockHigh
Avoid duplicate elsif conditions

An 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.

Correctness
php.correctness.duplicate-array-keyMedium
Avoid duplicate keys in array literals

Repeated keys in an array literal overwrite earlier entries.

Correctness
py.correctness.duplicate-dict-keyMedium
Avoid duplicate keys in dict literals

Repeated keys in a dict literal overwrite earlier entries.

Correctness
ruby.bug-risk.duplicate-hash-keysMedium
Avoid duplicate keys in hash literals

Remove duplicate symbol or string keys in the same hash literal.

Correctness
ts.correctness.duplicate-exportHigh
Avoid duplicate named exports

Module should not export the same name more than once.

Correctness
php.correctness.duplicate-union-typeCritical
Avoid duplicate types in union declarations

Avoid duplicate types in union declarations

Correctness
php.correctness.invalid-dynamic-constant-fetchCritical
Avoid dynamic class constant fetch

Avoid dynamic class constant fetch

Correctness
py.security.dynamic-code-executionHigh
Avoid dynamic code execution with eval or exec

Python services should not execute runtime-generated code via `eval` or `exec`.

Security
php.security.no-dynamic-evalHigh
Avoid dynamic PHP code execution

Do not execute runtime-generated PHP via eval, string assert, or create_function.

Security
ruby.security.dynamic-code-executionHigh
Avoid dynamic Ruby code execution

Do not execute runtime-generated Ruby via eval, exec, or *_eval helpers.

Security
rust.security.sqlx-diesel-raw-interpolated-queryHigh
Avoid dynamic SQL built with format! for SQLx or Diesel

Do not pass `format!(...)` (or equivalent string concatenation) into `sqlx::query` or `diesel::sql_query` sinks.

SecuritySQLx / Diesel
py.security.insecure-cipher-modeHigh
Avoid ECB cipher mode

ECB mode is deterministic and reveals patterns in plaintext

Security
ruby.bug-risk.else-without-rescueHigh
Avoid else without rescue in begin block

A 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.

Correctness
php.correctness.empty-bracket-array-accessMedium
Avoid empty bracket array reads

Reading from an array with `$value[]` appends null and returns the new element.

Correctness
ruby.bug-risk.empty-ensure-blockHigh
Avoid empty ensure blocks

An ensure block has no body. Either add cleanup code or remove the ensure clause.

Correctness
ruby.bug-risk.empty-expressionHigh
Avoid empty expressions ()

Empty parentheses () are used as an expression, which always evaluates to nil and is almost always a mistake.

Correctness
ruby.bug-risk.empty-interpolationHigh
Avoid empty string interpolation

String interpolation with nothing inside the braces #{} produces nothing and is always a mistake.

Correctness
java.security.unsafe-jackson-deserializationCritical
Avoid enabling Jackson polymorphic deserialization

Jackson `ObjectMapper` should not call `enableDefaultTyping` or `activateDefaultTyping`, and `@JsonTypeInfo(use = Id.CLASS|MINIMAL_CLASS)` should not be applied without an allowlist.

Security
py.security.subprocess-shell-enabledHigh
Avoid enabling shell mode in subprocess calls

Python process execution should avoid `shell=True` unless shell interpretation is explicitly required and tightly controlled.

Security
ts.security.fastify-excessive-body-limitMedium
Avoid excessive Fastify body limits

Fastify applications should not disable body limits or configure unusually large defaults without compensating controls.

SecurityFastify
php.performance.expensive-loop-conditionMedium
Avoid expensive calls in loop conditions

Functions like count() and strlen() inside loop conditions run on every iteration.

Performance
ts.performance.no-expensive-sort-in-render-pathMedium
Avoid expensive sort or transforms in render path

Sorting or heavy transforms in React render paths should be memoized or precomputed.

Performance
rust.quality.explicit-self-assignmentMedium
Avoid explicit self-assignment

Assigning a value to itself is a no-op and likely indicates a copy-paste bug.

Correctness
ts.security.exposed-directory-listingMedium
Avoid exposed directory listings

Directory listing middleware should not be enabled on public paths without a deliberate review.

Security
go.security.http-dir-path-traversalHigh
Avoid exposing the root filesystem via http.Dir

`http.Dir("/")` or `http.Dir("\\")` used with `http.FileServer` or `http.StripPrefix` exposes the entire filesystem, enabling directory traversal.

Security
ruby.bug-risk.else-followed-by-expressionHigh
Avoid expressions on the same line as else

An expression follows else on the same line. This is almost always a typo for elsif.

Correctness
go.security.template-unescaped-request-valueHigh
Avoid feeding request data into trusted template types

`template.HTML`, `template.JS`, and `template.CSS` should not wrap request-derived strings unless they were sanitized first.

Security
py.security.flask-unsafe-html-outputHigh
Avoid Flask markup helpers fed by request data

Flask responses should not bypass escaping when interpolating `request` input into HTML helpers or template strings.

SecurityFlask
ruby.bug-risk.flip-flop-operatorHigh
Avoid flip-flop operators

The flip-flop operator (`..`/`...` in conditionals) is deprecated since Ruby 2.6 and has confusing evaluation semantics.

Correctness
py.correctness.global-statementMedium
Avoid global statements in Python

Using global variables is an anti-pattern that can lead to hard-to-debug side effects

Correctness
ts.security.hardcoded-auth-secretCritical
Avoid hardcoded auth secrets

JWT, session, and strategy secrets should not be embedded directly in source code.

Security
py.security.hardcoded-credentialsCritical
Avoid hardcoded credentials in Python source

Python source should not embed static secrets such as API keys, tokens, or passwords in plain text.

Security
py.security.hardcoded-temp-directoryMedium
Avoid hardcoded temporary directory paths

Temporary paths should use tempfile module instead of string literals

Security
ts.quality.no-hidden-side-effect-importMedium
Avoid hidden side-effect imports

Bare side-effect imports outside setup files make module behavior implicit.

Quality
rust.security.weak-crypto-importMedium
Avoid importing broken or deprecated crypto crates

Production Rust code should not import `md5`, `sha1`, `des`, or `rc4` for security-sensitive purposes.

Security
go.security.weak-crypto-importMedium
Avoid importing broken or deprecated crypto packages

Production Go code should not import `crypto/md5`, `crypto/sha1`, `crypto/des`, or `crypto/rc4` for security-sensitive purposes.

Security
ts.next.no-document-import-outside-custom-documentHigh
Avoid importing next/document outside the custom document file

next/document should only be imported in pages/_document.(ts|tsx) or src/pages/_document.(ts|tsx).

CorrectnessNext.js
ts.next.no-head-import-in-custom-documentHigh
Avoid importing next/head in the custom document file

pages/_document should use next/document's Head component, not next/head.

CorrectnessNext.js
php.security.unsafe-include-with-user-inputHigh
Avoid include/require with user-controlled paths

Include and require statements must not load files from request-derived or tainted path values.

Security
ts.react.no-derived-state-from-propsMedium
Avoid initializing state directly from props

Duplicating props into useState without an explicit sync strategy hides updates and confuses controlled versus uncontrolled boundaries.

CorrectnessReact
ts.react.no-bind-in-jsx-propsMedium
Avoid inline functions and bind in JSX props

Creating `function` handlers or `.bind()` calls inside JSX forces new function identities every render and makes memoized children re-render unnecessarily.

PerformanceReact
java.security.insecure-cipher-modeHigh
Avoid insecure cipher transformations

Java `Cipher.getInstance` should not request ECB mode or legacy algorithms like DES and RC4.

Security
py.security.insecure-cipherHigh
Avoid insecure cryptographic ciphers

Weak ciphers like DES, ARC2, ARC4, and Blowfish should not be used

Security
ts.security.express-insecure-listenHigh
Avoid insecure HTTP server bootstrap in production entrypoints

Application servers should terminate TLS locally or document trusted edge termination before exposing plain HTTP listeners.

SecurityExpress
ruby.security.insecure-json-loadHigh
Avoid insecure JSON load helpers

Prefer `JSON.parse` over `JSON.load`, `JSON.restore`, or permissive Oj/MultiJson loaders.

Security
py.security.mako-insecure-templatesHigh
Avoid insecure Mako template configuration

Mako templates with empty default_filters or disable_unicode=True are vulnerable to XSS

Security
php.security.insecure-mail-or-file-transportMedium
Avoid insecure PHP FTP/SMTP or plaintext transport patterns

Outbound mail/file transfer code should not rely on plaintext transport endpoints for sensitive traffic.

Security
py.security.insecure-ssl-versionHigh
Avoid insecure SSL/TLS protocol versions

SSLv2, SSLv3, and TLSv1 are known to be vulnerable to protocol-level attacks

Security
py.security.insecure-temp-fileMedium
Avoid insecure temporary file name helpers

Python temporary files should not use `mktemp` or `tempnam` helpers that create race-prone filenames.

Security
py.security.insecure-urllib-methodMedium
Avoid insecure urllib URL fetching methods

urllib.urlopen() and urlretrieve() do not validate TLS certificates by default

Security
py.security.insecure-xml-parserHigh
Avoid insecure XML parsers

Standard library XML parsers are vulnerable to XXE and entity expansion attacks

Security
ruby.security.io-shell-commandCritical
Avoid IO class reads that may invoke shell commands

IO.read and related IO class methods can spawn subprocesses when the path starts with a pipe.

Security
ts.performance.no-json-parse-stringify-cloneMedium
Avoid JSON parse/stringify deep-clone

JSON stringify/parse cloning is expensive and loses type fidelity for rich objects.

Performance
ruby.security.kernel-openCritical
Avoid Kernel.open pipe mode

Do not use `Kernel.open` with a leading pipe, which spawns a shell command.

Security
ts.performance.no-large-object-spread-in-loopMedium
Avoid large object spread inside loops

Object spread inside loops creates repeated allocations and can degrade throughput.

Performance
ts.security.information-leakageHigh
Avoid leaking sensitive or diagnostic state

Logs, stdout or stderr, and direct response sinks should not expose sensitive fields or internal diagnostic detail.

Security
ts.security.insecure-password-hash-configurationHigh
Avoid legacy Argon2 password hash modes

Password hashing should not use `argon2i` or `argon2d` when safer modern modes are available.

Security
ts.react.no-legacy-lifecycleMedium
Avoid legacy React lifecycle methods

Legacy class lifecycle hooks are brittle in strict mode and block migration toward modern React patterns.

CorrectnessReact
ts.react.no-string-refMedium
Avoid legacy React string refs

String refs rely on older React behavior that is harder to analyze and less reliable than callback or object refs.

CorrectnessReact
ts.testing.no-legacy-test-waiterHigh
Avoid legacy test waiters

Deprecated test waiting APIs like wait(), waitForElement(), and waitForDomChange() should be replaced with waitFor().

Quality
java.testing.http-client-in-unit-testMedium
Avoid live HTTP clients in Java unit tests

HttpClient/URL/RestTemplate usage in unit tests should target fakes or embedded servers.

Quality
py.testing.real-network-in-unit-testMedium
Avoid live HTTP clients in Python unit tests

requests/httpx/urllib calls in unit tests should be doubled or recorded.

Quality
ruby.testing.real-network-in-unit-testMedium
Avoid live HTTP clients in Ruby unit tests

Net::HTTP, Faraday, or HTTParty usage in specs should be doubled or recorded.

Quality
go.testing.real-network-in-unit-testMedium
Avoid live network clients in Go unit tests

Unit tests should not dial the real network; prefer fakes or httptest servers.

Quality
rust.testing.real-network-in-unit-testMedium
Avoid live reqwest clients in Rust unit tests

reqwest usage in tests should target local servers or fakes.

Quality
py.security.insecure-crypto-importMedium
Avoid low-level crypto library imports

Low-level cryptography.hazmat and pycrypto imports bypass safer high-level APIs

Security
php.security.laravel-unsafe-mass-assignmentHigh
Avoid mass-assigning full Laravel request payloads

Eloquent writes should not use `$request->all()` or fully unguarded models for sensitive records.

SecurityLaravel
ts.react.no-uncontrolled-to-controlled-inputMedium
Avoid mixing controlled and uncontrolled input props

Combining value with defaultValue leads to ambiguous ownership between React and the DOM.

CorrectnessReact
ruby.bug-risk.mixed-regex-capturesHigh
Avoid mixing named and numbered regex captures

A regex literal contains both named captures (?<name>) and numbered captures (parenthesized groups without names). Mixing these is confusing and can lead to errors.

Correctness
ruby.bug-risk.duplicate-method-definitionsHigh
Avoid multiple method definitions with the same name in the same scope

Two def declarations with the same name exist in the same class, module, or top-level scope. The second definition silently overwrites the first.

Correctness
ruby.bug-risk.multiple-rescues-for-same-exceptionHigh
Avoid multiple rescue clauses for the same exception

A begin-rescue block rescues the same exception class more than once. The second rescue clause will never match since the first handles it first.

Correctness
py.correctness.dangerous-mutable-defaultHigh
Avoid mutable default function arguments

Mutable defaults in function signatures retain state across calls.

Correctness
ts.security.no-assign-mutable-exportLow
Avoid mutable module exports

Shared module state should not be exported with `let`/`var` or reassigned after export.

Security
ts.vue.no-computed-mutationHigh
Avoid mutating variables inside computed properties

Computed properties should not produce side effects such as assignments or array mutations.

Correctness
ts.performance.no-n-plus-one-await-in-mapHigh
Avoid N+1 await patterns in map flows

Per-item awaits inside map-like flows often create avoidable latency and fan-out bottlenecks.

Performance
php.correctness.nested-function-declarationLow
Avoid nested function declarations

Declaring functions inside other functions is discouraged and hard to test.

Correctness
php.correctness.nested-switchLow
Avoid nested switch statements

Switch statements nested inside other switch statements are hard to follow.

Correctness
go.performance.no-regex-construction-in-loopMedium
Avoid no regex construction in loop

Performance hygiene signal for go sources.

Performance
java.performance.no-regex-construction-in-loopMedium
Avoid no regex construction in loop

Performance hygiene signal for java sources.

Performance
php.performance.no-regex-construction-in-loopMedium
Avoid no regex construction in loop

Performance hygiene signal for php sources.

Performance
py.performance.no-regex-construction-in-loopMedium
Avoid no regex construction in loop

Performance hygiene signal for python sources.

Performance
ruby.performance.no-regex-construction-in-loopMedium
Avoid no regex construction in loop

Performance hygiene signal for ruby sources.

Performance
rust.performance.no-regex-construction-in-loopMedium
Avoid no regex construction in loop

Performance hygiene signal for rust sources.

Performance
go.performance.no-sync-fs-in-request-pathHigh
Avoid no sync fs in request path

Performance hygiene signal for go sources.

Performance
java.performance.no-sync-fs-in-request-pathHigh
Avoid no sync fs in request path

Performance hygiene signal for java sources.

Performance
php.performance.no-sync-fs-in-request-pathHigh
Avoid no sync fs in request path

Performance hygiene signal for php sources.

Performance
py.performance.no-sync-fs-in-request-pathHigh
Avoid no sync fs in request path

Performance hygiene signal for python sources.

Performance
ruby.performance.no-sync-fs-in-request-pathHigh
Avoid no sync fs in request path

Performance hygiene signal for ruby sources.

Performance
rust.performance.no-sync-fs-in-request-pathHigh
Avoid no sync fs in request path

Performance hygiene signal for rust sources.

Performance
go.performance.no-unbounded-concurrencyMedium
Avoid no unbounded concurrency

Performance hygiene signal for go sources.

Performance
java.performance.no-unbounded-concurrencyMedium
Avoid no unbounded concurrency

Performance hygiene signal for java sources.

Performance
php.performance.no-unbounded-concurrencyMedium
Avoid no unbounded concurrency

Performance hygiene signal for php sources.

Performance
py.performance.no-unbounded-concurrencyMedium
Avoid no unbounded concurrency

Performance hygiene signal for python sources.

Performance
ruby.performance.no-unbounded-concurrencyMedium
Avoid no unbounded concurrency

Performance hygiene signal for ruby sources.

Performance
rust.performance.no-unbounded-concurrencyMedium
Avoid no unbounded concurrency

Performance hygiene signal for rust sources.

Performance
rust.quality.non-utf8-literal-in-from-utf8-uncheckedHigh
Avoid non-UTF-8 literals in `str::from_utf8_unchecked`

Passing 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`.

Correctness
ts.vue.no-server-env-in-client-hooksHigh
Avoid Nuxt server-side flags in client-side hooks

Client-side lifecycle hooks should not reference process.server, process.client, or process.browser.

Correctness
ruby.security.rails-open-redirectMedium
Avoid open redirects from request-controlled targets

Redirect helpers must not send users to hosts or paths derived directly from request input without validation.

SecurityRails
ruby.security.rails-output-unsafeMedium
Avoid output-unsafe Rails helpers

Do not use html_safe, raw, or safe_concat to bypass escaping.

SecurityRails
rust.quality.isize-usize-overflowHigh
Avoid overflowing enumeration with isize::MAX or usize::MAX

Using `isize::MAX` or `usize::MAX` in a range expression can cause overflow.

Correctness
py.correctness.broad-exception-handlerHigh
Avoid overly broad exception handlers

Catching `Exception` or `BaseException` makes error handling too broad.

Correctness
go.security.weak-file-permissionHigh
Avoid overly permissive file permissions

`os.WriteFile` or `os.OpenFile` with permission bits above `0600` (owner read/write) may expose sensitive data to other users on the system.

Security
rust.security.manual-error-type-idHigh
Avoid overriding `Error::type_id` manually

Implementing `fn type_id` inside `impl Error for` blocks leaks internal type details and breaks trait object safety guarantees.

Security
ts.vue.no-reserved-key-overwriteMedium
Avoid overwriting reserved keys

Vue instance reserved keys ($el, $data, $props, etc.) should not be overwritten to prevent framework contract violations.

Correctness
rust.security.panic-in-async-handlerMedium
Avoid panic and unwrap in async handlers

Async request handlers should propagate errors instead of panicking or unwrapping Results.

Security
rust.security.rocket-panic-prone-request-handlerMedium
Avoid panicking on request-derived data in Rocket handlers

Rocket route handlers should not `unwrap`, `expect`, or otherwise panic on values derived from the HTTP request.

SecurityRocket
go.performance.avoid-large-param-copyMedium
Avoid passing large arrays by value as function parameters

Function parameters that are large fixed-size arrays (>80 bytes) cause excessive copying when passed by value.

Performance
ts.security.express-permissive-cookie-configMedium
Avoid permissive Express session cookie scope

Express session cookies should not explicitly opt into cross-site or wildcard-style scope.

SecurityExpress
py.security.fastapi-insecure-corsHigh
Avoid permissive FastAPI CORS with credentials

FastAPI `CORSMiddleware` should not combine wildcard origins, methods, or headers with `allow_credentials=True`.

SecurityFastAPI
ts.security.permissive-file-permissionsHigh
Avoid permissive file modes

Files that can carry user or security data should not be created with world-accessible modes.

Security
rust.security.axum-insecure-cors-with-credentialsHigh
Avoid permissive tower-http CORS with credentials in Axum

Do not pair wildcard or `very_permissive` origin policies with credentialed CORS or private-network access in `tower-http`.

SecurityAxum
java.security.insecure-network-protocolHigh
Avoid plaintext or legacy network protocols

URL/URI literals should not use `ftp://`, `telnet://`, or `jar:http://`.

Security
ruby.security.plaintext-password-in-callbackHigh
Avoid plaintext passwords in HTTP basic auth

Do not pass literal passwords to http_basic_authenticate_with.

Security
ts.react.no-positive-tabindexMedium
Avoid positive tabIndex values

Positive `tabIndex` values create a custom keyboard order that is fragile and usually less accessible than DOM order.

CorrectnessReact
java.correctness.possible-null-access-exceptionCritical
Avoid possible null access in catch or finally blocks

Dereferencing a variable in a catch or finally block may throw a NullPointerException if the variable was assigned from a failed operation.

Correctness
java.correctness.possible-null-accessCritical
Avoid possible null access on collection or map lookups

Chaining a method call on a `.get()`, `.poll()`, or `.peek()` result may throw a NullPointerException.

Correctness
rust.security.insecure-temp-fileMedium
Avoid predictable or permissionless temporary files

Temporary file creation should use secure helpers with random suffixes and restrictive permissions.

Security
php.security.insecure-session-id-generationHigh
Avoid predictable or user-supplied session IDs

session_id must not be set from weak hash helpers, uniqid, or request-derived values.

Security
ts.security.predictable-token-generationHigh
Avoid predictable token generation

Tokens, reset links, and session secrets should be generated from cryptographically strong randomness.

Security
ts.quality.no-primitive-obsession-in-domain-modelLow
Avoid primitive obsession in domain model APIs

Domain-facing APIs with many primitive parameters should use richer value objects.

Quality
ruby.security.rails-http-digest-authHigh
Avoid Rails HTTP digest authentication helpers

authenticate_with_http_digest and authenticate_or_request_with_http_digest are vulnerable to denial-of-service attacks in affected Rails versions.

SecurityRails
php.testing.curl-in-unit-testMedium
Avoid raw curl calls in PHP unit tests

curl_exec in tests should target doubles or local fixtures.

Quality
rust.security.rocket-unsafe-template-outputHigh
Avoid raw HTML built from Rocket route parameters

Do not wrap request-sourced strings in `RawHtml` (or similar) without escaping in Rocket handlers.

SecurityRocket
ts.security.raw-html-using-user-inputHigh
Avoid raw HTML with request input

Request-derived values should not be interpolated into raw HTML strings.

Security
security.no-sql-interpolationHigh
Avoid raw or interpolated SQL

Database query sinks must not receive request-driven or dynamically interpolated SQL text.

Security
ts.security.unsanitized-http-responseMedium
Avoid raw response output driven by request input

Raw response sinks should not echo request data without escaping or sanitization. JSON.stringify and JSON responses are excluded — their output is not executable markup.

Security
ts.react.no-hooks-rule-violationHigh
Avoid React hook violations

React hooks must only be called at the top level of React function components or custom hooks, not inside conditions, loops, or regular functions.

CorrectnessReact
ts.react.no-deprecated-create-factoryLow
Avoid React.createFactory

`createFactory` is a legacy helper for pre-JSX code and is removed from modern React typings and guidance.

CorrectnessReact
ts.react.no-find-dom-nodeMedium
Avoid ReactDOM.findDOMNode

`findDOMNode` reaches through component boundaries with a deprecated escape hatch that breaks strict mode migrations.

CorrectnessReact
py.security.request-path-file-readHigh
Avoid reading files using request-controlled paths

Python file read operations should not consume request-controlled path segments.

Security
ts.testing.no-network-call-in-unit-testLow
Avoid real network calls in unit tests

Unit tests should not open real sockets; prefer doubles, recordings, or local fakes.

Quality
py.correctness.redefined-builtinMedium
Avoid redefining Python builtins

Function definitions should not shadow builtin names like list, dict, str, or int

Correctness
ts.performance.no-redundant-network-fetchMedium
Avoid redundant network fetches in one path

Repeated fetches for the same stable request identity waste network and CPU budget.

Performance
java.security.reflected-output-from-requestHigh
Avoid reflecting servlet request data through response writers

Servlet writers should not emit raw request parameters or headers without encoding or policy checks.

Security
ts.performance.no-regex-construction-in-loopMedium
Avoid regex construction inside loops

Constructing regular expressions inside loops repeatedly allocates and reparses patterns.

Performance
go.security.sensitive-data-egressHigh
Avoid relaying request-controlled data through outbound Go HTTP clients

Outbound `http.Post` bodies should not be built directly from request values without validation or redaction.

Security
ruby.security.sensitive-data-egressHigh
Avoid relaying request-controlled data through outbound Ruby HTTP clients

Outbound HTTP helpers should not receive URLs or bodies directly from `params` or other tainted sources without validation.

Security
php.security.sensitive-data-egressHigh
Avoid relaying request-derived sensitive data in outbound PHP HTTP calls

Outbound HTTP clients should not forward tainted request/session material without validation or redaction.

Security
ruby.security.rails-render-inlineHigh
Avoid rendering inline templates or text

Inline and text render modes bypass view escaping and are easy to misuse for cross-site scripting.

SecurityRails
ruby.security.rails-unsafe-renderHigh
Avoid rendering raw HTML or bodies from request input

`render` options such as `html:`, `plain:`, or `inline:` must not consume unvalidated request data.

SecurityRails
ts.security.express-user-controlled-static-mountHigh
Avoid request-controlled Express static mount paths

The path prefix for express.static should not be derived directly from request objects.

SecurityExpress
ts.security.format-string-using-user-inputHigh
Avoid request-controlled format strings

Logging and formatting helpers should not take request input as the format string itself.

Security
ts.security.request-driven-array-index-accessMedium
Avoid request-driven array indexing without bounds checks

Arrays indexed with request-derived keys can read or write out-of-bounds entries.

Security
ts.security.dynamodb-query-injectionCritical
Avoid request-driven DynamoDB queries

DynamoDB query and scan inputs should not be built directly from request input.

Security
ruby.bug-risk.rescue-exceptionHigh
Avoid rescuing Exception

Rescuing Exception also catches signals and system exits that should not be swallowed.

Correctness
ts.security.express-error-handler-information-disclosureMedium
Avoid returning raw errors from Express error middleware

Express error handlers should not send the err object directly to clients in production paths.

SecurityExpress
java.correctness.ncopies-argument-orderCritical
Avoid reversed arguments to `Collections.nCopies()`

Passing a string as the first argument to `Collections.nCopies()` likely has the arguments reversed.

Correctness
java.correctness.indexof-reversed-argumentsHigh
Avoid reversed arguments to `String.indexOf()`

Calling `indexOf()` with an integer as the first argument and a string as the second likely has the arguments reversed.

Correctness
java.security.predictable-securerandomHigh
Avoid seeding SecureRandom with predictable values

`new SecureRandom(byte[])` should not be initialized with literal byte arrays, short fixed buffers, or string-derived seeds.

Security
security.no-sensitive-data-in-logs-and-telemetryHigh
Avoid sensitive data in logs and telemetry

Sensitive fields should not be sent to logging, tracing, or analytics sinks.

Security
ts.security.sensitive-data-in-exceptionHigh
Avoid sensitive data in thrown errors

Exceptions and rejection payloads should not include raw secrets or personal data.

Security
ts.next.no-server-client-boundary-leaksHigh
Avoid server/client boundary leaks in Next.js

Server components should not use browser-only APIs or client-only hooks without an explicit client boundary.

CorrectnessNext.js
ts.react.no-set-state-in-component-did-mountMedium
Avoid setState in componentDidMount

Synchronous state updates during mount trigger an extra render before the browser paints the initial tree.

CorrectnessReact
ts.react.no-set-state-in-component-will-updateHigh
Avoid setState in componentWillUpdate

Synchronous state updates during the legacy will-update lifecycle can cause infinite re-rendering loops.

CorrectnessReact
rust.security.shell-command-spawnHigh
Avoid shell invocation via Command

Spawning `/bin/sh` or `bash` with `-c` enables shell metacharacter injection.

Security
ts.security.apollo-server-graphql-dev-tooling-exposureMedium
Avoid shipping GraphQL dev landing or playground plugins without a production guard

Apollo Server dev landing pages, sandbox UIs, and GraphQL Playground-style plugins should not load unconditionally in production builds.

SecurityApollo Server
ts.react.no-should-component-updateMedium
Avoid shouldComponentUpdate

Manual shouldComponentUpdate overrides increase maintenance cost and are rarely needed with modern React.

MaintainabilityReact
ts.quality.no-side-effect-in-pure-callbackHigh
Avoid side effects in getters and pure callbacks

Getters and transformation callbacks (map/filter/reduce) should not produce side effects such as assignments or mutations.

Quality
php.testing.sleep-in-unit-testLow
Avoid sleep in PHP unit tests

sleep() in tests slows CI and hides synchronization bugs.

Quality
ruby.testing.sleep-in-unit-testLow
Avoid sleep in Ruby unit tests

sleep in specs slows CI and hides synchronization bugs.

Quality
ts.react.no-jsx-props-spreadLow
Avoid spreading props onto JSX elements

Unfiltered prop spreads hide which attributes reach the DOM and defeat static analysis of event handlers and accessibility props.

MaintainabilityReact
java.security.spring-debug-exposureMedium
Avoid Spring Boot debug and actuator exposure in shipped configuration

Spring Boot configuration should not force debug logging or wildcard actuator exposure.

SecuritySpring
java.security.spring-permit-all-defaultHigh
Avoid Spring Security chains that leave every request anonymous by default

Production HTTP security chains should not end with a broad permit-all fallback such as `anyRequest().permitAll()` or `requestMatchers("/**").permitAll()`.

SecuritySpring
py.security.sql-interpolationCritical
Avoid SQL query string interpolation

Python SQL queries should not be built via f-string or string-formatting with user input.

Security
ts.security.electron-insecure-local-stateMedium
Avoid storing secrets in Electron local stores without hardening

electron-store writes that look like credentials should use OS-level secret storage instead.

Security
ts.security.unsafe-dirname-path-concatMedium
Avoid string-built paths from `__dirname` or `__filename`

Do not build filesystem paths by concatenating `__dirname` or `__filename` with strings or templates.

Security
go.performance.avoid-string-index-allocMedium
Avoid string() conversion in strings.Index calls

Using `strings.Index(string(x), ...)` with a `[]byte` argument causes an unnecessary allocation.

Performance
ts.performance.no-sync-fs-in-request-pathHigh
Avoid sync filesystem calls in request paths

Synchronous filesystem calls on request paths block the event loop and degrade latency.

Performance
ts.security.no-sync-child-process-execHigh
Avoid synchronous child process execution with dynamic commands

execSync and spawnSync should not run commands built from variables or template strings.

Security
ts.security.no-fs-readfile-sync-in-handlerMedium
Avoid synchronous file reads in HTTP handlers

Request handlers should not call `readFileSync` or equivalent blocking file APIs.

Security
py.security.telnet-usageHigh
Avoid Telnet protocol usage

Telnet sends credentials and data in cleartext

Security
go.security.unsafe-package-importMedium
Avoid the `unsafe` package outside vetted boundaries

Production Go code should not import the `unsafe` package, which bypasses the type system and memory safety guarantees.

Security
php.correctness.error-suppression-operatorMedium
Avoid the error suppression operator

The `@` operator hides warnings and errors instead of handling them explicitly.

Correctness
ts.react.no-this-state-in-set-stateHigh
Avoid this.state inside setState()

Reading this.state inside setState() leads to stale state references because React batches updates asynchronously.

CorrectnessReact
java.testing.thread-sleep-in-unit-testLow
Avoid Thread.sleep in Java unit tests

Sleeping in tests slows CI and hides synchronization bugs.

Quality
java.correctness.throw-nullCritical
Avoid throwing null

`throw null;` throws a `NullPointerException` at the throw site instead of communicating intent. Throw a proper exception instance.

Correctness
go.testing.time-sleep-in-unit-testLow
Avoid time.Sleep in Go unit tests

Sleeping in _test.go files slows CI and hides synchronization bugs.

Quality
py.testing.time-sleep-in-unit-testLow
Avoid time.sleep in Python unit tests

Sleeping in tests slows suites and hides synchronization bugs.

Quality
go.correctness.time-tick-leakMedium
Avoid time.Tick for stoppable timers

time.Tick leaks the underlying ticker because it cannot be stopped.

Correctness
ts.testing.no-flaky-timer-testLow
Avoid timer-dependent assertions in unit tests

Unit tests using real timers (setTimeout/setInterval with delays >50ms) without fake timers may produce flaky results under CI load.

Quality
go.security.gin-trust-all-proxiesHigh
Avoid trust-all Gin reverse proxy settings

`SetTrustedProxies` should list real upstreams instead of `nil` or `0.0.0.0/0` style catch-alls that spoof `X-Forwarded-For`.

SecurityGin
ts.security.angular-dom-sanitizer-bypass-untrusted-inputHigh
Avoid trusting unsanitized Angular bypass sinks

DomSanitizer bypass helpers should not receive route, storage, or request-derived values without validation.

SecurityAngular
py.correctness.assert-on-tupleMedium
Avoid tuple expression in assert

Asserting a tuple literal-like expression is usually always truthy and can mask failing checks.

Correctness
rust.correctness.unbounded-channelMedium
Avoid unbounded async channels

Unbounded channels can grow without backpressure and exhaust memory.

Correctness
ts.performance.no-unbounded-concurrencyHigh
Avoid unbounded concurrency fan-out

Unbounded Promise fan-out over unknown input can exhaust downstream capacity.

Performance
ruby.bug-risk.unreachable-loopHigh
Avoid unconditional exit as first statement in loop

A 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.

Correctness
ts.security.apollo-server-introspection-exposureMedium
Avoid unconditional GraphQL introspection

Apollo Server should not hard-enable introspection without environment guards.

SecurityApollo Server
ruby.security.rails-unsafe-html-outputHigh
Avoid unescaped HTML built from request or tainted data

Do not mark request-driven strings as HTML safe or bypass sanitization in views or helpers.

SecurityRails
php.security.laravel-unsafe-blade-outputHigh
Avoid unescaped Laravel Blade output from request or model data

Raw Blade rendering (`{!! !!}`) should not directly render request, model, or translated user content.

SecurityLaravel
py.correctness.unnecessary-comprehensionLow
Avoid unnecessary comprehension wrapped in list() or set()

Wrapping a list comprehension in list() or set() is redundant and should be simplified

Correctness
ruby.bug-risk.disjunctive-assignment-in-constructorHigh
Avoid unnecessary disjunctive assignment in constructors

Instance variables are nil until assigned, so `@var ||= value` in initialize is redundant.

Correctness
ts.correctness.unresolved-importHigh
Avoid unresolved module imports

Import declarations should reference modules that exist on disk or in node_modules.

Correctness
ts.security.dangerously-set-inner-htmlHigh
Avoid unsafe `dangerouslySetInnerHTML`

React `dangerouslySetInnerHTML` should only render fixed or explicitly sanitized HTML.

Security
ts.security.no-innerhtml-assignmentHigh
Avoid unsafe `innerHTML` assignment

`innerHTML` assignments should only use fixed or explicitly sanitized HTML.

Security
ts.security.insecure-content-security-policy-literalMedium
Avoid unsafe Content-Security-Policy literals

Static CSP header values should not rely on unsafe-inline, unsafe-eval, or unsafe-hashes without nonces.

Security
py.security.unsafe-deserializationHigh
Avoid unsafe deserialization with pickle

Python deserialization of untrusted data via `pickle` can enable arbitrary code execution.

Security
py.security.django-unsafe-production-settingsHigh
Avoid unsafe Django production settings

Production Django settings should disable debug mode, restrict hosts, protect secrets, and enable HTTPS-aligned cookie flags.

SecurityDjango
ts.security.dangerous-insert-htmlHigh
Avoid unsafe DOM HTML insertion sinks

`outerHTML`, `document.write*`, and `insertAdjacentHTML` should only receive fixed or explicitly sanitized HTML.

Security
php.security.unsafe-new-staticMedium
Avoid unsafe new static() instantiation

Using `new static()` can instantiate unexpected subclasses and weaken type guarantees.

Security
ruby.security.rails-unsafe-strong-parametersHigh
Avoid unsafe Rails strong parameters and mass assignment

Strong parameters and mass assignment sinks should not accept unfiltered request hashes or privileged attributes.

SecurityRails
ts.performance.no-cache-miss-from-unstable-keyMedium
Avoid unstable cache-key construction

Cache keys built from unstable values cause low hit rates and repeated recomputation.

Performance
rust.security.insecure-yaml-loadHigh
Avoid untyped YAML deserialization

Untyped `serde_yaml` deserialization can instantiate arbitrary types from untrusted input.

Security
rust.quality.unused-enumerate-or-zip-itemsMedium
Avoid unused `.enumerate()` or `.zip()` items

One of the destructured variables from `.enumerate()` or `.zip()` is never used in the loop body.

Style
ruby.bug-risk.useless-comparisonHigh
Avoid useless comparison with self

A variable is compared to itself using ==, !=, <, >, <=, >=, or ===. This comparison always produces a known result and is likely a logic error.

Correctness
ruby.bug-risk.useless-setter-callHigh
Avoid useless setter call with same value

An attribute is assigned to its own current value (e.g., self.x = self.x or @x = @x). This assignment has no effect.

Correctness
py.security.path-traversal-user-inputHigh
Avoid user-controlled filesystem path segments in Python

Python path construction and file delivery helpers should not consume request- or route-derived segments without validation.

Security
ts.security.path-join-user-inputHigh
Avoid user-controlled path segments in path.join and path.resolve

Path construction APIs should not consume request- or upload-derived segments without a trusted root and validation.

Security
ts.security.user-controlled-regexpMedium
Avoid user-controlled regular expression patterns

Regular expression construction should not consume request-derived pattern strings without validation.

Security
ruby.bug-risk.git-in-gemspecHigh
Avoid using 'git' to declare files in gemspec

Using backtick `git ls-files` inside a gemspec to list gem files couples the build to the git binary and repository state.

Correctness
java.correctness.deprecated-thread-methodsMedium
Avoid using deprecated Thread methods

Calls to deprecated Thread instance methods stop(), suspend(), and resume() should be removed. These methods are inherently unsafe.

Correctness
java.correctness.threadgroup-deprecated-methodsHigh
Avoid using deprecated ThreadGroup methods

ThreadGroup.stop(), .suspend(), .resume(), .destroy(), and related methods are deprecated and unsafe.

Correctness
java.correctness.equals-nullHigh
Avoid using equals() to compare against null

Calling `.equals(null)` always returns false and may throw NullPointerException.

Correctness
php.correctness.invalid-string-interpolation-typeHigh
Avoid using non-scalar types in string interpolation

String 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.

Correctness
go.security.tainted-value-sinkHigh
Avoid using tainted values in SQL and command sinks

User-controlled input (parameters named `input`, `data`, `body`, etc.) should not reach SQL execution or OS command sinks via `fmt.Sprintf` string interpolation.

Security
ts.security.weak-cipher-or-modeHigh
Avoid weak cipher algorithms and modes

Cryptographic ciphers should use modern authenticated modes and approved algorithms.

Security
py.security.weak-hash-algorithmMedium
Avoid weak cryptographic hash algorithms

Python security-sensitive hashing should use SHA-256 or stronger, not MD5 or SHA-1.

Security
py.security.weak-crypto-keyHigh
Avoid weak cryptographic key sizes

RSA/DSA keys below 3072 bits are insufficient for modern security

Security
security.weak-hash-algorithmHigh
Avoid weak hash algorithms

Cryptographic hashing should use modern, collision-resistant algorithms.

Security
ts.security.weak-key-strengthHigh
Avoid weak key-generation strength

Key-generation helpers should use current minimum strengths for RSA, AES, and HMAC keys.

Security
php.security.weak-cipherHigh
Avoid weak PHP cipher algorithms

OpenSSL and mcrypt usage should not rely on DES, RC4, Blowfish, ECB mode, or legacy mcrypt APIs.

Security
rust.security.weak-tls-cipherHigh
Avoid weak TLS cipher suites

Rust TLS configuration must not include cipher suites using RC4, 3DES, NULL, or EXPORT algorithms.

Security
ruby.bug-risk.when-branch-without-bodyHigh
Avoid when branches without a body

A when clause has no body expression. Add the intended behavior or remove the branch.

Correctness
ts.security.postmessage-wildcard-originHigh
Avoid wildcard `postMessage` targets

`postMessage` calls should not use `*` as the target origin when they carry application data.

Security
java.security.permissive-corsHigh
Avoid wildcard CORS allow-origins

Spring `@CrossOrigin("*")`, `allowedOrigins("*")`, and `addAllowedOriginPattern("*")` open the API to any origin.

Security
go.security.gin-wildcard-cors-with-credentialsHigh
Avoid wildcard CORS origins with credentials in Gin

`gin-contrib/cors` configurations must not combine wildcard origins with `AllowCredentials: true`.

SecurityGin
py.security.wildcard-subprocess-injectionHigh
Avoid wildcard expansion in subprocess calls

Shell wildcards in subprocess calls can be expanded unexpectedly, enabling injection

Security
security.permissive-file-permissionsMedium
Avoid world-readable or world-writable file permissions

File creation and permission changes should not grant broad local access.

Security
ts.angularjs.no-jquery-wrapping-angular-elementHigh
Avoid wrapping angular.element with jQuery/$

Wrapping `angular.element()` objects with jQuery or `$()` is unnecessary and can cause issues.

CorrectnessAngular
py.security.xmlrpc-importMedium
Avoid XML-RPC protocol usage

XML-RPC uses XML serialization that is vulnerable to DTD attacks

Security
ts.correctness.invalid-async-await-callHigh
Await or for-await outside async function

The `await` keyword and `for await...of` are only valid inside an `async` function.

Correctness
ruby.bug-risk.bad-operand-orderMedium
Bad binary expression operand order

A literal appears on the left side of a binary expression where a variable is expected on the left.

Maintainability
ruby.bug-risk.rails-env-equalityMedium
Bad comparison of Rails.env value

`Rails.env` should be compared using predicate methods (`Rails.env.production?`) instead of equality operators.

Correctness
ruby.bug-risk.bad-rescue-orderingHigh
Bad ordering of exception rescue detected

A more general exception class is rescued after a more specific one. Ruby matches rescues top-to-bottom, so the specific handler never runs.

Correctness
ruby.bug-risk.bad-magic-comment-orderHigh
Bad ordering of magic comments

Magic comments like `# frozen_string_literal: true` must appear before any code in the file. When placed after code, they are ignored.

Correctness
java.correctness.bad-short-circuit-null-checkHigh
Bad short-circuiting null check

Null check uses || instead of && causing a NullPointerException when the variable is null.

Correctness
cfn.correctness.base64-validation-of-parametersHigh
Base64 validation of parameters

Base64 validation of parameters

Correctness
cfn.correctness.basic-cloudformation-resource-checkHigh
Basic cloudformation resource check

Basic cloudformation resource check

Correctness
cfn.correctness.basic-cloudformation-template-configurationHigh
Basic cloudformation template configuration

Basic cloudformation template configuration

Correctness
rust.correctness.identical-binary-operandsHigh
Binary operation with identical left and right operands

Binary operation where both sides are identical, likely a copy-paste error.

Correctness
go.correctness.identical-binary-operandsHigh
Binary operation with identical operands

Identical expressions on both sides of an operator is likely a copy-paste error.

Correctness
ruby.bug-risk.identical-binary-operandsHigh
Binary operator with identical operands detected

A 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.

Correctness
java.security.hibernate-sql-concatenationCritical
Bind Hibernate query parameters instead of concatenating SQL

Hibernate `Session.createQuery`, `createNativeQuery`, and `createSQLQuery` calls must not build their query text from string concatenation or `String.format`.

Security
java.correctness.bitwise-or-never-equalHigh
Bitwise OR expression will never equal the comparison constant

A bitwise OR expression is compared with `==` to a constant but will never equal it.

Correctness
ts.correctness.blocking-call-in-async-flowMedium
Blocking call inside async flow

Async functions should not call synchronous blocking APIs on the hot path.

Correctness
java.performance.boxed-boolean-constructorHigh
Boolean constructor is inefficient

`new Boolean(value)` creates a new object instance; use `Boolean.valueOf()` or autoboxing instead.

Performance
go.correctness.boolean-simplificationHigh
Boolean expression can be simplified

Complex boolean expressions like `x > y - 1` or `x < y || x == y` can be written more concisely.

Correctness
go.correctness.boolean-literal-in-expressionMedium
Boolean literals in logic expressions

Expressions like `flag == true` or `flag != false` can be simplified to the bare boolean value or its negation.

Correctness
java.correctness.boxed-boolean-conditionalHigh
Boxed Boolean in conditional expressions

Using a boxed Boolean directly in a conditional can throw NullPointerException if the value is null.

Correctness
java.quality.c-style-array-declarationLow
C-style array declaration must not be used

Array brackets should be placed with the type, not the variable name.

Quality
java.correctness.cacheloader-null-returnMedium
CacheLoader load method should not return null

Returning null from a CacheLoader.load() method causes InvalidCacheLoadException at runtime. Guava caches do not support null values.

Correctness
ts.vue.no-slot-property-accessHigh
Call $slots entries as functions

In Vue 3, $slots entries are functions. Access them by calling `$slots.slotName()`, not by treating them as values.

Correctness
ruby.bug-risk.exit-in-app-codeHigh
Call to exit/exit! detected in app code

Bare `exit` or `exit!` calls halt process execution and should be avoided in application code.

Correctness
java.correctness.unsupported-method-callHigh
Call to method that always throws UnsupportedOperationException

A final method that throws UnsupportedOperationException is called from another method, which will always fail at runtime.

Correctness
go.correctness.waitgroup-add-in-goroutineHigh
Call WaitGroup.Add before launching the goroutine

WaitGroup.Add called inside the goroutine races with Wait.

Correctness
php.correctness.inconsistent-printf-paramsCritical
Call with inconsistent number of printf-style parameters

The number of arguments passed to sprintf, sscanf, or fscanf does not match the number of format placeholders.

Correctness
ts.correctness.callback-missing-error-handlingMedium
Callback missing error handling

Require error handling in callbacks.

Correctness
rust.correctness.forget-drop-on-copy-typeHigh
Called `mem::forget` or `mem::drop` on a Copy type

`mem::forget` / `mem::drop` on a Copy type does nothing — the type is copied into the function.

Correctness
rust.correctness.forget-drop-on-non-drop-typeHigh
Called `mem::forget` or `mem::drop` on a non-Drop type

`mem::forget` / `mem::drop` on a type that does not implement `Drop` is a no-op.

Correctness
rust.correctness.forget-drop-on-referenceHigh
Called `mem::forget` or `mem::drop` on a reference

`mem::forget` / `mem::drop` on a reference drops only the reference, not the underlying value.

Correctness
ts.react.no-effect-fetch-without-cancellationMedium
Cancel inflight fetches inside React effects

React effects that fetch remote data should attach AbortSignal wiring so stale responses cannot commit after dependencies change.

PerformanceReact
cfn.correctness.cannot-reference-resources-in-the-conditions-block-of-the-templateHigh
Cannot reference resources in the conditions block of the template

Cannot reference resources in the conditions block of the template

Correctness
java.correctness.case-insensitive-regex-lacks-unicodeHigh
Case insensitive regex does not properly handle Unicode input

CASE_INSENSITIVE or (?i) without UNICODE_CASE or (?u) does not handle Unicode-aware case folding.

Correctness
java.correctness.random-coerced-to-zeroLow
Casting Math.random() to int without scaling always returns zero

Casting Math.random() to int directly (without multiplying) always yields zero.

Correctness
cfn.correctness.check-at-least-one-essential-container-is-specifiedHigh
Check at least one essential container is specified

Check at least one essential container is specified

Correctness
cfn.correctness.check-deletionpolicy-values-for-resourcesHigh
Check deletionpolicy values for resources

Check deletionpolicy values for resources

Correctness
cfn.correctness.check-dependson-values-for-resourcesHigh
Check dependson values for resources

Check dependson values for resources

Correctness
cfn.security.check-dynamic-references-secure-strings-are-in-supported-locationsHigh
Check dynamic references secure strings are in supported locations

Check dynamic references secure strings are in supported locations

Security
cfn.correctness.check-ec2-ebs-propertiesHigh
Check ec2 ebs properties

Check ec2 ebs properties

Correctness
cfn.correctness.check-elastic-cache-redis-cluster-settingsHigh
Check elastic cache redis cluster settings

Check elastic cache redis cluster settings

Correctness
go.correctness.defer-close-before-checkHigh
Check error before deferring Close

A deferred Close runs even when the open call failed and returned a nil handle.

Correctness
cfn.correctness.check-events-rule-targets-are-less-than-or-equal-to-5High
Check events rule targets are less than or equal to 5

Check events rule targets are less than or equal to 5

Correctness
cfn.correctness.check-fargate-service-scheduling-strategyHigh
Check fargate service scheduling strategy

Check fargate service scheduling strategy

Correctness
cfn.correctness.check-fn-and-structure-for-validityHigh
Check fn::and structure for validity

Check fn::and structure for validity

Correctness
cfn.correctness.check-fn-equals-structure-for-validityHigh
Check fn::equals structure for validity

Check fn::equals structure for validity

Correctness
cfn.correctness.check-fn-if-structure-for-validityHigh
Check fn::if structure for validity

Check fn::if structure for validity

Correctness
cfn.correctness.check-fn-not-structure-for-validityHigh
Check fn::not structure for validity

Check fn::not structure for validity

Correctness
cfn.correctness.check-fn-or-structure-for-validityHigh
Check fn::or structure for validity

Check fn::or structure for validity

Correctness
cfn.security.check-for-noecho-referencesMedium
Check for noecho references

Check for noecho references

Security
rust.quality.possible-missing-comma-in-arrayMedium
Check for possibly missing comma in array expression

Two adjacent expressions in an array literal without a comma separator likely indicate a missing comma.

Correctness
cfn.correctness.check-for-subscriptionfilters-have-beyond-2-attachments-to-a-cloudwatch-log-groupHigh
Check for subscriptionfilters have beyond 2 attachments to a cloudwatch log group

Check for subscriptionfilters have beyond 2 attachments to a cloudwatch log group

Correctness
cfn.security.check-iam-permission-configurationMedium
Check iam permission configuration

Check iam permission configuration

Security
cfn.maintainability.check-iam-resource-policies-syntaxMedium
Check iam resource policies syntax

Check iam resource policies syntax

Maintainability
cfn.correctness.check-if-a-json-object-is-within-size-limitsHigh
Check if a json object is within size limits

Check if a json object is within size limits

Correctness
cfn.correctness.check-if-a-list-has-between-min-and-max-number-of-values-specifiedHigh
Check if a list has between min and max number of values specified

Check if a list has between min and max number of values specified

Correctness
cfn.correctness.check-if-a-list-has-duplicate-valuesHigh
Check if a list has duplicate values

Check if a list has duplicate values

Correctness
cfn.maintainability.check-if-a-list-that-allows-duplicates-has-any-duplicatesLow
Check if a list that allows duplicates has any duplicates

Check if a list that allows duplicates has any duplicates

Maintainability
cfn.correctness.check-if-a-number-is-between-min-and-maxHigh
Check if a number is between min and max

Check if a number is between min and max

Correctness
cfn.correctness.check-if-a-string-has-between-min-and-max-number-of-values-specifiedHigh
Check if a string has between min and max number of values specified

Check if a string has between min and max number of values specified

Correctness
cfn.maintainability.check-if-conditions-are-usedMedium
Check if conditions are used

Check if conditions are used

Maintainability
cfn.correctness.check-if-eol-lambda-function-runtimes-are-usedHigh
Check if eol lambda function runtimes are used

Check if eol lambda function runtimes are used

Correctness
cfn.maintainability.check-if-eol-lambda-function-runtimes-are-used-w2531Medium
Check if eol lambda function runtimes are used

Check if eol lambda function runtimes are used

Maintainability
cfn.security.check-if-iam-policies-are-properly-configuredHigh
Check if iam policies are properly configured

Check if iam policies are properly configured

Security
cfn.maintainability.check-if-imageid-parameters-have-the-correct-typeMedium
Check if imageid parameters have the correct type

Check if imageid parameters have the correct type

Maintainability
cfn.maintainability.check-if-mappings-are-usedMedium
Check if mappings are used

Check if mappings are used

Maintainability
cfn.maintainability.check-if-parameters-are-usedMedium
Check if parameters are used

Check if parameters are used

Maintainability
cfn.maintainability.check-if-parameters-have-a-valid-valueMedium
Check if parameters have a valid value

Check if parameters have a valid value

Maintainability
cfn.maintainability.check-if-parameters-have-a-valid-value-based-on-an-allowed-patternMedium
Check if parameters have a valid value based on an allowed pattern

Check if parameters have a valid value based on an allowed pattern

Maintainability
cfn.security.check-if-password-properties-are-correctly-configuredMedium
Check if password properties are correctly configured

Check if password properties are correctly configured

Security
cfn.correctness.check-if-properties-have-a-valid-valueHigh
Check if properties have a valid value

Check if properties have a valid value

Correctness
cfn.correctness.check-if-property-values-adhere-to-a-specific-patternHigh
Check if property values adhere to a specific pattern

Check if property values adhere to a specific pattern

Correctness
cfn.correctness.check-if-refing-to-a-iam-resource-with-path-setHigh
Check if refing to a iam resource with path set

Check if refing to a iam resource with path set

Correctness
cfn.correctness.check-if-refs-existHigh
Check if refs exist

Check if refs exist

Correctness
cfn.correctness.check-if-serverless-resources-have-serverless-transformHigh
Check if serverless resources have serverless transform

Check if serverless resources have serverless transform

Correctness
cfn.correctness.check-if-the-referenced-conditions-are-definedHigh
Check if the referenced conditions are defined

Check if the referenced conditions are defined

Correctness
cfn.correctness.check-minimum-90-period-is-met-between-backupplan-cold-and-deleteHigh
Check minimum 90 period is met between backupplan cold and delete

Check minimum 90 period is met between backupplan cold and delete

Correctness
cfn.maintainability.check-obsolete-dependson-configuration-for-resourcesMedium
Check obsolete dependson configuration for resources

Check obsolete dependson configuration for resources

Maintainability
java.correctness.unsafe-optional-getMedium
Check Optional before calling get

Optional.get without a presence check can throw.

Correctness
cfn.maintainability.check-outputs-using-importvalueMedium
Check outputs using importvalue

Check outputs using importvalue

Maintainability
cfn.correctness.check-properties-that-are-mutually-exclusiveHigh
Check properties that are mutually exclusive

Check properties that are mutually exclusive

Correctness
cfn.correctness.check-properties-that-are-required-togetherHigh
Check properties that are required together

Check properties that are required together

Correctness
cfn.correctness.check-properties-that-need-at-least-one-of-a-list-of-propertiesHigh
Check properties that need at least one of a list of properties

Check properties that need at least one of a list of properties

Correctness
cfn.correctness.check-properties-that-need-only-one-of-a-list-of-propertiesHigh
Check properties that need only one of a list of properties

Check properties that need only one of a list of properties

Correctness
cfn.maintainability.check-required-properties-for-lambda-if-the-deployment-package-is-a-zip-fileMedium
Check required properties for lambda if the deployment package is a .zip file

Check required properties for lambda if the deployment package is a .zip file

Maintainability
cfn.correctness.check-resource-properties-valuesHigh
Check resource properties values

Check resource properties values

Correctness
cfn.maintainability.check-resources-with-auto-expiring-content-have-explicit-retention-periodLow
Check resources with auto expiring content have explicit retention period

Check resources with auto expiring content have explicit retention period

Maintainability
cfn.maintainability.check-resources-with-updatereplacepolicy-deletionpolicy-have-bothMedium
Check resources with updatereplacepolicy/deletionpolicy have both

Check resources with updatereplacepolicy/deletionpolicy have both

Maintainability
cfn.correctness.check-state-machine-definition-for-proper-syntaxHigh
Check state machine definition for proper syntax

Check state machine definition for proper syntax

Correctness
cfn.maintainability.check-stateful-resources-have-a-set-updatereplacepolicy-deletionpolicyLow
Check stateful resources have a set updatereplacepolicy/deletionpolicy

Check stateful resources have a set updatereplacepolicy/deletionpolicy

Maintainability
cfn.correctness.check-that-modules-resources-are-validHigh
Check that modules resources are valid

Check that modules resources are valid

Correctness
cfn.correctness.check-the-configuration-of-a-resources-updatepolicyHigh
Check the configuration of a resources updatepolicy

Check the configuration of a resources updatepolicy

Correctness
cfn.correctness.check-updatereplacepolicy-values-for-resourcesHigh
Check updatereplacepolicy values for resources

Check updatereplacepolicy values for resources

Correctness
cfn.correctness.check-values-of-properties-for-valid-refs-and-getattsHigh
Check values of properties for valid refs and getatts

Check values of properties for valid refs and getatts

Correctness
cfn.maintainability.checks-for-legacy-instance-type-generationsLow
Checks for legacy instance type generations

Checks for legacy instance type generations

Maintainability
cfn.correctness.cidr-validation-of-parametersHigh
Cidr validation of parameters

Cidr validation of parameters

Correctness
java.correctness.class-name-collisionMedium
Class name collides with superclass simple name

A class shares its simple name with a superclass referenced in the extends clause, causing ambiguity.

Correctness
php.correctness.instanceof-invalid-typeHigh
Class used with instanceof is not a valid type

instanceof should only be used with valid class, interface, or trait names.

Correctness
php.correctness.class-implements-non-interfaceCritical
Classes can only implement interfaces

Classes can only implement interfaces

Correctness
java.correctness.clone-without-superHigh
Clone method does not call super.clone()

`clone()` methods should call `super.clone()` to create the correct object.

Correctness
java.correctness.closeable-provides-injectionHigh
Closeable values should not be injected via @Provides annotated methods

@Provides/@Inject methods returning Closeable types can cause resource management problems.

Correctness
php.correctness.unused-closure-use-variableHigh
Closure use variables must be referenced

Closure use variables must be referenced

Correctness
cfn.correctness.cloudfront-aliasesHigh
Cloudfront aliases

Cloudfront aliases

Correctness
cfn.correctness.codepipeline-stage-actionsHigh
Codepipeline stage actions

Codepipeline stage actions

Correctness
cfn.correctness.codepipeline-stagesHigh
Codepipeline stages

Codepipeline stages

Correctness
java.performance.non-zero-to-arrayHigh
Collection.toArray() with non-zero sized array argument

Passing a non-zero sized array to `Collection.toArray(T[])` is less efficient than passing a zero-sized array.

Performance
java.correctness.collection-adds-selfHigh
Collections should not be added to themselves

A collection is being added to itself, which is likely a logic error.

Correctness
java.correctness.collection-contains-selfCritical
Collections should not contain themselves

A collection checks if it contains itself — likely a logic error.

Correctness
sql.style.column-expression-without-aliasHigh
Column expression without alias detected

Complex column expressions should include an explicit alias

Sql
ruby.bug-risk.alter-queries-combineLow
Combine alter queries in migrations

Prefer `change_table` with multiple column changes over repeated `change_column` calls.

Performance
go.performance.combine-append-callsMedium
Combine multiple append calls into a single call

Consecutive `append` calls to the same slice can be combined into a single call.

Performance
security.no-command-execution-with-request-inputCritical
Command execution using untrusted input

Process execution helpers must not receive request-controlled executables or shell-interpreted arguments.

Security
java.correctness.equals-on-arrayMedium
Compare arrays with Arrays.equals

Array.equals compares references, not contents.

Correctness
java.correctness.compareto-min-valueMedium
compareTo returns Integer.MIN_VALUE

Returning Integer.MIN_VALUE from compareTo() can break comparison contracts and cause subtle ordering bugs.

Correctness
rust.correctness.unit-comparisonHigh
Comparing unit values

Comparing two block expressions that both return `()` is likely unintended.

Correctness
rust.correctness.nan-comparisonHigh
Comparison with NaN

Comparing a float value with NaN using `==` or `!=` is always false or true.

Correctness
ts.correctness.negative-zero-comparisonMedium
Comparison with negative zero

Detects comparison with negative zero issues in JavaScript and TypeScript source.

Correctness
ts.correctness.simplify-boolean-returnHigh
Complex boolean return

Return statements that explicitly return true/false based on a condition can be simplified.

Correctness
ts.correctness.compound-assignment-with-awaitHigh
Compound assignment with await

Detects compound assignment with await issues in JavaScript and TypeScript source.

Correctness
cfn.correctness.conditions-have-appropriate-propertiesHigh
Conditions have appropriate properties

Conditions have appropriate properties

Correctness
go.security.net-http-missing-timeoutsMedium
Configure HTTP server timeouts for public listeners

Public Go HTTP servers should use `http.Server` with read, write, idle, and header timeouts instead of convenience `ListenAndServe` helpers or incomplete literals.

Securitynet/http
ts.correctness.no-confusing-label-in-switchHigh
Confusing label inside switch

Labeled statements inside switch blocks can be confused with case clauses.

Correctness
ts.correctness.confusing-multiline-expressionMedium
Confusing multiline expression

Detects confusing multiline expression issues in JavaScript and TypeScript source.

Correctness
ruby.bug-risk.where-first-over-find-byLow
Consider using where.first instead of find_by

`find_by` is not incorrect, but `where(...).first` is more explicit and consistent with other query chain patterns.

Correctness
ruby.bug-risk.constant-in-blockHigh
Constants defined within a block

A 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.

Correctness
ts.security.user-controlled-view-renderMedium
Constrain `res.render()` trust boundaries

Express view names should not cross into server-side rendering from untrusted input.

Security
ts.security.user-controlled-sendfileHigh
Constrain `res.sendFile` to a trusted root

`res.sendFile()` should not resolve filenames or options from request input without a trusted root.

Security
ts.security.file-generationHigh
Constrain local file generation paths

Local file writes should not derive their destination path from request or upload input.

Security
ts.security.import-using-user-inputMedium
Constrain module-loading to trusted allowlists

`require()` and dynamic `import()` should not resolve modules from untrusted input.

Security
java.security.spring-webmvc-unrestricted-data-bindingHigh
Constrain Spring MVC data binding for domain objects

Binding request parameters directly into entity-like models without `setAllowedFields` / `@InitBinder` controls risks mass-assignment privilege escalation.

SecuritySpring
java.correctness.constructor-starts-threadMedium
Constructor of non-final class starts a thread

Starting a thread in a constructor of a non-final class may expose a partially constructed object.

Correctness
ts.correctness.control-flow-in-finallyMedium
Control flow in finally block

Avoid return, throw, break, or continue inside finally blocks.

Correctness
ruby.bug-risk.controller-base-subclassMedium
Controllers should subclass ApplicationController

Controller class directly subclasses `ActionController::Base` instead of `ApplicationController`.

Correctness
cfn.security.controlling-access-to-an-s3-bucket-should-be-done-with-bucket-policiesMedium
Controlling access to an s3 bucket should be done with bucket policies

Controlling access to an s3 bucket should be done with bucket policies

Security
rust.security.differently-sized-slice-conversionHigh
Conversion between differently sized raw slices

Casting between raw slices of different element sizes can produce out-of-bounds access and memory corruption.

Security
rust.security.const-to-mut-ptrHigh
Conversion of const pointer to mutable pointer

Converting a `*const T` to `*mut T` violates Rust's aliasing guarantees and can introduce undefined behavior.

Security
java.correctness.serialization-method-signatureHigh
Custom serialization method declared with incorrect signature

Serializable classes declaring writeObject, readObject, or readObjectNoData must use exactly the correct signatures expected by the serialization API.

Correctness
ts.react.no-keyboard-interaction-without-widget-roleMedium
Declare a widget role when mixing click and key handlers

Elements that handle both clicks and key events behave like custom controls and should advertise an appropriate ARIA role.

CorrectnessReact
php.correctness.missing-member-visibilityLow
Declare explicit member visibility

Class properties and methods should declare public, protected, or private visibility.

Correctness
ts.vue.no-computed-missing-dependencyHigh
Declare external dependencies in computed properties

Vue computed properties referencing data Vue cannot reactively track should declare explicit dependencies.

Correctness
ts.quality.deep-nestingLow
Deep nesting reducing readability

Deeply nested control flow should be flattened where practical.

Quality
cfn.correctness.default-value-cannot-use-refsHigh
Default value cannot use refs

Default value cannot use refs

Correctness
cfn.correctness.default-value-is-within-parameter-constraintsHigh
Default value is within parameter constraints

Default value is within parameter constraints

Correctness
java.correctness.mutable-data-exposedHigh
Defensively copy mutable objects passed to constructors

Assigning a mutable object (collection or array) directly to a field without a defensive copy exposes internal state.

Correctness
go.correctness.deferred-func-literalHigh
Deferred function literal can be simplified

A `defer func() { bar() }()` wrapping a single call can be simplified to `defer bar()`.

Correctness
ts.correctness.delete-on-variableMedium
Delete operator on variable

Detects delete operator on variable issues in JavaScript and TypeScript source.

Correctness
ts.correctness.deprecated-api-usageHigh
Deprecated API usage

Use of known deprecated APIs should be replaced with modern alternatives.

Correctness
ts.vue.no-data-object-declarationHigh
Deprecation of Object Declaration on data

The `data` option in Vue components must be a function, not an object literal, to avoid shared state across instances.

Correctness
java.security.xxe-xml-input-factoryHigh
Disable DTD and external entities on XMLInputFactory

`XMLInputFactory.newInstance()` and `XMLInputFactory.newFactory()` should set `SUPPORT_DTD` and `IS_SUPPORTING_EXTERNAL_ENTITIES` to false before reading untrusted XML.

Security
java.security.xxe-document-builderHigh
Disable external entities on Java XML parsers

`DocumentBuilderFactory`, `SAXParserFactory`, and `TransformerFactory` instances should enable secure processing and disable external entities before they parse untrusted XML.

Security
py.security.flask-debug-enabledHigh
Disable Flask debug mode in runtime configuration

Flask applications should not enable debug mode through `app.run`, config assignment, or `FLASK_DEBUG`.

SecurityFlask
php.security.symfony-debug-exposureHigh
Disable Symfony debug and profiler in production-like configs

Production-like Symfony configuration should not enable debug mode or web profiler surfaces.

SecuritySymfony
sql.style.distinct-with-parenthesisHigh
DISTINCT with parenthesis

Avoid using parentheses after DISTINCT as if it were a function call

Sql
php.correctness.undefined-static-propertyCritical
Do not access undefined static properties

Accessing a static property that is not declared on the target class will produce a runtime notice and return null.

Correctness
ts.security.express-static-dotfiles-allowMedium
Do not allow dotfiles in Express static middleware

express.static should not serve dotfiles from disk unless explicitly required and reviewed.

SecurityExpress
ts.security.permissive-allow-originHigh
Do not allow every origin in CORS policy

CORS should not fall back to wildcard or implicit allow-all origin settings.

Security
ruby.bug-risk.exception-class-overwrittenMedium
Do not assign rescue result to exception class names

Use rescue StandardError or rescue StandardError => e, not rescue => StandardError.

Correctness
java.security.jpa-concatenated-queryCritical
Do not build JPA or JDBC queries by concatenating user-controlled input

`createQuery`, `createNativeQuery`, `JdbcTemplate` calls, and string-based `@Query` values must not stitch SQL with request data using `+`, `String.format`, or similar.

SecurityJPA
java.correctness.catch-null-pointerCritical
Do not catch NullPointerException

NullPointerException indicates a programming error.

Correctness
ts.security.express-permissive-corsHigh
Do not combine permissive CORS origins with credentials

CORS middleware must not reflect every origin or use a wildcard while `credentials` is enabled.

SecurityExpress
php.security.insecure-cors-wildcard-with-credentialsHigh
Do not combine wildcard CORS origin with credentials

PHP CORS responses should not allow credentials when origin is set to `*`.

Security
ts.security.ui-redressHigh
Do not derive anti-framing headers from request input

Framing and CSP headers should not be set from request-controlled values.

Security
rust.security.axum-body-limit-disabledHigh
Do not disable Axum default body limits for untrusted uploads

Axum apps should keep a finite `DefaultBodyLimit` (or equivalent) so request bodies cannot exhaust memory.

SecurityAxum
ruby.security.rails-csrf-disabledHigh
Do not disable Rails CSRF protection on browser controllers

Browser-facing Rails controllers should keep forgery protection enabled with a safe strategy.

SecurityRails
py.security.tls-verification-disabledHigh
Do not disable TLS certificate verification

Python HTTPS clients should not set `verify=False`, which disables server certificate validation.

Security
rust.correctness.ignored-future-valueHigh
Do not drop futures without awaiting

An async function was called without awaiting or storing its returned Future.

Correctness
php.correctness.echo-invalid-valueCritical
Do not echo non-string values

echo 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.

Correctness
ts.security.debug-mode-enabledMedium
Do not expose debug routes or middleware in production

Debug handlers, stack-showing middleware, and diagnostic endpoints should stay behind explicit development-only guards.

Security
go.security.pprof-exposedMedium
Do not expose pprof endpoints on shared HTTP mux

Importing `net/http/pprof` or registering `/debug/pprof` handlers on the default mux exposes debugging endpoints to remote callers.

Security
ts.security.no-native-prototype-extensionLow
Do not extend native prototypes

Do not assign properties on built-in prototype objects such as `Array.prototype`.

Security
rust.correctness.forget-join-handleMedium
Do not forget spawned task handles

Forgetting a JoinHandle leaks the task and drops panic propagation.

Correctness
rust.correctness.mutex-held-across-awaitHigh
Do not hold a Mutex guard across await

Holding a std::sync::Mutex guard across an await point can deadlock the async executor.

Correctness
ts.security.astro-vite-public-secret-defineHigh
Do not inline secrets into Astro PUBLIC import meta defines

Astro and Vite define entries for import.meta.env.PUBLIC_* must not map to high-risk process.env secrets.

SecurityAstro
php.correctness.instantiate-abstract-classCritical
Do not instantiate abstract classes

Do not instantiate abstract classes

Correctness
java.correctness.invalidated-iteratorHigh
Do not modify collections while iterating

Modifying a collection with `add()`, `remove()`, or `clear()` inside a for-each loop will throw a ConcurrentModificationException.

Correctness
ts.react.no-direct-state-mutationHigh
Do not mutate React state directly

Assigning to `this.state` bypasses React change detection and produces stale UI.

CorrectnessReact
ts.security.electron-shell-open-external-unvalidatedHigh
Do not open external URLs from request data in Electron

shell.openExternal should not receive request-controlled URLs without validation.

Security
ts.security.xml-parse-string-with-untrusted-inputHigh
Do not parse untrusted XML with permissive parsers

parseString and similar XML helpers should not consume request-controlled payloads without hardening.

Security
ts.security.external-file-uploadHigh
Do not persist upload filenames directly

Upload handlers should not store attacker-controlled filenames without generating or validating a safe local name.

Security
security.external-file-uploadHigh
Do not persist upload filenames directly

Upload handlers should not store attacker-controlled filenames without generating or validating a safe local name.

Security
php.correctness.print-invalid-valueCritical
Do not print non-string values

print should only be used with strings. Objects, arrays, and array() expressions cannot be meaningfully converted to strings by print.

Correctness
ts.security.no-global-native-reassignmentHigh
Do not reassign global native bindings

Do not assign to global native bindings such as `Object`, `Array`, or `undefined`.

Security
ts.security.insecure-allow-originHigh
Do not reflect request origin into CORS policy

`Access-Control-Allow-Origin` should not be set from request-controlled input.

Security
php.correctness.nullsafe-returned-by-referenceHigh
Do not return nullsafe access by reference

By-reference arrow functions cannot safely return nullsafe property access.

Correctness
go.security.insecure-rand-seedMedium
Do not seed math/rand for security-sensitive randomness

`rand.Seed` from `math/rand` produces predictable streams; security-sensitive code must use `crypto/rand`.

Security
rust.quality.builtin-type-shadowMedium
Do not shadow built-in types with local variables

A local variable shadows a Rust built-in type name, which can confuse readers and hide type errors.

Style
ts.security.jwt-insecure-signing-algorithmCritical
Do not sign JWTs with the none algorithm

JSON Web Token signing options must not enable the none algorithm.

Security
ts.security.nestjs-skip-throttle-sensitive-routeMedium
Do not skip throttling on credential routes

Sensitive Nest routes should not disable `@nestjs/throttler` protections without a compensating throttle.

SecurityNestJS
ruby.security.rails-unsafe-session-or-cookie-storeMedium
Do not store raw request params in session or cookies

Session and signed cookie stores should not persist raw `params` blobs that attackers can influence.

SecurityRails
java.correctness.sync-boxed-primitiveMedium
Do not synchronize on boxed primitives

Synchronizing on a boxed primitive (Integer, Long, Boolean, etc.) is unsafe due to interning and caching.

Correctness
java.correctness.sync-on-string-literalMedium
Do not synchronize on string literals

String literals are interned and shared across the JVM.

Correctness
java.security.trust-all-certificatesCritical
Do not trust every TLS certificate

TrustManagers must validate certificates; empty `checkServerTrusted`/`checkClientTrusted` bodies or `TrustAllStrategy` accept any peer.

Security
java.correctness.empty-catchMedium
Do not use empty catch blocks

Catch blocks should handle or rethrow exceptions.

Correctness
rust.quality.potentially-incomplete-ascii-rangeMedium
Do not use exclusive range for ASCII letter/number ranges

Exclusive range operator `..` between character literals like `'a'..'z'` excludes the upper bound.

Correctness
java.security.null-cipherCritical
Do not use NullCipher

Constructing `new NullCipher()` or `Cipher.getInstance("Null")` performs no encryption.

Security
ts.react.no-this-in-function-componentHigh
Do not use this in function components

Function components have no instance, so `this` references are almost always mistakes copied from class components.

CorrectnessReact
java.correctness.double-assignmentHigh
Double assignment of variable detected

A local variable is assigned twice consecutively without being read between the assignments.

Correctness
java.correctness.double-checked-lockingHigh
Double-checked locking without volatile field

A double-checked locking pattern on a non-volatile field is unsafe.

Correctness
java.correctness.nan-comparisonHigh
Double/Float comparison with NaN always returns false

Comparing 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.

Correctness
java.correctness.comparator-downcast-sign-flipMedium
Downcast may flip integer sign in comparator method

Narrowing casts (short, byte, int) of subtraction results inside compare/compareTo methods can overflow and flip the comparison sign, producing incorrect ordering.

Correctness
java.correctness.duplicate-binary-argumentMedium
Duplicate arguments in binary expression

Same expression appears on both sides of a binary operator — likely a copy-paste bug.

Correctness
ruby.bug-risk.duplicate-constant-assignmentHigh
Duplicate assignments for a constant

Multiple assignments to the same constant were found. The previous value is discarded, which is likely a developer mistake.

Correctness
go.correctness.duplicate-branch-bodyHigh
Duplicate body in adjacent branches

Adjacent if-else branches have identical bodies. One branch is likely dead or wrong.

Correctness
go.correctness.duplicate-switch-casesHigh
Duplicate case in switch statement

Duplicate case values mean the second case is unreachable.

Correctness
ts.correctness.duplicate-class-memberMedium
Duplicate class member

Detects duplicate class member issues in JavaScript and TypeScript source.

Correctness
ts.quality.duplicate-code-blockLow
Duplicate code block

Large duplicated function bodies across files make behavior harder to maintain safely.

Quality
go.correctness.duplicate-function-argumentsHigh
Duplicate function arguments

Consecutive identical arguments may indicate a copy-paste error.

Correctness
ts.correctness.duplicate-function-parameterMedium
Duplicate function parameter names

A function declares the same parameter name more than once.

Correctness
ts.correctness.duplicate-if-else-conditionMedium
Duplicate if-else-if condition

Do not repeat the same test in an if-else-if chain.

Correctness
ts.correctness.duplicate-import-sourceLow
Duplicate imports from the same module

The file imports from the same module path more than once.

Correctness
ts.correctness.duplicate-object-keyMedium
Duplicate keys in object literal

An object literal repeats the same static property name.

Correctness
ts.correctness.duplicate-switch-caseMedium
Duplicate switch case labels

A switch repeats the same case discriminant.

Correctness
sql.style.duplicate-table-aliasesCritical
Duplicate table aliases

Each table alias should be unique within a query

Sql
ruby.bug-risk.enum-duplicate-valuesHigh
Duplicate value detected in enum declarations

Two or more enum items share the same integer value, which will cause mapping collisions.

Correctness
go.correctness.unnecessary-else-returnHigh
Early return in if-then-else

When an if-body ends with a return/break/continue, the else branch is unnecessary.

Correctness
go.security.echo-sensitive-binding-without-validationMedium
Echo handlers should validate sensitive request bodies

Sensitive Echo binds should use struct tags or validators so mutations cannot accept empty or malformed credentials and roles.

SecurityEcho
java.correctness.volatile-array-elementsMedium
Elements accessed from volatile reference to an array are not volatile

Declaring an array reference as volatile does not make array element accesses volatile.

Correctness
ts.vue.emits-validator-return-booleanHigh
Emits validators must return a boolean

Emit event validators are expected to return a boolean value indicating whether the event payload is valid.

Correctness
ts.correctness.empty-block-statementLow
Empty block statement

A control-flow or try/catch branch uses an empty `{}` block.

Correctness
ts.correctness.regexp-empty-character-classMedium
Empty character class in regular expression

The regular expression pattern contains an empty character class that never matches.

Correctness
ts.correctness.empty-destructuring-patternMedium
Empty destructuring pattern

Detects empty destructuring pattern issues in JavaScript and TypeScript source.

Correctness
rust.correctness.empty-range-expressionCritical
Empty range expression with start greater than end

Range expression where start > end, producing an empty range or runtime panic.

Correctness
py.security.django-missing-csrf-middlewareMedium
Enable Django CSRF middleware for browser apps

Django projects using cookie-backed sessions should include `CsrfViewMiddleware` in `MIDDLEWARE`.

SecurityDjango
ts.security.fastify-public-bind-without-trust-proxyMedium
Enable trust proxy for publicly bound Fastify servers

Fastify instances listening on all interfaces should enable trustProxy or terminate behind a reverse proxy you register in code.

SecurityFastify
py.security.ssh-host-key-validationMedium
Ensure SSH host key validation is enabled

AutoAddPolicy disables SSH host key verification, enabling MITM attacks

Security
ruby.bug-risk.enum-array-syntaxMedium
Enum detected with array syntax

Use of array syntax for enum declarations is brittle and can lead to unexpected values when enum items are reordered.

Correctness
java.correctness.mutable-enum-fieldsMedium
Enum fields should be final

Enum fields that are not declared final create mutable state in a shared singleton instance.

Correctness
java.correctness.enum-equals-methodHigh
equals method defined for enumeration

An enum should not define an `equals()` method — enum equality is determined by identity.

Correctness
java.correctness.equals-inherits-parentMedium
equals method inherits parent without overriding

A class defines an overloaded `equals` but does not override `equals(Object)`, so the parent's equals semantics are silently inherited.

Correctness
java.correctness.overloaded-equalsMedium
equals method is overloaded but not overridden

A method named `equals` with a non-Object parameter type overloads rather than overrides equals.

Correctness
java.correctness.equals-null-checkHigh
equals method without null check

An `equals(Object)` implementation accesses fields or methods without a preceding null guard, risking NullPointerException.

Correctness
cfn.correctness.error-processing-rule-on-the-templateHigh
Error processing rule on the template

Error processing rule on the template

Correctness
ts.quality.swallowed-errorLow
Errors swallowed silently

Catch blocks must log, reject, or rethrow failures instead of dropping them silently.

Quality
java.security.template-unescaped-user-outputHigh
Escape template output that reflects request or model data

Thymeleaf `th:utext`, JSP scriptlets, and FreeMarker `?no_esc` patterns must not render untrusted request or model values without an explicit sanitization strategy.

Security
go.bug-risk.etcd-getlogger-misuseHigh
etcd client GetLogger used as general-purpose logger

GetLogger 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.

Bug-risk
ts.security.no-dynamic-executionLow
Eval or dynamic code execution

Eval-like helpers, `vm` execution APIs, and string-evaluated timers should not execute dynamic code.

Security
java.performance.expensive-method-on-ui-threadHigh
Expensive methods should not be invoked from performance critical threads

Methods annotated with `@WorkerThread` or `@Expensive` are invoked from a `@MainThread`, `@UIThread`, or `@PerformanceCritical` context, potentially blocking the UI.

Performance
java.performance.explicit-gcHigh
Explicit invocation of garbage collection is detrimental

Explicit calls to `System.gc()` or `Runtime.getRuntime().gc()` trigger full GC cycles that degrade performance.

Performance
ts.correctness.extraneous-importMedium
Extraneous import

Detected import declarations which import extraneous modules.

Correctness
go.security.fiber-sensitive-binding-without-validationMedium
Fiber handlers should validate sensitive request bodies

Sensitive Fiber parsers should pair structs with validator tags or explicit validation so roles and secrets cannot be silently omitted.

SecurityFiber
java.correctness.non-final-immutable-fieldsMedium
Fields of immutable classes should be final

Fields in a class annotated with @Immutable or @Value should be declared final.

Correctness
php.correctness.redundant-final-methodHigh
Final methods are redundant in final classes

Final methods are redundant in final classes

Correctness
java.correctness.explicit-finalizer-invocationHigh
Finalizers must not be explicitly invoked

Calling `.finalize()` explicitly is dangerous and deprecated.

Correctness
cfn.maintainability.findinmap-keys-exist-in-the-mapMedium
Findinmap keys exist in the map

Findinmap keys exist in the map

Maintainability
cfn.correctness.findinmap-validation-of-configurationHigh
Findinmap validation of configuration

Findinmap validation of configuration

Correctness
php.correctness.invalid-regex-literalMedium
Fix invalid regular expression literals

preg_* calls must use a valid delimiter and closing pattern literal.

Correctness
ts.correctness.flawed-string-comparisonHigh
Flawed string comparison

String comparison using identical operands or locale-sensitive operators may indicate a bug.

Correctness
java.performance.boxed-double-constructorHigh
Float/Double constructor is inefficient

`new Float(value)` and `new Double(value)` create unnecessary objects; use `valueOf()` instead.

Performance
cfn.maintainability.fn-equals-will-always-return-true-or-falseMedium
Fn::equals will always return true or false

Fn::equals will always return true or false

Maintainability
java.correctness.for-loop-mismatched-incrementMedium
For loop checks one variable but increments another

The loop condition checks one variable but a different variable is being incremented.

Correctness
rust.correctness.iter-next-in-for-loopCritical
For loop over `.next()` iterates `Option`, not the iterator

Iterating over `.next()` in a for loop iterates over the Option result, not the remaining iterator elements.

Correctness
ts.correctness.for-in-on-arrayMedium
for-in over array-like value

Prefer for-of or index loops instead of for-in on arrays.

Correctness
ts.correctness.this-outside-classHigh
Found `this` keyword outside of classes

Do not use the `this` keyword outside of a class body.

Correctness
rust.correctness.unhandled-io-resultHigh
Found I/O operation with unhandled return value

I/O operations return `Result` which should be handled to avoid silently ignoring errors.

Correctness
rust.quality.approximate-floating-constantMedium
Found manual approximation of known floating constant

Float literal approximates a known mathematical constant that should use `std::f64::consts::*` or `std::f32::consts::*`.

Style
ts.correctness.non-existent-assignment-operatorsHigh
Found non-existent assignment operators

Detects patterns like `=+`, `=-`, `=!`, `=~` that suggest a typo in a compound assignment operator.

Correctness
rust.performance.single-char-string-literal-patternMedium
Found single-character string literal pattern

Detects use of single-character string literals where a char would be more performant.

Performance
rust.correctness.transmute-t-to-ptr-refHigh
Found transmute between a type `T` and `*T` or `&T`

Transmuting between a value type and its pointer/reference form is unsound.

Correctness
rust.correctness.transmute-integer-to-boolHigh
Found transmute between an integer and a `bool`

Transmuting an integer to bool can produce invalid boolean values.

Correctness
rust.quality.deprecated-function-useHigh
Found use of deprecated function

Usage of a known deprecated Rust standard library function, constant, or type.

Correctness
ruby.bug-risk.argument-overwritten-before-useHigh
Function argument overwritten before use

A 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.

Correctness
go.correctness.hidden-goroutineHigh
Function body wraps entirety in hidden goroutine

A 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.

Correctness
ts.correctness.declaration-in-nested-blockLow
Function or var declaration in nested block

A `function` or `var` declaration appears inside a nested block instead of the enclosing scope top level.

Correctness
ts.quality.function-too-large-or-complexLow
Function too large or too complex

Oversized or overly complex functions should be split into smaller units.

Quality
cfn.correctness.getatt-validation-of-parametersHigh
Getatt validation of parameters

Getatt validation of parameters

Correctness
cfn.correctness.getaz-validation-of-parametersHigh
Getaz validation of parameters

Getaz validation of parameters

Correctness
java.correctness.enum-get-classMedium
getClass should not be used with enums whose members have custom bodies

Calling getClass() inside an enum body returns the anonymous subclass for constants with custom bodies, not the enum class itself. Prefer getDeclaringClass().

Correctness
java.correctness.getter-setter-sync-mismatchHigh
Getter and setter method synchronization does not match

One of a getter/setter pair is synchronized and the other is not.

Correctness
go.security.gin-sensitive-binding-without-validationMedium
Gin handlers should validate sensitive request bodies

Sensitive Gin binds should use `binding` or validator tags so authentication and mutation payloads cannot be silently empty.

SecurityGin
go.bug-risk.gin-loadhtmlglob-ill-formedHigh
gin.LoadHTMLGlob with ill-formed pattern may panic

`gin.LoadHTMLGlob()` with an ill-formed glob pattern silently matches zero files and causes a runtime panic when rendering templates.

Bug-risk
ts.react.no-accessibility-label-missingHigh
Give interactive elements an accessible name

Buttons, links, and inputs need labels, aria attributes, or visible text so assistive technologies can describe them.

CorrectnessReact
ts.correctness.global-object-called-as-functionMedium
Global object invoked as a function

A built-in namespace object such as `Math` or `JSON` is called like a function.

Correctness
go.bug-risk.gorm-dry-run-enabledHigh
GORM DryRun is enabled

`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.

Bug-risk
go.bug-risk.gorm-skip-default-transactionHigh
GORM SkipDefaultTransaction set to false

Setting `SkipDefaultTransaction` to `false` in gorm.Config causes GORM to wrap every operation in a transaction. Audit if this is intentional.

Bug-risk
go.bug-risk.gorm-updates-zero-valuesHigh
GORM Updates with struct silently excludes zero-value fields

`db.Updates(Struct{...})` or `db.Model(...).Updates(Struct{...})` silently skips zero-value fields (0, "", false, nil), potentially leaving stale data in the database.

Bug-risk
go.bug-risk.gorm-where-zero-valuesHigh
GORM Where with struct silently excludes zero-value fields

`db.Where(&Struct{...})` silently ignores zero-value fields (0, "", false, nil) in the WHERE clause, leading to unintended broader queries.

Bug-risk
ruby.bug-risk.grouped-parentheses-in-callHigh
Grouped parentheses found in function calls

Using 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.

Correctness
go.security.decompression-bombCritical
Guard against decompression bomb denial-of-service

`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.

Security
ts.react.no-set-state-in-component-did-updateMedium
Guard setState in componentDidUpdate

Unconditional setState in componentDidUpdate can recurse through renders when props or state change on every pass.

CorrectnessReact
go.security.unsafe-defer-closeHigh
Handle deferred Close errors explicitly

`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
security.no-hardcoded-credentialsCritical
Hardcoded API keys or credentials

Source files should not embed credential-like string literals.

Security
ts.quality.hardcoded-configuration-valuesLow
Hardcoded configuration values

Config-like values should usually come from configuration sources rather than source literals.

Quality
ts.security.ajv-insecure-configurationMedium
Harden AJV compile options

AJV should not compile schemas with allErrors true unless strict mode is enabled.

Security
ts.security.insecure-auth-cookie-flagsMedium
Harden auth-bearing cookies

Auth and session cookies should set HttpOnly, Secure, and SameSite.

Security
go.security.echo-unsafe-multipart-uploadHigh
Harden Echo multipart uploads

Multipart handlers should cap body size, sanitize filenames with `filepath.Base`, and avoid concatenating user filenames into destination paths.

SecurityEcho
ts.security.electron-dangerous-webpreferencesHigh
Harden Electron webPreferences

Electron renderers should not run with unsafe webPreferences that weaken isolation or transport protection.

Security
go.security.fiber-unsafe-multipart-uploadHigh
Harden Fiber multipart uploads

Fiber upload helpers should enforce size limits and never persist client-controlled filenames without normalization.

SecurityFiber
ts.security.nestjs-validation-pipe-without-whitelistMedium
Harden Nest ValidationPipe with whitelist mode

Global ValidationPipe instances should enable whitelist-style stripping for unexpected fields.

SecurityNestJS
php.security.insecure-session-or-cookie-configMedium
Harden PHP session and cookie security flags

Session/cookie configuration should keep secure, httpOnly, and safe same-site posture for authenticated contexts.

Security
php.security.xml-external-entityHigh
Harden PHP XML parsing against external entities

XML parsing should disable external entities and avoid LIBXML_NOENT or libxml_disable_entity_loader(false).

Security
java.security.servlet-insecure-cookieHigh
Harden servlet session and auth cookies

Session-like cookies must not disable HttpOnly or Secure, and explicit insecure builder flags should be removed.

SecurityJava Servlet
java.correctness.hashcode-on-arrayHigh
hashCode() called on an array

Calling hashCode() directly on an array uses Object's identity-based hashCode rather than a content-based hash code.

Correctness
java.correctness.hashtable-contains-valueCritical
Hashtable/ConcurrentHashMap.contains() checks for values, not keys

`.contains()` on `Hashtable` and `ConcurrentHashMap` checks for value existence. Use `.containsKey()` to check for key existence.

Correctness
go.correctness.http-nobody-nilMedium
http.NoBody instead of nil

Use http.NoBody for HTTP requests with no body instead of nil.

Correctness
ts.correctness.identical-comparison-operandsLow
Identical comparison operands

Both sides of a comparison use the same source text.

Correctness
go.correctness.duplicate-if-else-conditionHigh
if and else condition are the same

The 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.

Correctness
ruby.bug-risk.skip-filter-conditionalHigh
if used with only or except in skip_* filter

Combining `only:`/`except:` with `if:`/`unless:` on a skip filter creates confusing conditional logic.

Correctness
ruby.bug-risk.branches-without-bodyHigh
If/Elsif/Unless branches without a body detected

An `if`, `elsif`, or `unless` branch has no body expression. Add the intended behavior or remove the dead branch.

Correctness
ts.security.iframe-missing-sandbox-attributeLow
Iframe without sandbox attribute

Intrinsic iframe elements embedding untrusted third-party content should declare a sandbox attribute to reduce blast radius.

Security
ruby.bug-risk.ignored-column-accessedHigh
Ignored column accessed from ActiveRecord model

An ActiveRecord model references a column that has been declared in self.ignored_columns.

Correctness
java.correctness.illegal-monitor-state-caughtHigh
IllegalMonitorStateException should not be handled

IllegalMonitorStateException indicates a programming error; handling it masks the bug.

Correctness
go.correctness.flag-pointer-immediate-derefHigh
Immediate dereference of flag pointer

Dereferencing the flag pointer at the call site defeats the purpose of using a flag method.

Correctness
php.correctness.empty-function-bodyLow
Implement or remove empty functions

Non-abstract functions with empty bodies hide missing behavior.

Correctness
sql.style.implicit-column-aliasHigh
Implicit aliasing of column detected

Avoid implicit column aliases without the AS keyword

Sql
sql.style.implicit-table-aliasHigh
Implicit aliasing of table detected

Avoid implicit table aliases without the AS keyword

Sql
ts.correctness.implicit-undefined-returnMedium
Implicit undefined return in function

Functions that return a value on some paths must not fall through implicitly.

Correctness
cfn.correctness.importvalue-validation-of-parametersHigh
Importvalue validation of parameters

Importvalue validation of parameters

Correctness
java.correctness.impossible-toarray-downcastCritical
Impossible downcast of toArray() result

Casting the result of no-arg toArray() to a specific array type will throw ClassCastException.

Correctness
go.correctness.impossible-interface-nil-checkHigh
Impossible interface nil check

Interface 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.

Correctness
php.correctness.inaccessible-propertyHigh
Inaccessible property

Accessing a property that is not visible from the current scope will cause a runtime error.

Correctness
py.security.django-security-middleware-missingHigh
Include Django SecurityMiddleware in middleware stack

Django settings should include `django.middleware.security.SecurityMiddleware` in `MIDDLEWARE`.

SecurityDjango
go.correctness.incomplete-nil-checkHigh
Incomplete nil check on slice

Checking `xs != nil` before indexing a slice is not sufficient — a non-nil empty slice still panics on index access.

Correctness
sql.style.inconsistent-keyword-caseHigh
Inconsistent capitalisation of keywords

SQL keywords should be consistently cased throughout a file

Sql
sql.style.inconsistent-capitalizationHigh
Inconsistent capitalization detected

Identifiers should be consistently capitalized throughout a file

Sql
ruby.bug-risk.inconsistent-safe-navigationHigh
Inconsistent safe navigation usage

The same receiver is accessed with both `&.` and bare `.` in close proximity. This inconsistency suggests the nil-safety strategy is applied inconsistently.

Correctness
ts.correctness.incorrect-boolean-logicMedium
Incorrect boolean logic (AND/OR misuse)

Comparison chains on the same value must use the boolean operator that matches the intended logic.

Correctness
java.correctness.math-max-min-swappedMedium
Incorrect combination of Math.max and Math.min

Using `Math.max(A, Math.min(A, ...))` or `Math.min(A, Math.max(A, ...))` with a repeated argument is suspicious.

Correctness
java.correctness.incorrect-main-signatureHigh
Incorrect main method signature detected

A 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.

Correctness
ruby.bug-risk.callback-orderHigh
Incorrect order of ActiveRecord callbacks

ActiveRecord 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.

Correctness
ruby.bug-risk.incorrect-pluralizationLow
Incorrect pluralization grammar detected

Uses pluralized ActiveSupport duration or byte method names with `1` (e.g. `1.days`) instead of the singular form (`1.day`).

Style
java.correctness.volatile-increment-non-atomicMedium
Increment of volatile field is not atomic

Operations like `counter++` on a volatile field are not atomic.

Correctness
php.correctness.invalid-increment-operandHigh
Increment or decrement only valid lvalues

Increment or decrement only valid lvalues

Correctness
java.correctness.lost-increment-in-assignmentHigh
Increment/decrement lost during assignment to same variable

Assigning a post-incremented variable to itself (e.g., x = x++) discards the increment because the old value is assigned back.

Correctness
ruby.bug-risk.ineffective-access-modifierHigh
Ineffective access modifier detected

A `private`, `protected`, or `public` modifier at top-level scope has no effect. Access modifiers must be inside a class or module definition.

Correctness
ts.performance.inefficient-data-structure-usageMedium
Inefficient data structure usage

Linear membership checks or key projections should be reviewed for more suitable lookup structures.

Performance
java.performance.keyset-instead-of-entrysetHigh
Inefficient Map iteration with keySet() and get()

Iterating over `Map.keySet()` and calling `Map.get(key)` for each key performs redundant hash lookups.

Performance
java.performance.inefficient-string-constructorHigh
Inefficient use of String constructor

`new String(String)` creates an unnecessary copy; use the string literal directly.

Performance
go.correctness.nil-map-assignmentHigh
Initialize maps before assignment

Writing to a nil map panics at runtime.

Correctness
php.correctness.uninitialized-typed-propertyHigh
Initialize typed properties

Typed class properties without a default value should be initialized in the constructor.

Correctness
ts.angularjs.inject-function-assignments-onlyHigh
Inject functions should only contain assignments

AngularJS `inject` callbacks should only contain variable assignments for injected dependencies.

CorrectnessAngular
security.insecure-http-transportHigh
Insecure HTTP transport

Outbound transport should not use plain HTTP for sensitive requests.

Security
rust.quality.non-owned-rc-pointer-into-vecMedium
Insert owned Rc values into vectors instead of pointers to non-owned values

Pushing an `Rc::clone()` from an `Rc` defined outside a vector ties cleanup to the vector lifetime.

Correctness
java.correctness.instant-unsupported-temporal-unitHigh
Instant should not be passed unsupported temporal unit types

`Instant.plus()`, `Instant.minus()`, and `Instant.until()` throw `UnsupportedTemporalTypeException` when called with date-based units such as WEEKS, MONTHS, or YEARS.

Correctness
go.correctness.signedness-castingHigh
Integer signedness lost through narrowing cast

Narrowing 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.

Correctness
java.performance.boxed-integer-constructorHigh
Integer/Long constructor is inefficient

`new Integer(value)` and `new Long(value)` create unnecessary objects; use `valueOf()` instead.

Performance
java.correctness.unimplementable-interfaceHigh
Interface method clashes with Object method

An interface declares a method that clashes with a final or differently-typed method in Object, making the interface impossible to implement correctly.

Correctness
php.correctness.interface-extends-non-interfaceCritical
Interfaces can only extend interfaces

Interfaces can only extend interfaces

Correctness
php.correctness.interface-implements-keywordCritical
Interfaces cannot use implements

Interfaces cannot use implements

Correctness
ruby.bug-risk.interpolation-in-single-quoteHigh
Interpolation in a single-quoted string

Single-quoted strings do not support interpolation. `#{expr}` inside a single-quoted string is treated as a literal, which is likely unintended.

Correctness
php.correctness.invalid-attribute-classCritical
Invalid

The

Correctness
ts.correctness.invalid-await-expressionMedium
Invalid Await Expression

Await only promise-like values

Correctness
ts.react.no-invalid-markup-charactersMedium
Invalid characters in JSX markup

Control characters and zero-width Unicode codepoints in JSX text content can cause rendering anomalies and accessibility issues.

CorrectnessReact
ruby.bug-risk.invalid-percent-string-literalHigh
Invalid construction of percent string literal

`%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.

Correctness
ruby.bug-risk.invalid-percent-symbol-arrayHigh
Invalid construction of percent symbol array

`%i` and `%I` literal arrays (and `%w`/`%W` word arrays) use non-alphanumeric delimiters. An unmatched opening delimiter causes a syntax error.

Correctness
php.correctness.invalid-constructor-promotionCritical
Invalid constructor property promotion

Invalid constructor property promotion

Correctness
php.correctness.invalid-extends-targetCritical
Invalid extends target for declaration

Invalid extends target for declaration

Correctness
ts.correctness.regexp-constructor-invalid-patternMedium
Invalid pattern string in RegExp constructor

A string literal passed to `RegExp` or `new RegExp` is not a valid regular expression.

Correctness
rust.correctness.invalid-regex-literalCritical
Invalid regex pattern in regex constructor

Regex pattern contains invalid syntax such as reversed character ranges.

Correctness
java.correctness.invalid-regex-literalCritical
Invalid regex syntax must not be used

The regex pattern string contains invalid syntax (e.g. unmatched brackets, reversed character range, or invalid escape).

Correctness
ruby.bug-risk.invalid-rescue-typeHigh
Invalid rescue type

`rescue` is followed by a non-class expression such as `nil`, a number, or a string literal. Rescue clauses must reference exception classes.

Correctness
go.bug-risk.etcd-invalid-compare-operatorHigh
Invalid result operator in etcd Compare

`clientv3.Compare()` with a result operator other than `=`, `!=`, `>`, or `<` causes a runtime panic.

Bug-risk
ts.correctness.invalid-shebangMedium
Invalid shebang placement

Shebang `#!` must appear on line 1 at column 0.

Correctness
ts.correctness.invalid-typeof-comparisonMedium
Invalid typeof comparison string

Compare typeof results only to known typeof strings.

Correctness
php.correctness.invalid-use-keywordCritical
Invalid use of `use` keyword

The `use` keyword is used in a context where it does not apply — inside interfaces, anonymous classes, or referencing a non-trait class.

Correctness
ruby.bug-risk.invalid-integer-timesHigh
Invalid value for `Integer#times`

The `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).

Correctness
java.correctness.invalid-time-constantsHigh
Invalid values for java.time constants will always throw a DateTimeException

Calls 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.

Correctness
ts.correctness.invalid-variable-usageHigh
Invalid variable usage

Detects invalid variable usage issues in JavaScript and TypeScript source.

Correctness
ruby.bug-risk.missing-inverse-ofMedium
Inverse relation cannot be determined automatically

Declare `inverse_of:` on associations where Rails cannot automatically determine the inverse.

Correctness
rust.security.invisible-unicodeHigh
Invisible Unicode character detected

Invisible Unicode characters such as zero-width spaces, bidi markers, and BOM characters can be used for Trojan Source attacks.

Security
ruby.bug-risk.io-select-single-argHigh
IO.select with single argument detected

`IO.select` called with only one input/output array. This pattern is hard to make compatible with the Ruby 3 scheduler.

Correctness
php.correctness.invalid-isset-argumentHigh
isset argument must be a variable reference

isset argument must be a variable reference

Correctness
java.correctness.iterable-iterator-returns-thisHigh
Iterable must not return this from iterator()

A class implementing both Iterable and Iterator that returns this from iterator() cannot support multiple concurrent iterations and violates the Iterator contract.

Correctness
java.correctness.iterable-path-typeHigh
Iterable<Path> is errorprone and should be replaced with Collection<Path>

`Path` implements `Iterable<Path>`, so `Iterable<Path>` creates confusing APIs. Use `Collection<Path>` instead for clarity.

Correctness
java.correctness.hasnext-invokes-nextHigh
Iterator hasNext should not invoke next

Calling .next() inside a hasNext() implementation mutates iterator state during a query operation.

Correctness
java.doc.parameter-tag-no-descriptionLow
Javadoc @param tag has no description

@param tags must include a description of the parameter.

Documentation
java.doc.empty-javadoc-tagLow
Javadoc tags must not be empty

Javadoc block tags must have content following the tag name.

Documentation
cfn.correctness.join-validation-of-parametersHigh
Join validation of parameters

Join validation of parameters

Correctness
java.correctness.jump-in-finallyHigh
Jump statements must not be used within finally blocks

Using return, throw, or break in a finally block overrides any exception or return value from the try block.

Correctness
java.testing.disabled-without-ticket-referenceMedium
JUnit @Disabled should cite a ticket

Disabled tests without a reason string or nearby tracker note are hard to triage.

Quality
php.correctness.abstract-method-outside-abstract-classHigh
Keep abstract methods inside abstract classes

Only abstract classes may declare abstract methods.

Correctness
ts.security.apollo-server-csrf-disabledHigh
Keep Apollo Server CSRF protections enabled

Apollo Server should not explicitly disable CSRF prevention for browser-accessible endpoints.

SecurityApollo Server
ts.quality.no-inconsistent-error-shapeMedium
Keep error payload shape consistent

Inconsistent thrown or rejected error shapes make error handling brittle.

Quality
ts.quality.no-mixed-abstraction-levelMedium
Keep function abstraction levels consistent

Functions that mix transport, persistence, validation, and domain logic are hard to change safely.

Quality
ts.security.handlebars-no-escapeHigh
Keep Handlebars escaping enabled at template trust boundaries

Server-side Handlebars compilation should not disable HTML escaping with `noEscape: true`.

SecurityHandlebars
ts.react.no-interactive-role-on-static-semanticsMedium
Keep interactive roles off static semantics

Headings, captions, and phrasing content should not pretend to be buttons or tabs without restructuring the markup.

CorrectnessReact
ts.quality.no-wide-public-surfaceMedium
Keep module public surface narrow

Modules exporting too many symbols become hard to evolve safely.

Quality
ruby.security.rails-detailed-exceptions-enabledMedium
Keep production Rails exception disclosure minimal

Production environments should not enable local-style exception pages or verbose Action Dispatch exception rendering.

SecurityRails
ts.security.nuxt-public-runtime-secretHigh
Keep secrets out of Nuxt public runtime config

Sensitive credentials must not be exposed through runtimeConfig.public, which is visible to client bundles.

SecurityNuxt
php.security.symfony-csrf-disabledHigh
Keep Symfony CSRF enabled on state-changing form flows

Symfony forms and controllers handling state changes should not disable CSRF protection without a clear API token boundary.

SecuritySymfony
ts.testing.no-test-only-code-in-productionHigh
Keep test-only modules and guards out of production paths

Production modules should not import test doubles or gate behavior on test-only environment flags.

Quality
sql.style.keyword-as-identifierHigh
Keyword used as identifier

Avoid using SQL keywords as table aliases

Sql
ts.performance.large-payload-without-streamingMedium
Large payload processing without streaming

Whole-payload reads of likely large content should be reviewed for streaming alternatives.

Performance
cfn.correctness.length-validation-of-parametersHigh
Length validation of parameters

Length validation of parameters

Correctness
ts.quality.logic-change-without-test-updatesMedium
Logic change without corresponding test updates

Diffs that change critical logic should usually update the matching tests in the same change.

Quality
java.correctness.loop-condition-never-trueHigh
Loop condition is never true

A loop condition that evaluates to false at compile time means the loop body will never execute.

Correctness
ts.correctness.infinite-loopMedium
Loop has no exit condition — add a break, return, or exit condition

Detect obvious infinite loops that have no exit path via break, return, throw, or yield.

Correctness
ts.quality.magic-numbers-or-stringsLow
Magic numbers or magic strings

Non-trivial literals in logic should be named to explain their meaning.

Quality
ts.react.no-activedescendant-on-non-focusable-hostHigh
Make aria-activedescendant hosts keyboard focusable

Elements that manage active descendants must participate in the tab order or be native controls that already receive focus.

CorrectnessReact
go.doc.malformed-deprecated-commentHigh
Malformed deprecated doc comment

Go doc comment does not follow the `// Deprecated:` convention. Use `// Deprecated: <explanation>` so tools like `go doc` and `gopls` can mark the symbol as deprecated.

Doc
java.doc.malformed-javadoc-commentLow
Malformed Javadoc comment

Javadoc comments must use valid tag syntax without double @ symbols.

Documentation
cfn.maintainability.mapping-attribute-limitLow
Mapping attribute limit

Mapping attribute limit

Maintainability
cfn.correctness.mapping-attribute-limit-not-exceededHigh
Mapping attribute limit not exceeded

Mapping attribute limit not exceeded

Correctness
cfn.correctness.mapping-keys-are-strings-and-alphanumericHigh
Mapping keys are strings and alphanumeric

Mapping keys are strings and alphanumeric

Correctness
cfn.maintainability.mapping-limitLow
Mapping limit

Mapping limit

Maintainability
cfn.correctness.mapping-limit-not-exceededHigh
Mapping limit not exceeded

Mapping limit not exceeded

Correctness
cfn.maintainability.mapping-name-limitLow
Mapping name limit

Mapping name limit

Maintainability
cfn.correctness.mapping-name-limit-not-exceededHigh
Mapping name limit not exceeded

Mapping name limit not exceeded

Correctness
cfn.correctness.mappings-are-appropriately-configuredHigh
Mappings are appropriately configured

Mappings are appropriately configured

Correctness
cfn.correctness.mappings-have-appropriate-namesHigh
Mappings have appropriate names

Mappings have appropriate names

Correctness
java.performance.url-in-collectionCritical
Maps and Sets of URLs can be performance hogs

`java.net.URL` performs DNS resolution on `equals()` and `hashCode()`, making Map and Set operations unexpectedly expensive.

Performance
php.testing.mark-test-skipped-without-ticket-referenceMedium
markTestSkipped should cite a ticket

Empty markTestSkipped() calls without a tracker note are hard to triage.

Quality
php.correctness.void-match-armHigh
Match arms must return a value

Match arms must return a value

Correctness
cfn.correctness.metadata-interface-have-appropriate-propertiesHigh
Metadata interface have appropriate properties

Metadata interface have appropriate properties

Correctness
cfn.maintainability.metadata-interface-parameters-existMedium
Metadata interface parameters exist

Metadata interface parameters exist

Maintainability
java.correctness.non-null-method-returns-nullCritical
Methods annotated as non-nullable should not return null values

Methods annotated @Nonnull, @NotNull, or @NonNull that contain explicit return null statements are buggy.

Correctness
ts.react.no-deprecated-react-dom-root-apiMedium
Migrate off legacy ReactDOM render entrypoints

`render`, `hydrate`, and `unmountComponentAtNode` from `react-dom` are legacy APIs replaced by the `createRoot` and `hydrateRoot` clients.

CorrectnessReact
ts.correctness.missing-async-on-promise-methodHigh
Missing Async On Promise Method

Mark promise callbacks async when using await

Correctness
ts.security.missing-authorization-before-sensitive-actionHigh
Missing authorization before sensitive action

Sensitive backend actions should be guarded by an authorization or permission check.

Security
ts.correctness.missing-await-on-async-callHigh
Missing await on async call

Async functions should not drop direct async calls without awaiting them.

Correctness
ts.performance.missing-batch-operationsMedium
Missing batching of operations

Repeated one-by-one operations inside loops should prefer available batch-style helpers.

Performance
ts.correctness.missing-default-dispatchMedium
Missing default case in switch or conditional dispatch

Dispatch constructs should include an explicit default or final else path.

Correctness
java.correctness.missing-enum-switch-elementsHigh
Missing enum elements in switch cases

Switch statements on enum types without a default label must cover all enum members.

Correctness
ts.quality.missing-error-contextLow
Missing error context or logging

Catch blocks should include the caught error when they log or rethrow.

Quality
ts.security.missing-ownership-validationHigh
Missing ownership validation

Resource identifiers from request input should be checked against the caller before sensitive actions run.

Security
ts.correctness.missing-super-callHigh
Missing super() in subclass constructor

Subclass constructors must call super() before using this.

Correctness
ts.quality.missing-tests-for-critical-logicMedium
Missing tests for critical logic

Critical auth, payment, or similar business logic should have a matching test file.

Quality
ts.correctness.missing-timeout-on-external-callHigh
Missing timeout or retry on external call

External calls should declare timeout, cancellation, or retry behavior.

Correctness
ts.correctness.missing-type-annotationMedium
Missing type annotation

Add explicit type annotations where TypeScript cannot infer the type.

Correctness
java.correctness.wait-on-conditionMedium
Monitor wait must not be used on a Condition

Calling `.wait()` on a `java.util.concurrent.locks.Condition` object is incorrect. Use `condition.await()` instead.

Correctness
ts.correctness.regexp-multicodepoint-character-classMedium
Multi-code-point character in regex class

Detects multi-code-point character in regex class issues in JavaScript and TypeScript source.

Correctness
java.quality.multiple-variables-same-lineLow
Multiple variables must not be declared on the same line

Declaring multiple variables on one line reduces readability and can hide initialization bugs.

Quality
java.correctness.servlet-mutable-fieldsHigh
Mutable fields in HttpServlet subclasses

Mutable fields in an HttpServlet subclass can cause thread-safety issues because servlets are typically shared across requests.

Correctness
ts.correctness.unsafe-negation-in-relationalMedium
Negated left operand in relational expression

A relational or membership test applies unary `!` to the left operand instead of negating the whole comparison.

Correctness
ts.performance.nested-loops-hot-pathMedium
Nested loops in hot path (O(n²) risk)

Nested loops in the same function should be reviewed for quadratic work on larger inputs.

Performance
ts.correctness.nested-property-access-without-checkMedium
Nested property access without existence check

Deep property chains derived from external input should verify intermediate values before access.

Correctness
ts.correctness.new-symbol-instanceHigh
new Symbol() instantiation

Found new operator used with the `Symbol` object.

Correctness
ts.quality.no-empty-functionLow
No Empty Function

Avoid empty function bodies

Quality
ts.correctness.no-floating-promise-in-functionHigh
No Floating Promise In Function

Handle promise-returning calls explicitly

Correctness
ts.correctness.no-misused-promisesMedium
No Misused Promises

Do not pass async callbacks where sync is expected

Correctness
rust.correctness.non-binding-let-on-lockCritical
Non-binding `let` on a synchronization lock

`let _ = lock.lock()` immediately drops the lock guard instead of holding the lock.

Correctness
ts.correctness.callback-not-error-firstMedium
Non-error-first callback pattern

Ensure Node.js-style error-first callback pattern is followed.

Correctness
ruby.bug-risk.non-local-exit-from-iteratorHigh
Non-local exit from iterator without return value

`return` inside an iterator block exits the enclosing method, not just the block. `break` and `next` without a value return `nil` to the iterator.

Correctness
ruby.bug-risk.non-null-column-without-defaultHigh
Non-null column should specify a default

Column definitions with `null: false` should also specify a `default` value to avoid constraint failures when inserting records without the column.

Correctness
rust.correctness.non-octal-permissionsCritical
Non-octal Unix permission value

Unix file permissions should be specified as octal literals (e.g., `0o755`) to avoid misconfiguration.

Security
java.correctness.non-terminating-loopCritical
Non-terminating loop

A loop with an unconditionally true condition has no break or return statement, causing it to run indefinitely.

Correctness
php.correctness.nullable-mixed-typeCritical
Nullable mixed type is not allowed

Nullable mixed type is not allowed

Correctness
ts.correctness.no-href-with-nuxt-linkHigh
NuxtLink should use `to` instead of `href`

The `href` attribute on NuxtLink should be replaced with `to` for internal navigation.

Correctness
ts.correctness.prototype-builtin-called-directlyMedium
Object.prototype builtin called directly

A method from `Object.prototype` is invoked directly on a receiver object.

Correctness
java.correctness.assert-self-comparisonHigh
Objects should not be compared to themselves within assertions

Assertions comparing a value to itself always pass and indicate a testing bug where a different expected value should be used.

Correctness
java.correctness.oddness-check-fails-negativeHigh
Oddness check using x % 2 == 1 will not work for negative numbers

Using `x % 2 == 1` to check parity fails for negative values because Java's modulo preserves sign.

Correctness
ts.correctness.off-by-one-loop-boundaryMedium
Off-by-one error in loop boundaries

Index-based loops should not skip the first element or iterate one step past the collection boundary.

Correctness
go.correctness.off-by-one-indexHigh
Off-by-one index access

Indexing an array or slice at len(arr) reads one past the last valid element.

Correctness
ruby.bug-risk.old-style-validation-macroHigh
Old-style attribute validation macro detected

Uses the deprecated `validates_*_of` macro. Prefer the modern `validates` method with options.

Correctness
php.correctness.throw-non-exceptionCritical
Only throw Exception and Error instances

Throw statements should only raise objects that extend Exception or Error.

Correctness
rust.security.open-redirectHigh
Open redirect from possibly tainted source

URLs returned from redirect helpers that include user-controlled input may enable open redirect attacks, bypassing domain validation.

Security
ts.security.open-redirectHigh
Open redirect via request-controlled target

Redirect and navigation sinks should not use request-controlled destinations without validation.

Security
rust.correctness.erasing-operationCritical
Operation trivially evaluates to zero

An arithmetic or bitwise operation that always evaluates to zero.

Correctness
ts.correctness.optional-value-without-fallbackMedium
Optional value used without fallback

Optional values should be normalized before arithmetic, concatenation, or other direct use.

Correctness
java.correctness.optional-get-without-present-checkHigh
Optional values must be checked before being accessed

Calling Optional.get() without a preceding isPresent() check will throw NoSuchElementException when the Optional is empty.

Correctness
java.correctness.optional-nullCritical
Optional variable or return value set to null

An Optional-typed variable is assigned null or a method returns null for an Optional return type.

Correctness
ruby.bug-risk.outer-variable-shadowedMedium
Outer local variable is shadowed

A block parameter has the same name as a variable in the outer scope. Inside the block, the outer variable is inaccessible.

Correctness
cfn.maintainability.output-description-limitLow
Output description limit

Output description limit

Maintainability
cfn.correctness.output-description-limit-not-exceededHigh
Output description limit not exceeded

Output description limit not exceeded

Correctness
cfn.maintainability.output-limitLow
Output limit

Output limit

Maintainability
cfn.correctness.output-limit-not-exceededHigh
Output limit not exceeded

Output limit not exceeded

Correctness
cfn.maintainability.output-name-limitLow
Output name limit

Output name limit

Maintainability
cfn.correctness.output-name-limit-not-exceededHigh
Output name limit not exceeded

Output name limit not exceeded

Correctness
cfn.correctness.outputs-descriptions-can-only-be-stringsHigh
Outputs descriptions can only be strings

Outputs descriptions can only be strings

Correctness
cfn.correctness.outputs-have-appropriate-namesHigh
Outputs have appropriate names

Outputs have appropriate names

Correctness
cfn.correctness.outputs-have-appropriate-propertiesHigh
Outputs have appropriate properties

Outputs have appropriate properties

Correctness
cfn.correctness.outputs-have-required-propertiesHigh
Outputs have required properties

Outputs have required properties

Correctness
cfn.correctness.outputs-have-values-of-stringsHigh
Outputs have values of strings

Outputs have values of strings

Correctness
ts.security.express-default-cookie-configMedium
Override Express cookie defaults

Express session cookie settings should not omit explicit lifetime, scope, and transport attributes.

SecurityExpress
ts.security.express-default-session-configMedium
Override Express session defaults

Express session middleware should not rely on default session naming and configuration.

SecurityExpress
ruby.bug-risk.active-record-method-overrideMedium
Override of built-in ActiveRecord methods

An 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.

Correctness
ts.security.graphql-upload-without-csrf-guardHigh
Pair GraphQL multipart uploads with CSRF-safe server posture

Legacy GraphQL multipart upload helpers should not run alongside Apollo Server configurations that disable CSRF protections.

SecurityGraphQL
ts.react.no-widget-role-without-tabindexHigh
Pair interactive roles with focus behavior

Custom elements that declare widget roles need to enter the tab order unless they wrap a native focusable control.

CorrectnessReact
ts.performance.sequential-async-callsLow
Parallelize independent async calls with Promise.all

Independent awaited calls in the same block should run concurrently. Skips test files, build scripts, and data-dependent chains.

Performance
cfn.maintainability.parameter-limitLow
Parameter limit

Parameter limit

Maintainability
cfn.correctness.parameter-limit-not-exceededHigh
Parameter limit not exceeded

Parameter limit not exceeded

Correctness
cfn.maintainability.parameter-memory-size-attributes-should-have-max-and-minMedium
Parameter memory size attributes should have max and min

Parameter memory size attributes should have max and min

Maintainability
cfn.maintainability.parameter-name-limitLow
Parameter name limit

Parameter name limit

Maintainability
cfn.correctness.parameter-name-limit-not-exceededHigh
Parameter name limit not exceeded

Parameter name limit not exceeded

Correctness
java.correctness.parameter-reassignmentLow
Parameter reassignment

Reassigning a method parameter is confusing and can mask bugs; prefer a local variable.

Correctness
cfn.maintainability.parameter-value-limitLow
Parameter value limit

Parameter value limit

Maintainability
cfn.correctness.parameter-value-limit-not-exceededHigh
Parameter value limit not exceeded

Parameter value limit not exceeded

Correctness
cfn.correctness.parameters-have-appropriate-namesHigh
Parameters have appropriate names

Parameters have appropriate names

Correctness
cfn.correctness.parameters-have-appropriate-propertiesHigh
Parameters have appropriate properties

Parameters have appropriate properties

Correctness
cfn.correctness.parameters-have-appropriate-typeHigh
Parameters have appropriate type

Parameters have appropriate type

Correctness
ts.correctness.parse-int-on-number-literalMedium
parseInt on a number literal

Found `parseInt()` or `Number.parseInt()` called on a number literal.

Correctness
go.correctness.nil-context-passedMedium
Pass a real context.Context

Context-accepting calls should not receive a literal `nil` as their first argument.

Correctness
security.no-request-path-file-readHigh
Path traversal via user input

File access calls must not use request-controlled paths directly.

Security
java.performance.pattern-compile-in-loopCritical
Pattern.compile() inside a loop

Calling `Pattern.compile()` inside a loop causes repeated regex compilation, leading to performance degradation.

Performance
ruby.testing.pending-without-ticket-referenceLow
pending examples should cite a ticket

pending without a tracker reference is easy to forget.

Quality
php.correctness.default-parameter-not-lastHigh
Place default parameters last

Parameters with default values must appear after required parameters.

Correctness
go.bug-risk.poorly-formed-nilness-guardsCritical
Poorly formed nilness guards may cause nil pointer dereference

The 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.

Bug-risk
php.correctness.named-arg-before-positionalCritical
Positional arguments cannot follow named arguments

Positional arguments cannot follow named arguments

Correctness
ts.correctness.possible-null-dereferenceHigh
Possible null or undefined dereference

Nullable values should be guarded before property access or invocation.

Correctness
ruby.bug-risk.unintended-string-concatenationHigh
Possible unintended string concatenation

Adjacent string literals without a comma or operator between them are concatenated, which is likely a missing comma in an array or method argument.

Correctness
rust.correctness.mistyped-suffixHigh
Possibly mistyped integer suffix

Integer literal suffix like `_32` or `_64` may be a typo for `_u32` or `_i64`.

Correctness
java.correctness.sync-on-nullable-fieldCritical
Possibly null fields synchronized on

Synchronizing on a field that may be null will throw NullPointerException at runtime.

Correctness
ts.performance.unbounded-growth-memory-leakHigh
Potential memory leak from unbounded growth

Shared collections that only grow should be reviewed for eviction or lifecycle boundaries.

Performance
rust.security.actix-namedfile-path-traversalHigh
Potential path traversal via actix::NamedFile::open

Using `actix_web::files::NamedFile::open` or `actix_files::NamedFile::open` with an unsanitized user-controlled path can lead to directory traversal.

SecurityActix Web
rust.correctness.unit-argumentHigh
Potential unit value passed as function argument

A value from a method that returns `()` may be unintentionally passed as a function argument.

Correctness
go.correctness.integer-truncationHigh
Potentially lossy integer truncation in comparison

Narrowing an integer type before comparison may lose precision.

Correctness
rust.security.potentially-vulnerable-regexHigh
Potentially vulnerable regex crate version usage

Usage of `regex::Regex::new` with patterns containing nested quantifiers may be susceptible to ReDoS attacks when using a vulnerable crate version.

Security
ruby.bug-risk.predicate-method-without-parenthesesHigh
Predicate method called without parentheses

A predicate method ending in `?` is called with an argument but without parentheses. Ruby may parse this differently than intended in compound expressions.

Correctness
ruby.performance.range-cover-over-includeMedium
Prefer `cover?` over `include?` for range membership

`Range#include?` iterates the range to check membership, while `Range#cover?` uses a simple comparison. For numeric ranges, `cover?` is significantly faster.

Performance
ruby.performance.prefer-flat-mapMedium
Prefer `flat_map` over `map { ... }.flatten`

`.map { ... }.flatten` iterates the collection and then flattens the result in a second pass. `flat_map` combines both operations in a single pass.

Performance
ruby.performance.efficient-hash-searchMedium
Prefer `key?` and `value?` over `.keys.include?` and `.values.include?`

`.keys.include?(...)` and `.values.include?(...)` allocate a new array of all keys or values before searching. Use `key?` or `has_value?` instead.

Performance
ruby.performance.regex-match-over-matchMedium
Prefer `match?` over `match` for boolean checks

`.match(...)` used as a boolean condition allocates a MatchData object. Use `.match?(...)` or `===` instead when the match result is not needed.

Performance
ruby.performance.prefer-struct-over-openstructMedium
Prefer `Struct` over `OpenStruct`

`OpenStruct.new` is significantly slower and more memory-intensive than `Struct.new` for fixed-schema data objects.

Performance
ruby.performance.yield-over-block-callMedium
Prefer `yield` over explicit `block.call`

Methods that accept a block with `&block` and call it via `block.call` should use implicit `yield` instead for better performance.

Performance
ts.vue.no-deprecated-listenersMedium
Prefer $attrs over $listeners

$listeners was deprecated in Vue 3. Use $attrs instead, which now includes both attributes and listeners.

Correctness
ts.vue.no-deprecated-scoped-slotsHigh
Prefer $slots over $scopedSlots

$scopedSlots was deprecated in Vue 2.6 and merged into $slots in Vue 3. Use $slots instead.

Correctness
ts.angularjs.prefer-angular-for-eachHigh
Prefer angular.forEach over native Array.forEach

Use `angular.forEach` instead of native `Array.prototype.forEach` in AngularJS contexts.

MaintainabilityAngular
ts.angularjs.prefer-angular-is-stringHigh
Prefer angular.isString over typeof comparisons

Use `angular.isString(value)` instead of `typeof value === 'string'` in AngularJS code.

MaintainabilityAngular
ts.correctness.prefer-as-const-over-literal-typeMedium
Prefer as const over literal type annotation

Use `as const` assertion instead of an explicit literal type annotation.

Correctness
rust.correctness.std-mutex-in-async-fnMedium
Prefer async mutex primitives in async functions

std::sync::Mutex in async code encourages blocking and await deadlocks.

Correctness
ruby.performance.merge-single-keyMedium
Prefer direct assignment over `merge!` with a single key

`.merge!({key: value})` for a single key creates an intermediate hash. Use direct assignment `self[:key] = value` instead.

Performance
rust.correctness.unchecked-indexMedium
Prefer fallible slice access for variable indices

Direct indexing with a variable can panic when the index is out of bounds.

Correctness
ts.correctness.prefer-includes-over-indexofLow
Prefer includes over indexOf comparison

Use `.includes()` instead of `.indexOf()` comparison for readability.

Correctness
ts.vue.no-keycode-modifiersHigh
Prefer key aliases over numeric keycodes

Numeric keycode modifiers (e.g., @keyup.13) were deprecated in Vue 3. Use key alias modifiers instead.

Correctness
ts.react.no-children-propLow
Prefer nested JSX children over the children prop

Passing `children` as a named prop is harder to read than composing elements between opening and closing tags.

MaintainabilityReact
ts.correctness.prefer-nullish-coalescingMedium
Prefer nullish coalescing operator

Use the nullish coalescing operator `??` instead of `||` for null/undefined defaults.

Correctness
ts.vue.prefer-prop-type-constructorMedium
Prefer prop type to be a constructor

Vue prop types should reference constructor functions (e.g. String, Number) instead of string literals (e.g. "string").

Correctness
java.security.shell-runtime-execHigh
Prefer Runtime.exec with an argument array

`Runtime.getRuntime().exec(...)` should not be invoked with a single `String` command argument; the array form (`exec(String[])`) avoids shell-style tokenization.

Security
ts.vue.no-deprecated-model-optionMedium
Prefer v-model arguments over model option

The `model` option was deprecated in Vue 3. Use `v-model` arguments and `emits` instead.

Correctness
java.correctness.prepared-statement-in-loopMedium
PreparedStatement creation inside a loop

Creating PreparedStatement or CallableStatement inside a loop causes repeated database parsing and compilation, leading to performance degradation and potential resource exhaustion.

Correctness
java.correctness.prepared-statement-index-zeroCritical
PreparedStatement parameter set with index 0

JDBC PreparedStatement parameters use 1-based indexing; index 0 is invalid.

Correctness
ruby.bug-risk.use-present-to-simplify-conditionalMedium
present? can be used to simplify conditionals

Detects patterns like `x != nil && !x.empty?` that can be simplified to `x.present?`.

Maintainability
py.security.sensitive-loggingMedium
Prevent sensitive data in Python log statements

Python log statements should not include tokens, secrets, or personal data that could leak in log output.

Security
rust.correctness.print-in-display-implCritical
print! in Display implementation

`print!` or `println!` used inside a `Display` implementation.

Correctness
ts.correctness.private-member-should-be-readonlyMedium
Private members should be readonly

Class members declared `private` that are never reassigned should be marked `readonly`.

Correctness
ts.runtime.process-exit-control-flowHigh
process.exit() in control flow

Avoid `process.exit()` in finally blocks or followed by reachable code.

Security
cfn.correctness.property-is-required-based-on-another-properties-valueHigh
Property is required based on another properties value

Property is required based on another properties value

Correctness
cfn.correctness.property-is-unwanted-based-on-another-properties-valueHigh
Property is unwanted based on another properties value

Property is unwanted based on another properties value

Correctness
security.unsafe-deserializationHigh
Protect deserialization trust boundaries

Deserializers should not consume untrusted payloads directly across a trust boundary.

Security
java.security.android-screenshot-exposureHigh
Protect sensitive Android screens from screenshots and recents

Sensitive activities should enable FLAG_SECURE or avoid clearing it so screen content is harder to capture.

SecurityAndroid
ruby.security.sidekiq-web-unauthenticated-mountHigh
Protect Sidekiq::Web mounts with authentication

Sidekiq Web must not be exposed on public routes without an authentication or network guard.

SecuritySidekiq
java.correctness.sync-on-public-fieldHigh
Public fields synchronized on

Synchronizing on a public field allows external code to interfere with synchronization.

Correctness
java.correctness.static-date-fieldHigh
Public or protected static date/time formatter field

A non-thread-safe date/time formatter or calendar is declared as a public/protected static field.

Correctness
py.testing.pytest-skip-without-ticket-referenceMedium
pytest.mark.skip should include a reason or ticket

Skips without `reason=` or a nearby tracker reference are hard to triage.

Quality
ts.correctness.shared-state-raceHigh
Race condition on shared state

Async functions that mutate shared state after an await boundary should be reviewed for races.

Correctness
ruby.bug-risk.active-job-base-subclassMedium
Rails 5+ jobs should subclass ApplicationJob

Job class directly subclasses `ActiveJob::Base` instead of `ApplicationJob`.

Correctness
ruby.bug-risk.action-mailer-base-subclassMedium
Rails 5+ mailers should subclass ApplicationMailer

Mailer class directly subclasses `ActionMailer::Base` instead of `ApplicationMailer`.

Correctness
ruby.bug-risk.active-record-base-subclassMedium
Rails 5+ models should subclass ApplicationRecord

Model class directly subclasses `ActiveRecord::Base` instead of `ApplicationRecord`.

Correctness
ruby.bug-risk.irreversible-migrationHigh
Rails migration is not reversible

Migration uses irreversible operations in `change`, or defines one direction method (`up` or `down`) without the other.

Correctness
ruby.bug-risk.invalid-rails-env-predicateHigh
Rails.env predicate does not match any known environment

`Rails.env.<unknown>?` is called where `<unknown>` is not a known Rails environment name. This likely indicates a typo or non-standard environment.

Correctness
ruby.bug-risk.rake-task-missing-environmentHigh
Rake task found without `:environment` task dependency

Rake tasks that load application code should declare `:environment` as a dependency to ensure Rails is loaded before execution.

Correctness
rust.security.raw-slice-to-ptrHigh
Raw pointer obtained from slice reference

Creating 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.

Security
cfn.correctness.rds-instance-type-is-compatible-with-the-rds-typeHigh
Rds instance type is compatible with the rds type

Rds instance type is compatible with the rds type

Correctness
java.correctness.readline-without-null-checkHigh
readLine() result used without null check

The result of `readLine()` is dereferenced without a null check.

Correctness
java.correctness.read-resolve-return-typeHigh
readResolve must return Object

The 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.

Correctness
ts.correctness.reassign-class-memberHigh
Reassigning class member

Detects reassigning class member issues in JavaScript and TypeScript source.

Correctness
ts.correctness.reassign-const-bindingMedium
Reassigning const binding

Detects reassigning const binding issues in JavaScript and TypeScript source.

Correctness
ts.correctness.reassign-catch-bindingMedium
Reassignment of catch binding

The catch clause parameter is assigned or updated after it is bound.

Correctness
ts.correctness.reassign-function-declarationLow
Reassignment of function declaration

A declared function name is later reassigned, which breaks hoisting expectations.

Correctness
cfn.correctness.recordset-hostedzonename-is-a-superdomain-of-nameHigh
Recordset hostedzonename is a superdomain of name

Recordset hostedzonename is a superdomain of name

Correctness
go.bug-risk.redis-incorrect-arg-countHigh
Redis variadic function called with wrong argument count

Redis variadic methods such as `MemoryUsage`, `ZPopMax`, `ZPopMin`, and `BitPos` accept a specific number of arguments. Passing too many will cause a runtime panic.

Bug-risk
ts.security.express-reduce-fingerprintMedium
Reduce Express fingerprinting

Express apps should disable `x-powered-by` or equivalent fingerprinting headers.

SecurityExpress
ruby.bug-risk.redundant-allow-nilMedium
Redundant `allow_nil` detected

A `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.

Maintainability
ruby.bug-risk.redundant-foreign-keyHigh
Redundant `foreign_key` in ActiveRecord association

Explicit `foreign_key` matches the Rails default convention (`<association_name>_id`). The explicit declaration is redundant.

Correctness
go.correctness.redundant-type-declarationHigh
Redundant type in variable declaration

The explicit type in `var count int = 10` is unnecessary — Go can infer it from the RHS literal.

Correctness
ruby.bug-risk.redundant-with-options-receiverMedium
Redundant with_options receiver references

Inside a `with_options` block, use implicit method calls instead of explicitly calling methods on the block variable.

Correctness
cfn.correctness.ref-validation-of-valueHigh
Ref validation of value

Ref validation of value

Correctness
cfn.maintainability.ref-getatt-to-resource-that-is-available-when-conditions-are-appliedMedium
Ref/getatt to resource that is available when conditions are applied

Ref/getatt to resource that is available when conditions are applied

Maintainability
php.correctness.undefined-constant-referenceCritical
Reference only defined constants

Reference only defined constants

Correctness
ruby.bug-risk.regex-literal-in-conditionHigh
Regex literal used as condition

A regex literal is used directly as a condition expression. Without `=~` or `.match?` the regex is always truthy, making the condition behave unexpectedly.

Correctness
ts.security.nestjs-helmet-after-route-mountMedium
Register Helmet before Nest route mounts

Nest bootstrap files should apply Helmet before mounting path-bound routers.

SecurityNestJS
rust.security.insecure-ssl-protocolHigh
Reject deprecated SSL/TLS protocol versions

Rust code must not enable SSLv3, TLS 1.0, or TLS 1.1 in TLS configuration.

Security
ts.correctness.promise-reject-non-errorMedium
Reject or throw non-Error values

Promise rejections and async throws should use Error objects.

Correctness
go.security.insecure-ssl-protocolHigh
Reject SSLv2 and SSLv3 protocols

`tls.VersionSSL30`, SSLv2, or SSLv3 string literals indicate use of broken legacy protocols.

Security
ruby.bug-risk.relative-date-as-constantHigh
Relative date/time assigned to a constant

Constants should not be assigned relative date/time expressions because they are evaluated at load time, not at runtime.

Correctness
ts.runtime.no-debugger-statementMedium
Remove `debugger;`

Remove debugger statements before committing source files.

Maintainability
ts.quality.no-dead-exportLow
Remove dead exports

Exported symbols with no known consumers increase maintenance overhead.

Quality
php.security.debug-function-exposureMedium
Remove debug dump helpers from production PHP

var_dump, print_r, debug_zval_dump, and xdebug helpers should not ship in application code paths.

Security
ruby.security.debugger-callMedium
Remove debugger calls from application code

Debugger breakpoints must not ship in non-test Ruby sources.

Security
py.security.debugger-importMedium
Remove debugger imports from production code

Production Python modules should not ship with interactive debugger imports.

Security
php.correctness.deprecated-unset-castMedium
Remove deprecated (unset) casts

The `(unset)` cast is deprecated and should not be used in modern PHP code.

Correctness
php.correctness.deprecated-libxml-entity-loaderMedium
Remove deprecated libxml_disable_entity_loader calls

libxml_disable_entity_loader() is deprecated and no longer needed on supported PHP versions.

Correctness
php.correctness.duplicate-declarationHigh
Remove duplicate declarations

Functions, classes, traits, and interfaces must be declared only once per file.

Correctness
ts.react.no-duplicate-jsx-attributesMedium
Remove duplicate JSX attributes

Repeating the same prop on a JSX element makes the last value win silently and hides author intent.

CorrectnessReact
php.correctness.empty-code-blockLow
Remove empty code blocks

Empty control-flow blocks hide missing logic or unfinished branches.

Correctness
php.correctness.empty-array-literal-slotMedium
Remove empty slots from array literals

Array literals with consecutive commas define empty slots that are easy to miss during review.

Correctness
ts.testing.no-focused-testMedium
Remove focused or exclusive tests before merge

Focused tests such as it.only or describe.only should not ship because they silence the rest of the suite in CI.

Quality
ruby.testing.focused-exampleMedium
Remove focused RSpec examples before merge

fit and fdescribe skip the rest of the suite and should not ship.

Quality
ts.security.debug-statement-in-sourceLow
Remove leftover `console.trace` calls from production paths

`console.trace()` calls should not ship in production code outside an explicit dev-only branch.

Security
php.correctness.redundant-string-cast-concatLow
Remove redundant string casts before concatenation

Casting to string immediately before concatenation is usually redundant in PHP.

Correctness
php.correctness.self-assignmentLow
Remove self assignments

Assigning a variable to itself has no effect.

Correctness
ts.security.jwt-sensitive-claimsHigh
Remove sensitive claims from JWT payloads

JWT payloads should avoid embedding PII or secrets unless absolutely required.

Security
ts.react.no-unnecessary-fragmentLow
Remove unnecessary React fragments

Fragments wrapping a single child add runtime overhead without structural benefit.

CorrectnessReact
php.correctness.unreachable-after-returnLow
Remove unreachable statements after return or throw

Code after `return` or `throw` in the same block never runs.

Correctness
php.correctness.unused-constructor-parameterHigh
Remove unused constructor parameters

Constructor parameters that are not referenced in the constructor body should be removed.

Correctness
php.correctness.unused-importHigh
Remove unused import statements

Remove unused import statements

Correctness
php.correctness.useless-post-incrementLow
Remove useless post-increment statements

Standalone post-increment statements with discarded results are usually mistakes.

Correctness
php.correctness.useless-unsetLow
Remove useless unset calls

Calling unset on literals or non-variables has no effect.

Correctness
go.security.weak-tls-cipherHigh
Remove weak TLS cipher suites

`tls.Config.CipherSuites` should not include RC4, DES, 3DES, NULL, or export-grade cipher constants.

Security
java.performance.removeall-to-clearCritical
removeAll should not be used to clear a collection

Calling `collection.removeAll(collection)` is equivalent to `collection.clear()` but performs unnecessary iteration and element comparisons.

Performance
ruby.bug-risk.renamed-column-accessedHigh
Renamed column accessed from ActiveRecord model

A migration renames a database column. Model files may still reference the old column name.

Correctness
ts.react.no-render-invalid-return-typeHigh
Render must return valid React element

A render method that returns a number, boolean, or plain object will produce an empty or broken UI.

CorrectnessReact
go.performance.reorder-operandsHigh
Reorder boolean expression operands for short-circuit optimization

Boolean `&&`/`||` expressions should place cheap operands on the left so expensive calls are skipped when possible.

Performance
ts.performance.repeated-expensive-computationMedium
Repeated expensive computation

Repeating the same expensive computation in one block should usually be cached.

Performance
ts.performance.repeated-io-in-loopHigh
Repeated IO call inside loop

Database or network calls inside loops can multiply latency and load.

Performance
php.correctness.deprecated-filter-constantMedium
Replace deprecated filter constants

Several FILTER_* constants are deprecated and should not be used in new code.

Correctness
ts.security.legacy-buffer-constructorMedium
Replace legacy Buffer constructors

Use Buffer.from, Buffer.alloc, or Buffer.allocUnsafe instead of the deprecated Buffer constructor.

Security
rust.correctness.self-not-self-typeCritical
Replace lowercase `self` with `Self` in type position

`self` used in return type or type position where uppercase `Self` is expected.

Correctness
ruby.bug-risk.all-each-to-find-eachMedium
Replace Model.all.each with find_each

`Model.all.each` loads all records into memory. Use `find_each` for batch processing.

Correctness
ruby.bug-risk.console-output-instead-of-loggerMedium
Replace output statements with logger

Uses `puts`, `print`, `p`, or `pp` instead of a structured logger for diagnostic output.

Maintainability
ts.security.express-nosql-injectionHigh
Request-driven NoSQL query or aggregation pipeline

Express handlers should not pass raw request objects into NoSQL filters, query helpers, or aggregation pipelines to prevent injection attacks.

SecurityExpress
ts.security.weak-tls-versionHigh
Require modern TLS minimum versions

Transport clients should not explicitly allow SSLv3, TLS 1.0, or TLS 1.1.

Security
php.security.wordpress-missing-nonce-or-capabilityHigh
Require nonce and capability checks in sensitive WordPress mutation callbacks

WordPress admin/AJAX mutation callbacks should verify nonce tokens and enforce capability checks.

SecurityWordPress
ts.correctness.require-outside-importHigh
Require outside import statement

Use ES module `import` syntax instead of `require()` calls.

Correctness
cfn.correctness.required-resource-properties-are-missingHigh
Required resource properties are missing

Required resource properties are missing

Correctness
php.correctness.todo-fixme-markerLow
Resolve TODO or FIXME markers

TODO, FIXME, XXX, and HACK comments mark unfinished or risky work.

Correctness
cfn.correctness.resource-dependencies-are-not-circularHigh
Resource dependencies are not circular

Resource dependencies are not circular

Correctness
cfn.correctness.resource-ec2-security-group-ingress-propertiesHigh
Resource ec2 security group ingress properties

Resource ec2 security group ingress properties

Correctness
cfn.correctness.resource-elb-propertiesHigh
Resource elb properties

Resource elb properties

Correctness
cfn.maintainability.resource-limitLow
Resource limit

Resource limit

Maintainability
cfn.correctness.resource-limit-not-exceededHigh
Resource limit not exceeded

Resource limit not exceeded

Correctness
cfn.maintainability.resource-name-limitLow
Resource name limit

Resource name limit

Maintainability
cfn.correctness.resource-name-limit-not-exceededHigh
Resource name limit not exceeded

Resource name limit not exceeded

Correctness
cfn.correctness.resource-properties-are-invalidHigh
Resource properties are invalid

Resource properties are invalid

Correctness
cfn.correctness.resource-schemaHigh
Resource schema

Resource schema

Correctness
cfn.correctness.resource-subnetroutetableassociation-propertiesHigh
Resource subnetroutetableassociation properties

Resource subnetroutetableassociation properties

Correctness
cfn.correctness.resources-have-appropriate-namesHigh
Resources have appropriate names

Resources have appropriate names

Correctness
java.security.spring-actuator-sensitive-exposureHigh
Restrict Spring Boot actuator web exposure to non-sensitive endpoints

Actuator `management.endpoints.web.exposure.include` should not expose wildcards or high-risk endpoints (such as `env`, `beans`, or `heapdump`) without deliberate access control.

SecuritySpring
ts.correctness.restricted-global-variableMedium
Restricted global variable

Detects restricted global variable issues in JavaScript and TypeScript source.

Correctness
ts.correctness.restricted-object-propertyLow
Restricted object property access

Detects restricted object property access issues in JavaScript and TypeScript source.

Correctness
java.correctness.result-set-index-zeroCritical
ResultSet accessed with index 0

JDBC ResultSet methods use 1-based indexing; index 0 is invalid.

Correctness
ts.correctness.setter-return-valueMedium
Return value from setter

Detects return value from setter issues in JavaScript and TypeScript source.

Correctness
ts.correctness.constructor-return-valueMedium
Return value in constructor

Detects return value in constructor issues in JavaScript and TypeScript source.

Correctness
java.correctness.ignored-inputstream-readMedium
Return value of InputStream.read() ignored

Calling `read()` on an InputStream without using the return value discards data.

Correctness
java.correctness.ignored-inputstream-skipMedium
Return value of InputStream.skip ignored

Calling `skip()` on an InputStream without using the return value discards data.

Correctness
go.correctness.nil-error-returnedHigh
Returning nil value with nil error

Returning nil, nil may indicate a missing result or an error that should be returned instead.

Correctness
ts.security.datadog-browser-track-user-interactionsMedium
Review Datadog RUM user interaction capture

Datadog Browser RUM should not enable broad user interaction capture without a privacy review.

Security
py.security.django-format-html-unsafeHigh
Review dynamic interpolation in Django format_html

Django `format_html` calls with placeholder templates and dynamic arguments should be reviewed for unsafe output composition.

SecurityDjango
ruby.testing.skip-without-ticket-referenceMedium
RSpec skip should cite a ticket

skip(...) without a nearby tracker reference is hard to triage.

Quality
java.correctness.runnable-run-directMedium
Runnable's run() method called directly instead of using Thread.start()

Calling `run()` on a Thread or Runnable directly bypasses the new thread and executes in the caller's thread.

Correctness
ruby.bug-risk.safe-navigation-with-blankHigh
Safe navigation `&.` combined with `blank?` is redundant

The safe navigation operator `&.` already handles nil, making `blank?` redundant when used with it.

Correctness
ruby.bug-risk.safe-navigation-with-emptyHigh
Safe navigation with empty? in conditional

`&.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.

Correctness
security.archive-path-traversalHigh
Sanitize archive entry paths before writing

Archive extraction should not write entry names directly to the filesystem.

Security
go.security.tar-path-traversalHigh
Sanitize archive entry paths before writing to disk

Tar extraction must normalize `header.Name` with `filepath.Base` or `filepath.Clean` before opening destination files.

Security
py.security.flask-unsafe-upload-filenameHigh
Sanitize Flask upload filenames before saving

Flask upload handlers should pass filenames through `secure_filename` (or equivalent) before persisting to disk.

SecurityFlask
rust.security.template-unescaped-request-valueHigh
Sanitize request data before unescaped template output in Rust

Tera, Maud, and similar engines should not insert request-sourced strings into contexts or `PreEscaped`/`raw` sinks without sanitization.

Security
ts.security.log-injectionMedium
Sanitize user-controlled values before they reach log messages

Logger calls in pino, winston, bunyan, and consola should not interpolate or concatenate request input directly into the message text.

Security
cfn.correctness.select-validation-of-parametersHigh
Select validation of parameters

Select validation of parameters

Correctness
ts.correctness.self-assignmentLow
Self assignment

An assignment uses the same expression on the left and right side.

Correctness
ruby.bug-risk.self-assignmentHigh
Self assignment detected

A variable, constant, or multi-assignment is assigned to itself. This is likely a copy-paste error that makes the assignment a no-op.

Correctness
java.correctness.self-assignmentHigh
Self assignment of local variable

A local variable is assigned to itself, which has no effect.

Correctness
ts.security.sensitive-data-egressHigh
Sensitive data egress to third-party processors

Sensitive values should not be sent to external processors or outbound SDKs without minimization or redaction.

Security
security.sensitive-data-egressHigh
Sensitive data egress to third-party processors

Sensitive values should not be sent to external processors or outbound SDKs without minimization or redaction.

Security
ts.security.sensitive-data-written-to-fileMedium
Sensitive data written to file

File writes that persist fields like passwords, tokens, secrets, credentials, or PII (email, SSN, phone) risk data exposure.

Security
ts.performance.no-await-in-loopMedium
Sequential await in loop -- consider Promise.all() to parallelize

Using await inside a loop serializes async operations, multiplying total latency.

Performance
java.correctness.serializable-superclassHigh
Serializable class with non-serializable superclass and no default constructor

A Serializable class has a non-serializable superclass that may lack a no-arg constructor, which will cause deserialization to fail with InvalidClassException.

Correctness
java.correctness.invalid-serial-version-uidHigh
serialVersionUID must be static final long

The serialVersionUID field must be declared as static final long to serve as a valid serialization identifier.

Correctness
ts.security.express-static-assets-after-sessionMedium
Serve static assets before session middleware

Static assets should be mounted before session middleware when they do not need session state.

SecurityExpress
ts.security.ssrfHigh
Server-side request forgery

Outbound requests should not use attacker-controlled targets or private hosts.

Security
ts.security.express-cookie-missing-http-onlyMedium
Set `HttpOnly` on Express session cookies

Express session and cookie-session configs should not disable the `HttpOnly` flag.

SecurityExpress
ts.security.express-insecure-cookieMedium
Set `Secure` on Express session cookies

Express session and cookie-session configs should not disable the `Secure` flag.

SecurityExpress
rust.security.tls-missing-min-versionHigh
Set a minimum TLS protocol version in Rust TLS configs

Rust TLS client and server configuration should set an explicit minimum protocol version (TLS 1.2 or newer).

Security
go.security.tls-missing-min-versionMedium
Set a TLS minimum version on `tls.Config`

`tls.Config` literals should set `MinVersion` to a modern protocol (`tls.VersionTLS12` or newer) to avoid downgrade attacks.

Security
ts.security.express-unbounded-body-parserMedium
Set explicit Express body parser and multer size limits

Express and Body Parser middleware plus Multer should declare explicit payload limits.

SecurityExpress
py.security.flask-missing-upload-body-limitMedium
Set Flask MAX_CONTENT_LENGTH for uploads

Flask apps handling uploads should configure `MAX_CONTENT_LENGTH` to bound request bodies.

SecurityFlask
rust.security.global-write-permissionCritical
Setting global write permission on file

Using world-writable permissions (0o777, 0o666) on files or directories allows any user to modify them, creating a security risk.

Security
java.testing.setup-without-superHigh
setUp method does not call super.setUp

JUnit 3 `setUp()` methods in test classes that extend `TestCase` must call `super.setUp()` for base class initialization.

Correctness
java.testing.setup-teardown-annotationHigh
setUp/tearDown methods must be properly annotated

JUnit 3-style setUp/tearDown methods are silently ignored in JUnit 4/5 without @Before/@After or @BeforeEach/@AfterEach annotations.

Correctness
java.correctness.shift-out-of-rangeHigh
Shift amounts outside the valid range may produce unexpected results

Bit-shift operations with out-of-range amounts produce undefined or unexpected behavior for int and long operands.

Correctness
ruby.bug-risk.use-blank-simplifyLow
Simplify conditional using Object#blank?

Replace `obj.nil? || obj.empty?` with `obj.blank?` for simpler code.

Correctness
java.performance.single-char-string-indexofHigh
Single-character string literal in indexOf/lastIndexOf/contains

Using a single-character `String` literal in `indexOf()`, `lastIndexOf()`, or `contains()` is less efficient than using a `char` literal.

Performance
ts.testing.no-skipped-test-without-ticketMedium
Skipped tests should cite a ticket or timed suppression

Skipped or disabled tests should reference a tracked issue, expiry, or accepted suppression comment.

Quality
ts.testing.no-snapshot-without-intentLow
Snapshot assertions should name intent

Snapshot matchers without a snapshot name or preceding intent comment are hard to review in diffs.

Quality
cfn.correctness.snapstart-supports-the-configured-runtimeHigh
Snapstart supports the configured runtime

Snapstart supports the configured runtime

Correctness
ts.correctness.sparse-array-literalLow
Sparse array literal

An array literal contains empty slots that create a sparse array.

Correctness
cfn.correctness.split-validation-of-parametersHigh
Split validation of parameters

Split validation of parameters

Correctness
ruby.bug-risk.use-square-brackets-for-attributesMedium
Square brackets are preferred for accessing/writing attributes

Uses `read_attribute` or `write_attribute` instead of the shorter `self[:attr]` / `self[:attr] = val` syntax.

Maintainability
ruby.bug-risk.raw-sql-without-squishLow
Squish heredoc SQL passed to where

Normalize heredoc SQL with squish before passing to where or find_by_sql.

Correctness
php.correctness.invalid-static-methodCritical
Static call to instance method

Calling 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.

Correctness
java.correctness.stream-reuseHigh
Stream consumed more than once

A Stream variable has multiple terminal operations invoked on it.

Correctness
go.correctness.string-concat-simplifyMedium
String concatenation can be simplified

String concatenation patterns like `strings.Join(parts, "")` or `fmt.Sprintf("%s%s", a, b)` can be simplified.

Correctness
java.performance.string-concat-in-loopHigh
String concatenation using `+` inside a loop

String concatenation using `+=` or `= ... + ...` inside a loop creates many intermediate String objects, degrading performance.

Performance
java.performance.replaceall-instead-of-replaceHigh
String.replaceAll() with literal string argument

Using `String.replaceAll()` with a literal (non-regex) string argument is less efficient than `String.replace()`.

Performance
java.correctness.stringbuilder-char-ctorCritical
StringBuilder or StringBuffer constructed with a char literal

StringBuilder/StringBuffer constructed with a single char argument behaves as a capacity argument, not a string value.

Correctness
cfn.correctness.sub-is-required-if-a-variable-is-used-in-a-stringHigh
Sub is required if a variable is used in a string

Sub is required if a variable is used in a string

Correctness
cfn.maintainability.sub-isn-t-needed-if-it-doesn-t-have-a-variable-definedMedium
Sub isn't needed if it doesn't have a variable defined

Sub isn't needed if it doesn't have a variable defined

Maintainability
cfn.correctness.sub-validation-of-parametersHigh
Sub validation of parameters

Sub validation of parameters

Correctness
cfn.maintainability.sub-validation-of-parameters-w1019Medium
Sub validation of parameters

Sub validation of parameters

Maintainability
ts.react.no-click-without-keyboard-handlerHigh
Support keyboard interaction for click handlers

Non-interactive JSX elements that respond to clicks also need an equivalent keyboard path.

CorrectnessReact
ruby.bug-risk.suppressed-exceptionsHigh
Suppressed exceptions detected

A rescue block has no body, silently swallowing all exceptions. Every rescue should at minimum log the error or re-raise.

Correctness
rust.quality.env-string-literalMedium
Suspicious string literal in `env!()` or `option_env!()`

The argument to `env!` does not resemble an environment variable name.

Correctness
go.correctness.suspicious-regex-patternHigh
Suspicious unescaped dot in regex pattern

An unescaped dot (`.`) in a regex pattern matches any character, not a literal dot.

Correctness
java.correctness.switch-statement-labelsCritical
Switch blocks must not contain statement labels

Statement labels inside switch blocks are confusing and likely unintended.

Correctness
ts.correctness.switch-case-fallthroughMedium
Switch case fallthrough

Detects switch case fallthrough issues in JavaScript and TypeScript source.

Correctness
java.correctness.sync-on-lock-primitiveMedium
Synchronization on a Lock/concurrency primitive

Synchronizing on a ReentrantLock or other lock primitive defeats the lock's purpose.

Correctness
java.correctness.sync-on-mutable-refHigh
Synchronizing on a mutable reference

Synchronizing on a non-final field means the lock object can be reassigned, breaking synchronization guarantees.

Correctness
java.correctness.sync-on-get-classHigh
Synchronizing on the result of getClass()

Synchronizing on `getClass()` locks on the runtime Class object, which can vary for subclasses.

Correctness
rust.correctness.syntax-errorCritical
Syntax error in Rust source

Source contains invalid syntax such as multi-character char literals or unclosed strings.

Correctness
java.correctness.system-exitHigh
System.exit() should only be invoked within application entry points

Calling `System.exit()` outside of `main()` or framework entry points makes code hard to test and may terminate the JVM unexpectedly.

Correctness
java.correctness.runfinalizers-on-exitCritical
System.runFinalizersOnExit/Runtime.runFinalizersOnExit is unsafe

Calling `System.runFinalizersOnExit()` or `Runtime.runFinalizersOnExit()` is inherently unsafe.

Correctness
go.testing.t-skip-without-ticket-referenceMedium
t.Skip should cite a ticket or suppression

Go tests that call t.Skip without a nearby tracker reference are easy to forget.

Quality
ruby.bug-risk.table-without-timestampsMedium
Tables should be created with timestamps

Add `t.timestamps` to `create_table` blocks to include `created_at` and `updated_at` columns.

Correctness
java.testing.teardown-without-superHigh
tearDown method does not call super.tearDown

JUnit 3 `tearDown()` methods in test classes extending `TestCase` should call `super.tearDown()` for base class cleanup.

Correctness
cfn.correctness.template-description-can-only-be-a-stringHigh
Template description can only be a string

Template description can only be a string

Correctness
cfn.correctness.template-description-limitHigh
Template description limit

Template description limit

Correctness
cfn.maintainability.template-description-limit-i1003Low
Template description limit

Template description limit

Maintainability
ts.correctness.template-placeholder-in-stringMedium
Template placeholder in regular string

Detects template placeholder in regular string issues in JavaScript and TypeScript source.

Correctness
cfn.correctness.template-size-limitHigh
Template size limit

Template size limit

Correctness
cfn.maintainability.template-size-limit-i1002Low
Template size limit

Template size limit

Maintainability
go.correctness.terminal-call-with-deferHigh
Terminal call in function with deferred cleanup

os.Exit/log.Fatal skips deferred calls, leaving resources in an inconsistent state.

Correctness
java.correctness.modulus-multiplication-precedenceHigh
The `%` operator has higher precedence than `*` — ambiguous expression

Mixing `%` and `*` without parentheses creates ambiguous precedence that may not match developer intent.

Correctness
ts.correctness.this-before-superHigh
this used before super()

Do not use this or super members before calling super() in a subclass constructor.

Correctness
java.correctness.thread-static-misuseCritical
Thread instance calling static Thread methods

Calling static Thread methods like sleep(), yield(), or interrupted() on a Thread instance is misleading because they operate on the current thread, not the instance.

Correctness
java.performance.thread-as-runnableHigh
Thread passed where Runnable expected

Passing `new Thread(runnable)` to an executor or scheduler creates unnecessary Thread objects.

Performance
java.correctness.thread-sleep-with-lockCritical
Thread.sleep() should not be called while a lock is held

Calling Thread.sleep() inside a synchronized block keeps the lock held, causing contention or deadlocks.

Correctness
ts.security.no-throw-literalMedium
Throw `Error` objects instead of literals

Only throw `Error` instances (or subclasses), not strings, numbers, or plain objects.

Security
php.correctness.throw-as-expressionCritical
Throw expressions require PHP 8.0+

Throw expressions require PHP 8.0+

Correctness
ts.quality.tight-module-couplingMedium
Tight coupling between modules

Direct import cycles between modules increase coupling and make change boundaries harder to maintain.

Quality
ruby.bug-risk.time-without-zoneHigh
Time should be used with zone in Rails apps

`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.

Correctness
java.correctness.timezone-invalid-idHigh
TimeZone.getTimeZone() should be passed correct timezone IDs

`TimeZone.getTimeZone()` silently returns GMT for unrecognized IDs instead of throwing. Hardcoded strings should be valid timezone IDs.

Correctness
security.tls-verification-disabledHigh
TLS verification disabled

Transport clients should not disable certificate verification.

Security
cfn.correctness.tojsonstring-validation-of-parametersHigh
Tojsonstring validation of parameters

Tojsonstring validation of parameters

Correctness
ts.security.token-or-session-not-validatedHigh
Token or session not validated

Session and token values from external input should be verified before authentication or identity use.

Security
java.performance.string-to-stringHigh
toString invoked on a string value is useless

Calling `toString()` on a string literal or string variable creates an unnecessary identity copy.

Performance
ruby.bug-risk.trailing-comma-attributeHigh
Trailing comma in attribute declaration detected

An `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.

Correctness
sql.style.trailing-select-commaHigh
Trailing comma in SELECT clause

Remove trailing commas before FROM in SELECT statements

Sql
php.correctness.trait-as-attributeCritical
Traits cannot be used as attributes

Traits cannot be used as attributes

Correctness
rust.correctness.transmute-integer-to-nonzeroCritical
Transmute between integer and NonZero type

`transmute` used to convert between an integer type and a `NonZero` type.

Correctness
rust.correctness.transmute-int-to-fn-ptrCritical
Transmute between integer literal and fn ptr

`transmute` used to convert an integer to a function pointer.

Correctness
rust.correctness.transmute-int-lit-to-raw-ptrCritical
Transmute between literal and raw pointer

`transmute` used to convert an integer literal to a raw pointer.

Correctness
rust.correctness.transmute-number-to-slice-or-arrayCritical
Transmute between numeric type and array or slice

`transmute` used to reinterpret a numeric value as an array or slice.

Correctness
rust.correctness.transmute-tuple-to-slice-or-arrayCritical
Transmute between tuple and array or slice

`transmute` used to reinterpret a tuple as an array or slice.

Correctness
rust.correctness.transmute-float-char-to-ref-or-ptrCritical
Transmute from float or char to reference or pointer

`transmute` used to reinterpret a float or char value as a reference or pointer.

Correctness
rust.correctness.transmute-integer-to-charCritical
Transmute from integer type to char

`transmute` used to convert an integer to a `char`.

Correctness
java.quality.type-name-uppercaseLow
Type names must begin with an uppercase letter

Class, interface, and enum names should start with an uppercase letter per Java naming conventions.

Quality
ts.correctness.no-ts-suppress-directiveHigh
TypeScript suppress directive

Avoid `@ts-ignore`, `@ts-nocheck`, and `@ts-expect-error` directives.

Correctness
ruby.bug-risk.inconsistent-request-referrerLow
Typo — `referrer` should be `referer`

`request.referrer` is a common misspelling of `request.referer`.

Correctness
ts.react.no-lifecycle-method-typoHigh
Typo in lifecycle method name

A misspelled lifecycle method name will never be called by React, leading to silent runtime bugs.

CorrectnessReact
go.correctness.unexported-capital-nameMedium
Un-exportable symbol starts with capital

Unexported types with exported fields may indicate a design inconsistency.

Correctness
ts.correctness.unchecked-map-key-accessMedium
Unchecked map or dictionary key access

Lookups should verify key presence before reading from maps or keyed objects.

Correctness
java.correctness.unconditional-recursionCritical
Unconditional recursive call in method body

A method calls itself without a conditional guard, causing infinite recursion.

Correctness
ts.correctness.undeclared-variableLow
Undeclared variable reference

Detects undeclared variable reference issues in JavaScript and TypeScript source.

Correctness
php.correctness.undefined-functionCritical
Undefined function call detected

Calling 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.

Correctness
php.correctness.undefined-methodCritical
Undefined method call detected

Calling a method on $this, self::, or static:: that is not declared in the enclosing class will cause a runtime error.

Correctness
php.correctness.undefined-propertyHigh
Undefined property access via $this->

Accessing a property via $this-> that is not declared on the class will cause a runtime notice.

Correctness
sql.correctness.undefined-referenceHigh
Undefined table or alias reference

Qualify column references with known tables or aliases only

Sql
ts.correctness.unhandled-async-errorMedium
Unhandled promise rejection or async error

Promise chains started in a function should terminate with explicit rejection handling.

Correctness
go.bug-risk.redis-unimplemented-methodHigh
Unimplemented Redis method call would panic

`Sync(ctx)` and `Quit(ctx)` are listed in the go-redis interface but are not implemented — calling them panics at runtime.

Bug-risk
cfn.correctness.unique-resource-and-parameter-namesHigh
Unique resource and parameter names

Unique resource and parameter names

Correctness
java.doc.unmatched-parameter-tagLow
Unmatched @param tag in Javadoc

@param tags must reference declared method parameters.

Documentation
ts.performance.retained-large-objectMedium
Unnecessarily retained large object

Large payloads assigned into shared state should be reviewed for shorter lifetimes.

Performance
go.correctness.unnecessary-dereferenceHigh
Unnecessary dereference expressions

Unnecessary pointer dereference when accessing struct fields or indexing — Go auto-dereferences pointers in these contexts.

Correctness
ts.performance.unnecessary-rerenders-from-state-misuseMedium
Unnecessary re-renders from state misuse

React state setters invoked directly during render should be reviewed for rerender loops.

Performance
ruby.bug-risk.unnecessary-requireHigh
Unnecessary require statement

A `require` or `require_relative` statement that duplicates an earlier one is unnecessary. Requiring `rubygems` is also unnecessary in modern Ruby.

Correctness
ts.correctness.unnecessary-return-awaitLow
Unnecessary Return Await

Remove redundant return await

Correctness
ruby.bug-risk.unnecessary-splatHigh
Unnecessary splat expression

Using the splat operator `*` on an array inside `[...]` or in a method argument is redundant when the array could be used directly.

Correctness
sql.style.unqualified-referencesHigh
Unqualified column references in multi-table query

Qualify column references with table name or alias when querying multiple tables

Sql
go.correctness.unreachable-switch-caseHigh
Unreachable case in switch statement

Case after return/break/panic without fallthrough is unreachable.

Correctness
ts.correctness.unreachable-statementLow
Unreachable code after return or throw

Statements after terminal exits should be removed or moved before the exit.

Correctness
ruby.bug-risk.unreachable-codeHigh
Unreachable code detected

Code following `return`, `raise`, `exit`, `abort`, `throw`, or `fail` at the same indentation level will never execute.

Correctness
java.correctness.unsafe-collection-downcastHigh
Unsafe collection downcast to concrete type

Casting a collection interface reference to a concrete implementation type without an instanceof check may cause ClassCastException at runtime.

Correctness
ruby.bug-risk.unsafe-number-conversionHigh
Unsafe number conversion

`Integer()`, `Float()`, `Rational()`, and `Complex()` can raise `ArgumentError` on invalid input. Prefer safe alternatives or wrap in a rescue block.

Correctness
ruby.bug-risk.unsafe-safe-navigation-chainHigh
Unsafe safe-navigation chain

A `&.` (safe navigation) call is followed by a non-safe method chain. The chained call may receive `nil` and raise `NoMethodError`.

Correctness
java.correctness.unsafe-getresourceMedium
Unsafe usage of getResource with relative path

Using `getClass().getResource()` with a relative path may fail in subclasses.

Correctness
java.correctness.unsupported-jdk-apiHigh
Unsupported JDK-internal APIs should not be used

Importing or using sun.* or com.sun.* internal APIs introduces portability issues and risks breakage across JDK versions.

Correctness
java.correctness.unsync-static-lazy-initCritical
Unsynchronized lazy initialization of static value

Static field lazy initialization without synchronization can expose partially constructed objects to other threads.

Correctness
ts.correctness.unused-expressionMedium
Unused expressions found

Expression statement has no side effects and its result is discarded.

Correctness
ruby.bug-risk.unused-method-argumentsLow
Unused method arguments detected

A method argument prefixed with underscore is used in the method body, contradicting the convention that underscore-prefixed names indicate intentionally unused parameters.

Correctness
sql.style.unused-table-aliasHigh
Unused table alias

Each table alias should be referenced in the query

Sql
ts.correctness.unused-variableLow
Unused variable

Detects unused variable issues in JavaScript and TypeScript source.

Correctness
ts.correctness.regexp-pattern-unusual-control-characterLow
Unusual ASCII control characters in regexp pattern

The regular expression pattern embeds low ASCII control characters outside common whitespace.

Correctness
ts.testing.no-missing-edge-case-testsMedium
Update tests when branch-heavy service logic changes

Diffs that touch many branches in critical service paths should update paired tests in the same change.

Quality
ts.security.unsafe-dompurify-versionHigh
Upgrade DOM sanitization dependency

DOM sanitization libraries should stay on patched versions before they are trusted for untrusted HTML.

Security
ts.security.unsafe-marked-versionHigh
Upgrade Markdown rendering dependency

Markdown renderers should stay on patched versions before rendering untrusted content.

Security
java.performance.empty-string-constructorHigh
Use "" instead of new String() to create empty strings

`new String()` creates an unnecessary object; use the empty string literal `""` instead.

Performance
rust.quality.iter-nth-instead-of-getMedium
Use `.get()` instead of `.iter().nth()`

`.iter().nth(idx)` on collections supporting indexing is less performant than `.get(idx)`.

Performance
rust.quality.iter-count-instead-of-lenMedium
Use `.len()` instead of `.iter().count()`

`.iter().count()` is unnecessarily expensive compared to `.len()`.

Performance
go.performance.iowriter-write-stringHigh
Use `(io.StringWriter).WriteString` for writing strings

Prefer `w.WriteString(s)` over `w.Write([]byte(s))` to avoid `[]byte` allocation, or over `io.WriteString(w, s)` which incurs dynamic dispatch.

Performance
rust.quality.crate-in-macro-definitionHigh
Use `$crate` instead of `crate` in macro definitions

Inside `macro_rules!`, use `$crate::` to refer to the defining crate, not `crate::`.

Correctness
php.security.wordpress-unprepared-sqlHigh
Use `$wpdb->prepare` for dynamic WordPress SQL

WordPress SQL calls should not interpolate request values directly into query strings.

SecurityWordPress
go.correctness.interface-any-preferredHigh
Use `any` instead of `interface{}`

Go 1.18 introduced `any` as an alias for `interface{}`. Prefer `any` for brevity.

Correctness
ruby.bug-risk.non-preferred-assert-falsenessMedium
Use `assert_not` over `refute`

Prefer `assert_not` over `refute` for negative assertions.

Correctness
java.correctness.duration-with-nanos-misuseHigh
Use `Duration.withNanos()` with caution

Calling `Duration.withNanos()` may produce unexpected results because it only sets the nanos-of-second component, not the total duration.

Correctness
go.performance.fmt-fprintHigh
Use `fmt.Fprint` instead of `Write` + `fmt.Sprint`

Prefer `fmt.Fprint(w, ...)` over `w.Write([]byte(fmt.Sprintf(...)))` for writing formatted output.

Performance
go.performance.non-idiomatic-slice-zeroingHigh
Use `for i := range` for slice zeroing instead of three-clause for loop

A 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> }`.

Performance
java.correctness.class-isinstance-on-classHigh
Use `instanceof` instead of `Class.isInstance()`

Calling `.class.isInstance(obj)` should be replaced with `obj instanceof Type` for clarity and type safety.

Correctness
rust.quality.redundant-mem-replace-with-defaultMedium
Use `mem::take()` instead of `mem::replace` with `Default::default()`

`mem::replace(&mut val, Default::default())` can be replaced with `mem::take(&mut val)`.

Correctness
rust.quality.redundant-mem-replace-with-zeroMedium
Use `mem::take()` instead of `mem::replace` with zero value

`mem::replace(&mut val, 0/false/"")` can be replaced with `mem::take(&mut val)`.

Correctness
rust.quality.redundant-mem-replace-with-noneMedium
Use `Option::take()` instead of `mem::replace` with `None`

`mem::replace(&mut opt, None)` can be replaced with `opt.take()` which is simpler and more idiomatic.

Correctness
rust.security.misused-bitwise-xorMedium
Use `pow()` instead of bitwise XOR for exponentiation

Bitwise XOR (`^`) should not be used for exponentiation. `X ^ Y` performs bitwise XOR, not `X` to the power of `Y`.

Bug-risk
go.performance.utf8-decode-runeHigh
Use `utf8.DecodeRuneInString` instead of `[]rune(string)[0]`

The `[]rune(str)[0]` pattern allocates a rune slice. Use `utf8.DecodeRuneInString(str)` for single-rune access.

Performance
go.security.incomplete-hostname-regexMedium
Use a complete and anchored regular expression for hostname validation

Regex 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.

Security
go.security.weak-bcrypt-costHigh
Use a strong bcrypt cost factor

`bcrypt.GenerateFromPassword` (and similar helpers) must use a cost factor of at least `bcrypt.DefaultCost` (10).

Security
ruby.bug-risk.assert-not-usageLow
Use assert_not instead of assert with negation

Replace `assert !` with `assert_not` for clearer test assertions.

Correctness
java.security.weak-rsa-key-sizeHigh
Use at least 2048-bit RSA keys

RSA key generation should request a key size of 2048 bits or higher.

Security
go.security.weak-rsa-key-sizeHigh
Use at least 2048-bit RSA keys

`rsa.GenerateKey` and `rsa.GenerateMultiPrimeKey` should request a key size of 2048 bits or higher.

Security
ts.security.missing-integrity-checkHigh
Use authenticated encryption for secrets and tokens

Session, cookie, and token encryption should provide integrity protection in the same helper.

Security
php.correctness.break-continue-outside-loopHigh
Use break and continue only inside loops or switch

break and continue outside a loop or switch block are invalid control flow.

Correctness
php.correctness.psr-method-camel-caseHigh
Use camelCase for class method names

Use camelCase for class method names

Correctness
ts.vue.require-transition-conditionalMedium
Use conditional rendering with Transition

The `<Transition>` component should be used with conditional rendering to control enter/leave animations.

Correctness
ts.security.observable-timing-discrepancyMedium
Use constant-time secret comparison

Secrets and tokens should not be compared with ordinary equality operators.

Security
ruby.bug-risk.use-delegateLow
Use delegate for simple delegation methods

Replace simple delegation methods with the `delegate` macro.

Correctness
ruby.performance.prefer-delete-prefixMedium
Use delete_prefix instead of gsub with \A-anchored regex

Calling `gsub(/\Aprefix/, '')` compiles and runs a regex to strip a literal prefix. `String#delete_prefix` is faster and clearer.

Performance
ruby.performance.prefer-delete-suffixMedium
Use delete_suffix instead of gsub with \z-anchored regex

Calling `gsub(/suffix\z/, '')` compiles and runs a regex to strip a literal suffix. `String#delete_suffix` is faster and clearer.

Performance
rust.quality.inaccurate-duration-calculationMedium
Use Duration subsec methods instead of manual division

Manual division of `subsec_micros()` or `subsec_nanos()` can be inaccurate.

Correctness
ts.security.insufficiently-random-valuesHigh
Use enough entropy for secrets and tokens

Secret-bearing tokens and secrets should use at least 16 bytes of cryptographic entropy.

Security
ruby.performance.enumerable-index-byMedium
Use index_by instead of map+to_h to create a hash from an enumerable

Uses `.map { |e| [e.key, e] }.to_h` which can be replaced with `.index_by(&:key)` for clearer intent and better performance.

Performance
ruby.performance.enumerable-index-withMedium
Use index_with instead of map+to_h to create a hash from an enumerable

Uses `.map { |e| [e, e.value] }.to_h` which can be replaced with `.index_with(&:value)` for clearer intent and better performance.

Performance
ruby.bug-risk.plain-method-instead-of-procHigh
Use lambda/proc instead of a plain method call

A `method(:name)` call is passed directly to a block-accepting method. Use `&method(:name)` or an explicit block/lambda instead.

Correctness
ts.correctness.use-number-is-nanMedium
Use Number.isNaN for NaN checks

Do not compare values to NaN with `===` or `==`.

Correctness
ruby.bug-risk.routes-match-single-verbHigh
Use of `match` in routes with single request type

`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.

Correctness
ruby.bug-risk.use-presence-over-explicit-checkMedium
Use of `present?` or `blank?` can be replaced with `presence`

Detects ternary expressions like `a.present? ? a : nil` or `a.blank? ? nil : a` that can be simplified to `a.presence`.

Maintainability
ruby.bug-risk.active-support-aliasMedium
Use of ActiveSupport alias instead of core Ruby method

An ActiveSupport alias method (`starts_with?`, `ends_with?`, `append`, `prepend`) is used instead of the core Ruby equivalent.

Correctness
go.correctness.bare-returnMedium
Use of bare return statements

Bare returns in named-return functions return the current values of return parameters, which can be surprising.

Correctness
ruby.bug-risk.dependent-option-cascadeMedium
Use of dependent option detected

Association `dependent:` option can lead to unexpected cascade deletes or orphaned records.

Correctness
ruby.bug-risk.deprecated-filter-methodsMedium
Use of deprecated *_filter methods

Rails controller uses `before_filter`, `after_filter`, `around_filter`, or similar legacy filter methods instead of the modern `*_action` equivalents.

Correctness
ruby.bug-risk.active-record-aliasMedium
Use of deprecated ActiveRecord method aliases

ActiveRecord method `update_attributes` or `update_attributes!` is called. These are deprecated aliases for `update` and `update!`.

Correctness
ruby.bug-risk.deprecated-find-by-dynamicMedium
Use of deprecated dynamic finder methods

`find_by_*` dynamic finder methods (e.g. `find_by_email`) are deprecated in Rails and will raise a deprecation warning.

Correctness
go.bug-risk.deprecated-redis-methodsHigh
Use of deprecated Redis methods

Call 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.

Bug-risk
ruby.bug-risk.has-and-belongs-to-manyMedium
Use of has_and_belongs_to_many detected

Use `has_many :through` instead of `has_and_belongs_to_many` for more flexibility.

Correctness
ruby.bug-risk.helper-instance-variablesLow
Use of helper instance variables detected

Avoid instance variables in view helpers. Pass data explicitly as local variables.

Correctness
ruby.bug-risk.http-methods-without-paramsMedium
Use of http methods without params detected

Test HTTP helper methods like `get`, `post` should explicitly pass a params argument for clarity.

Correctness
go.bug-risk.reflect-makefunc-usageHigh
Use of reflect.MakeFunc — audit required

`reflect.MakeFunc` dynamically constructs a function at runtime. This is a powerful but dangerous operation — audit that type safety is preserved.

Bug-risk
php.correctness.switch-multiple-defaultHigh
Use only one default case per switch

A switch statement must not declare more than one default branch.

Correctness
php.correctness.unknown-magic-methodMedium
Use only supported magic methods

PHP recognizes a fixed set of double-underscore magic methods.

Correctness
ruby.bug-risk.deprecated-belongs-to-requiredMedium
Use optional instead of required in belongs_to

Replace `required: true` with `optional: false` in `belongs_to` declarations for Rails 5+.

Correctness
py.correctness.super-with-argumentsLow
Use parameterless super() in Python 3

Python 3 supports super() without arguments in class methods

Correctness
php.correctness.psr-class-constant-namingHigh
Use PSR-12 uppercase snake case for class constants

Use PSR-12 uppercase snake case for class constants

Correctness
ruby.bug-risk.unqualified-constantHigh
Use qualified constant reference in module context

A bare constant reference is used where a qualified constant (prefixed with the module namespace) may be expected. This may reference an unexpected constant.

Correctness
ruby.bug-risk.rails-root-joinLow
Use Rails.root.join instead of path concatenation

Path concatenation with `Rails.root` using `+` or `File.join` is less idiomatic than using `Rails.root.join`.

Correctness
ts.react.no-invalid-anchor-hrefMedium
Use real destinations for anchor elements

Links need a concrete `href` so navigation, keyboard activation, and assistive technologies behave predictably.

CorrectnessReact
rust.security.weak-rsa-key-sizeHigh
Use RSA keys of at least 2048 bits

RSA key generation must use at least 2048 bits.

Security
ruby.bug-risk.inconsistent-safe-navigation-tryMedium
Use safe navigation `&.` instead of `.try!`

Use the safe navigation operator (`&.`) instead of `.try!()`.

Correctness
go.security.squirrel-unsafe-quotingHigh
Use safe parameterized queries with squirrel query builder

`squirrel.Expr` (or `sq.Expr`) with `fmt.Sprintf` interpolation constructs SQL queries via string formatting, enabling SQL injection when arguments contain untrusted data.

Security
py.security.insecure-yaml-loadMedium
Use SafeLoader with yaml.load

Python YAML parsing should use `SafeLoader` when calling `yaml.load`.

Security
ts.security.insecure-websocket-transportHigh
Use secure WebSocket transport

WebSocket clients should not connect over cleartext `ws://` when sensitive application data is involved.

Security
cfn.maintainability.use-sub-instead-of-joinLow
Use sub instead of join

Use sub instead of join

Maintainability
ruby.bug-risk.deprecated-http-status-symbolsMedium
Use symbolic value of HTTP status codes

Prefer numeric HTTP status codes over symbolic references for clarity.

Correctness
php.correctness.invalid-arrow-function-typehintCritical
Use valid arrow function typehints

Use valid arrow function typehints

Correctness
php.correctness.invalid-closure-return-typehintCritical
Use valid closure return typehints

Use valid closure return typehints

Correctness
php.correctness.invalid-cookie-optionsMedium
Use valid cookie option keys

setcookie and setrawcookie option arrays only accept documented keys.

Correctness
php.correctness.invalid-return-typehintCritical
Use valid function return typehints

Use valid function return typehints

Correctness
php.correctness.invalid-type-castCritical
Use valid PHP cast types

Use valid PHP cast types

Correctness
ruby.bug-risk.bad-date-usageMedium
Use zone-aware date methods instead of Date/DateTime

Prefer `Time.zone` or `Date.current` over `Date.today`, `Date.parse`, `DateTime.now`, or `DateTime.current`.

Correctness
ruby.bug-risk.useless-access-modifierLow
Useless access modifier detected

A `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).

Correctness
ts.testing.useless-assertionMedium
Useless assertion testing a constant value

Assertions that compare a static primitive literal against itself will never fail.

Quality
ts.correctness.regexp-useless-backreferenceMedium
Useless regex backreference

Detects useless regex backreference issues in JavaScript and TypeScript source.

Correctness
java.correctness.week-year-in-date-patternHigh
Using week year (YYYY) in place of year (yyyy)

YYYY represents the ISO week year, not the calendar year, which can cause dates around year boundaries to be off by one year.

Correctness
cfn.correctness.validate-accesscontrol-are-set-with-ownershipcontrolsHigh
Validate accesscontrol are set with ownershipcontrols

Validate accesscontrol are set with ownershipcontrols

Correctness
cfn.correctness.validate-aws-event-scheduleexpression-formatHigh
Validate aws event scheduleexpression format

Validate aws event scheduleexpression format

Correctness
ts.security.electron-missing-ipc-origin-checkHigh
Validate IPC sender origins in Electron

Privileged ipcMain handlers should validate event.sender origins before acting.

Security
cfn.correctness.validate-parameters-for-in-a-nested-stackHigh
Validate parameters for in a nested stack

Validate parameters for in a nested stack

Correctness
cfn.correctness.validate-route53-recordsetsHigh
Validate route53 recordsets

Validate route53 recordsets

Correctness
cfn.maintainability.validate-that-snapstart-is-configured-for-java11-runtimesLow
Validate that snapstart is configured for >= java11 runtimes

Validate that snapstart is configured for >= java11 runtimes

Maintainability
cfn.maintainability.validate-that-snapstart-is-properly-configuredMedium
Validate that snapstart is properly configured

Validate that snapstart is properly configured

Maintainability
cfn.correctness.validate-the-configuration-of-the-metadata-sectionHigh
Validate the configuration of the metadata section

Validate the configuration of the metadata section

Correctness
ts.security.unvalidated-external-inputMedium
Validate untrusted input before parser construction

Untrusted input should be validated before it is used to construct sensitive parsers or runtime objects.

Security
php.security.unsafe-file-upload-handlingHigh
Validate uploaded filenames and content before storing files

PHP upload handlers should not persist raw `$_FILES` names without validation and normalization.

Security
cfn.correctness.validates-foreach-functionsHigh
Validates foreach functions

Validates foreach functions

Correctness
cfn.correctness.validation-not-function-configurationHigh
Validation not function configuration

Validation not function configuration

Correctness
cfn.correctness.validationdomain-is-superdomain-of-domainnameHigh
Validationdomain is superdomain of domainname

Validationdomain is superdomain of domainname

Correctness
ts.correctness.var-declarationLow
var declaration instead of let or const

Consider using `let` or `const` instead of `var`.

Correctness
php.correctness.undefined-variableHigh
Variable is used but not defined

Using a variable that has not been defined in scope will cause a runtime notice.

Correctness
ts.correctness.used-before-definitionLow
Variable used before definition

Detects variable used before definition issues in JavaScript and TypeScript source.

Correctness
ts.security.missing-message-origin-checkHigh
Verify `message` event origins

`message` handlers should validate `event.origin` before trusting cross-window data.

Security
java.security.jwt-without-verificationHigh
Verify JWT signatures before trusting claims

Decoding a JWT without verifying its signature allows attackers to forge tokens and impersonate users.

Security
rust.security.jwt-without-verificationHigh
Verify JWT signatures before trusting claims

JWT parsing must use a verification key and must not disable signature validation.

Security
go.security.jwt-without-verificationHigh
Verify JWT signatures before trusting claims

Parsing JWTs with `jwt.Parse` and a nil keyfunc, `jwt.ParseUnverified`, or `jwt.Decode` skips signature verification and lets attackers forge tokens.

Security
rust.security.insecure-ssh-host-keyHigh
Verify SSH host keys before connecting

SSH clients must not disable host key verification.

Security
go.security.insecure-ssh-host-keyHigh
Verify SSH host keys instead of ignoring them

`ssh.InsecureIgnoreHostKey()` disables host key verification and exposes SSH clients to man-in-the-middle attacks.

Security
java.correctness.two-lock-waitHigh
wait() called while holding two locks

Calling `wait()` while holding multiple locks can cause confusing monitor state and hard-to-diagnose deadlocks.

Correctness
java.correctness.unsynchronized-wait-notifyHigh
wait()/notify() called without synchronization

Object.wait(), notify(), or notifyAll() called outside a synchronized block.

Correctness
java.correctness.wait-notify-on-threadHigh
Wait/notify must not be called on a Thread object

Calling wait(), notify(), or notifyAll() on a Thread instance interferes with the JVM's internal thread lifecycle signaling.

Correctness
cfn.maintainability.warn-when-properties-are-configured-to-only-work-with-the-package-commandMedium
Warn when properties are configured to only work with the package command

Warn when properties are configured to only work with the package command

Maintainability
java.correctness.unescaped-whitespaceCritical
Whitespace escape sequences should be properly escaped in regex patterns

Whitespace 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.

Correctness
ruby.bug-risk.with-index-value-unusedHigh
with_index called but index value unused

`with_index` or `each_with_index` is called but the block only receives one argument. The index value is silently discarded.

Correctness
ruby.bug-risk.with-object-value-unusedHigh
with_object called but object value unused

`with_object` or `each_with_object` is called but the block only receives one argument. The accumulated object is silently discarded.

Correctness
java.testing.wrong-assertion-argument-orderHigh
Wrong argument order in test assertions

Test 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).

Testing
java.correctness.collection-remove-type-mismatchHigh
Wrong argument type for Collection remove method

Passing a numeric literal to Collection.remove() on a collection with a non-numeric generic type will silently fail to remove the intended element.

Correctness
java.correctness.zoneid-invalid-timezoneHigh
ZoneId.of() should be passed a valid timezone identifier

Calling `ZoneId.of()` with a hardcoded string that may not be a valid IANA timezone ID will throw `ZoneRulesException` at runtime.

Correctness