@critiq/rules 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +468 -0
- package/README.md +13 -233
- package/catalog-metadata.json +47 -0
- package/catalog.yaml +2962 -309
- package/package.json +1 -1
- package/rules/go/go.bug-risk.compound-assignment-misuse.rule.yaml +53 -0
- package/rules/go/go.bug-risk.deprecated-redis-methods.rule.yaml +57 -0
- package/rules/go/go.bug-risk.etcd-getlogger-misuse.rule.yaml +59 -0
- package/rules/go/go.bug-risk.etcd-invalid-compare-operator.rule.yaml +53 -0
- package/rules/go/go.bug-risk.gin-loadhtmlglob-ill-formed.rule.yaml +53 -0
- package/rules/go/go.bug-risk.gorm-dry-run-enabled.rule.yaml +58 -0
- package/rules/go/go.bug-risk.gorm-skip-default-transaction.rule.yaml +57 -0
- package/rules/go/go.bug-risk.gorm-updates-zero-values.rule.yaml +55 -0
- package/rules/go/go.bug-risk.gorm-where-zero-values.rule.yaml +53 -0
- package/rules/go/go.bug-risk.poorly-formed-nilness-guards.rule.yaml +57 -0
- package/rules/go/go.bug-risk.redis-incorrect-arg-count.rule.yaml +54 -0
- package/rules/go/go.bug-risk.redis-unimplemented-method.rule.yaml +53 -0
- package/rules/go/go.bug-risk.reflect-makefunc-usage.rule.yaml +55 -0
- package/rules/go/go.correctness.bare-return.rule.yaml +52 -0
- package/rules/go/go.correctness.boolean-literal-in-expression.rule.yaml +52 -0
- package/rules/go/go.correctness.boolean-simplification.rule.yaml +49 -0
- package/rules/go/go.correctness.deferred-func-literal.rule.yaml +52 -0
- package/rules/go/go.correctness.duplicate-branch-body.rule.yaml +49 -0
- package/rules/go/go.correctness.duplicate-function-arguments.rule.yaml +49 -0
- package/rules/go/go.correctness.duplicate-if-else-condition.rule.yaml +54 -0
- package/rules/go/go.correctness.duplicate-switch-cases.rule.yaml +48 -0
- package/rules/go/go.correctness.flag-pointer-immediate-deref.rule.yaml +49 -0
- package/rules/go/go.correctness.hidden-goroutine.rule.yaml +55 -0
- package/rules/go/go.correctness.http-nobody-nil.rule.yaml +52 -0
- package/rules/go/go.correctness.identical-binary-operands.rule.yaml +48 -0
- package/rules/go/go.correctness.impossible-interface-nil-check.rule.yaml +56 -0
- package/rules/go/go.correctness.incomplete-nil-check.rule.yaml +49 -0
- package/rules/go/go.correctness.integer-truncation.rule.yaml +51 -0
- package/rules/go/go.correctness.interface-any-preferred.rule.yaml +50 -0
- package/rules/go/go.correctness.nil-error-returned.rule.yaml +49 -0
- package/rules/go/go.correctness.off-by-one-index.rule.yaml +48 -0
- package/rules/go/go.correctness.redundant-type-declaration.rule.yaml +51 -0
- package/rules/go/go.correctness.signedness-casting.rule.yaml +56 -0
- package/rules/go/go.correctness.string-concat-simplify.rule.yaml +52 -0
- package/rules/go/go.correctness.suspicious-regex-pattern.rule.yaml +49 -0
- package/rules/go/go.correctness.terminal-call-with-defer.rule.yaml +50 -0
- package/rules/go/go.correctness.unexported-capital-name.rule.yaml +52 -0
- package/rules/go/go.correctness.unnecessary-dereference.rule.yaml +53 -0
- package/rules/go/go.correctness.unnecessary-else-return.rule.yaml +52 -0
- package/rules/go/go.correctness.unreachable-switch-case.rule.yaml +50 -0
- package/rules/go/go.doc.malformed-deprecated-comment.rule.yaml +59 -0
- package/rules/go/go.performance.avoid-large-loop-copy.rule.yaml +38 -0
- package/rules/go/go.performance.avoid-large-param-copy.rule.yaml +38 -0
- package/rules/go/go.performance.avoid-large-range-copy.rule.yaml +37 -0
- package/rules/go/go.performance.avoid-string-index-alloc.rule.yaml +38 -0
- package/rules/go/go.performance.combine-append-calls.rule.yaml +38 -0
- package/rules/go/go.performance.fmt-fprint.rule.yaml +44 -0
- package/rules/go/go.performance.iowriter-write-string.rule.yaml +45 -0
- package/rules/go/go.performance.non-idiomatic-slice-zeroing.rule.yaml +44 -0
- package/rules/go/go.performance.reorder-operands.rule.yaml +44 -0
- package/rules/go/go.performance.utf8-decode-rune.rule.yaml +44 -0
- package/rules/go/go.security.decompression-bomb.rule.yaml +55 -0
- package/rules/go/go.security.http-dir-path-traversal.rule.yaml +55 -0
- package/rules/go/go.security.incomplete-hostname-regex.rule.yaml +64 -0
- package/rules/go/go.security.insecure-ssl-protocol.rule.yaml +2 -0
- package/rules/go/go.security.jwt-without-verification.rule.yaml +2 -0
- package/rules/go/go.security.net-http-missing-timeouts.rule.yaml +3 -0
- package/rules/go/go.security.pprof-exposed.rule.yaml +2 -0
- package/rules/go/go.security.squirrel-unsafe-quoting.rule.yaml +64 -0
- package/rules/go/go.security.tainted-value-sink.rule.yaml +59 -0
- package/rules/go/go.security.tls-missing-min-version.rule.yaml +2 -0
- package/rules/go/go.security.unsafe-defer-close.rule.yaml +55 -0
- package/rules/go/go.security.weak-crypto-import.rule.yaml +3 -0
- package/rules/go/go.security.weak-file-permission.rule.yaml +56 -0
- package/rules/java/java.correctness.annotation-check-always-false.rule.yaml +42 -0
- package/rules/java/java.correctness.array-compared-to-non-array.rule.yaml +45 -0
- package/rules/java/java.correctness.array-index-bounds.rule.yaml +42 -0
- package/rules/java/java.correctness.assert-self-comparison.rule.yaml +46 -0
- package/rules/java/java.correctness.assertion-in-production.rule.yaml +49 -0
- package/rules/java/java.correctness.bad-short-circuit-null-check.rule.yaml +45 -0
- package/rules/java/java.correctness.bitwise-or-never-equal.rule.yaml +42 -0
- package/rules/java/java.correctness.boxed-boolean-conditional.rule.yaml +42 -0
- package/rules/java/java.correctness.cacheloader-null-return.rule.yaml +42 -0
- package/rules/java/java.correctness.case-insensitive-regex-lacks-unicode.rule.yaml +46 -0
- package/rules/java/java.correctness.catch-null-pointer.rule.yaml +5 -1
- package/rules/java/java.correctness.class-isinstance-on-class.rule.yaml +42 -0
- package/rules/java/java.correctness.class-name-collision.rule.yaml +45 -0
- package/rules/java/java.correctness.clone-without-super.rule.yaml +45 -0
- package/rules/java/java.correctness.closeable-provides-injection.rule.yaml +43 -0
- package/rules/java/java.correctness.collection-adds-self.rule.yaml +42 -0
- package/rules/java/java.correctness.collection-contains-self.rule.yaml +42 -0
- package/rules/java/java.correctness.collection-remove-type-mismatch.rule.yaml +42 -0
- package/rules/java/java.correctness.comparator-downcast-sign-flip.rule.yaml +42 -0
- package/rules/java/java.correctness.compareto-min-value.rule.yaml +44 -0
- package/rules/java/java.correctness.constructor-starts-thread.rule.yaml +45 -0
- package/rules/java/java.correctness.default-package-spring-scan.rule.yaml +46 -0
- package/rules/java/java.correctness.deprecated-thread-methods.rule.yaml +42 -0
- package/rules/java/java.correctness.double-assignment.rule.yaml +42 -0
- package/rules/java/java.correctness.double-checked-locking.rule.yaml +42 -0
- package/rules/java/java.correctness.duplicate-binary-argument.rule.yaml +45 -0
- package/rules/java/java.correctness.duration-with-nanos-misuse.rule.yaml +42 -0
- package/rules/java/java.correctness.enum-equals-method.rule.yaml +45 -0
- package/rules/java/java.correctness.enum-get-class.rule.yaml +42 -0
- package/rules/java/java.correctness.equals-inherits-parent.rule.yaml +45 -0
- package/rules/java/java.correctness.equals-null-check.rule.yaml +45 -0
- package/rules/java/java.correctness.equals-null.rule.yaml +45 -0
- package/rules/java/java.correctness.equals-on-array.rule.yaml +4 -0
- package/rules/java/java.correctness.explicit-finalizer-invocation.rule.yaml +45 -0
- package/rules/java/java.correctness.for-loop-mismatched-increment.rule.yaml +45 -0
- package/rules/java/java.correctness.getter-setter-sync-mismatch.rule.yaml +42 -0
- package/rules/java/java.correctness.hashcode-on-array.rule.yaml +42 -0
- package/rules/java/java.correctness.hashtable-contains-value.rule.yaml +42 -0
- package/rules/java/java.correctness.hasnext-invokes-next.rule.yaml +45 -0
- package/rules/java/java.correctness.ignored-inputstream-read.rule.yaml +45 -0
- package/rules/java/java.correctness.ignored-inputstream-skip.rule.yaml +45 -0
- package/rules/java/java.correctness.illegal-monitor-state-caught.rule.yaml +45 -0
- package/rules/java/java.correctness.impossible-toarray-downcast.rule.yaml +45 -0
- package/rules/java/java.correctness.incorrect-main-signature.rule.yaml +42 -0
- package/rules/java/java.correctness.indexof-reversed-arguments.rule.yaml +42 -0
- package/rules/java/java.correctness.instant-unsupported-temporal-unit.rule.yaml +42 -0
- package/rules/java/java.correctness.invalid-regex-literal.rule.yaml +45 -0
- package/rules/java/java.correctness.invalid-serial-version-uid.rule.yaml +42 -0
- package/rules/java/java.correctness.invalid-time-constants.rule.yaml +42 -0
- package/rules/java/java.correctness.invalidated-iterator.rule.yaml +42 -0
- package/rules/java/java.correctness.iterable-iterator-returns-this.rule.yaml +44 -0
- package/rules/java/java.correctness.iterable-path-type.rule.yaml +42 -0
- package/rules/java/java.correctness.jump-in-finally.rule.yaml +44 -0
- package/rules/java/java.correctness.loop-condition-never-true.rule.yaml +42 -0
- package/rules/java/java.correctness.lost-increment-in-assignment.rule.yaml +45 -0
- package/rules/java/java.correctness.math-max-min-swapped.rule.yaml +45 -0
- package/rules/java/java.correctness.missing-enum-switch-elements.rule.yaml +43 -0
- package/rules/java/java.correctness.modulus-multiplication-precedence.rule.yaml +42 -0
- package/rules/java/java.correctness.mutable-data-exposed.rule.yaml +42 -0
- package/rules/java/java.correctness.mutable-enum-fields.rule.yaml +44 -0
- package/rules/java/java.correctness.nan-comparison.rule.yaml +42 -0
- package/rules/java/java.correctness.ncopies-argument-order.rule.yaml +42 -0
- package/rules/java/java.correctness.noallocation-method-creates-object.rule.yaml +45 -0
- package/rules/java/java.correctness.non-final-immutable-fields.rule.yaml +45 -0
- package/rules/java/java.correctness.non-null-method-returns-null.rule.yaml +43 -0
- package/rules/java/java.correctness.non-terminating-loop.rule.yaml +42 -0
- package/rules/java/java.correctness.oddness-check-fails-negative.rule.yaml +45 -0
- package/rules/java/java.correctness.optional-get-without-present-check.rule.yaml +44 -0
- package/rules/java/java.correctness.optional-null.rule.yaml +42 -0
- package/rules/java/java.correctness.overloaded-equals.rule.yaml +45 -0
- package/rules/java/java.correctness.parameter-reassignment.rule.yaml +46 -0
- package/rules/java/java.correctness.possible-null-access-exception.rule.yaml +42 -0
- package/rules/java/java.correctness.possible-null-access.rule.yaml +42 -0
- package/rules/java/java.correctness.prepared-statement-in-loop.rule.yaml +52 -0
- package/rules/java/java.correctness.prepared-statement-index-zero.rule.yaml +44 -0
- package/rules/java/java.correctness.random-coerced-to-zero.rule.yaml +44 -0
- package/rules/java/java.correctness.read-resolve-return-type.rule.yaml +42 -0
- package/rules/java/java.correctness.readline-without-null-check.rule.yaml +45 -0
- package/rules/java/java.correctness.result-set-index-zero.rule.yaml +44 -0
- package/rules/java/java.correctness.runfinalizers-on-exit.rule.yaml +45 -0
- package/rules/java/java.correctness.runnable-run-direct.rule.yaml +45 -0
- package/rules/java/java.correctness.self-assignment.rule.yaml +45 -0
- package/rules/java/java.correctness.serializable-superclass.rule.yaml +42 -0
- package/rules/java/java.correctness.serialization-method-signature.rule.yaml +42 -0
- package/rules/java/java.correctness.servlet-mutable-fields.rule.yaml +45 -0
- package/rules/java/java.correctness.shift-out-of-range.rule.yaml +44 -0
- package/rules/java/java.correctness.static-date-field.rule.yaml +42 -0
- package/rules/java/java.correctness.stream-reuse.rule.yaml +42 -0
- package/rules/java/java.correctness.string-format-arg-mismatch.rule.yaml +45 -0
- package/rules/java/java.correctness.stringbuilder-char-ctor.rule.yaml +42 -0
- package/rules/java/java.correctness.switch-statement-labels.rule.yaml +44 -0
- package/rules/java/java.correctness.sync-boxed-primitive.rule.yaml +45 -0
- package/rules/java/java.correctness.sync-on-get-class.rule.yaml +42 -0
- package/rules/java/java.correctness.sync-on-lock-primitive.rule.yaml +45 -0
- package/rules/java/java.correctness.sync-on-mutable-ref.rule.yaml +42 -0
- package/rules/java/java.correctness.sync-on-nullable-field.rule.yaml +42 -0
- package/rules/java/java.correctness.sync-on-public-field.rule.yaml +42 -0
- package/rules/java/java.correctness.sync-on-string-literal.rule.yaml +2 -0
- package/rules/java/java.correctness.system-exit.rule.yaml +43 -0
- package/rules/java/java.correctness.thread-sleep-with-lock.rule.yaml +45 -0
- package/rules/java/java.correctness.thread-static-misuse.rule.yaml +42 -0
- package/rules/java/java.correctness.threadgroup-deprecated-methods.rule.yaml +43 -0
- package/rules/java/java.correctness.throw-null.rule.yaml +42 -0
- package/rules/java/java.correctness.timezone-invalid-id.rule.yaml +42 -0
- package/rules/java/java.correctness.two-lock-wait.rule.yaml +45 -0
- package/rules/java/java.correctness.unconditional-recursion.rule.yaml +42 -0
- package/rules/java/java.correctness.unescaped-whitespace.rule.yaml +42 -0
- package/rules/java/java.correctness.unimplementable-interface.rule.yaml +42 -0
- package/rules/java/java.correctness.unsafe-collection-downcast.rule.yaml +42 -0
- package/rules/java/java.correctness.unsafe-getresource.rule.yaml +45 -0
- package/rules/java/java.correctness.unsupported-jdk-api.rule.yaml +46 -0
- package/rules/java/java.correctness.unsupported-method-call.rule.yaml +42 -0
- package/rules/java/java.correctness.unsync-static-lazy-init.rule.yaml +42 -0
- package/rules/java/java.correctness.unsynchronized-wait-notify.rule.yaml +45 -0
- package/rules/java/java.correctness.unterminated-assertion-chain.rule.yaml +39 -0
- package/rules/java/java.correctness.volatile-array-elements.rule.yaml +45 -0
- package/rules/java/java.correctness.volatile-increment-non-atomic.rule.yaml +45 -0
- package/rules/java/java.correctness.wait-notify-on-thread.rule.yaml +45 -0
- package/rules/java/java.correctness.wait-on-condition.rule.yaml +45 -0
- package/rules/java/java.correctness.week-year-in-date-pattern.rule.yaml +44 -0
- package/rules/java/java.correctness.zoneid-invalid-timezone.rule.yaml +42 -0
- package/rules/java/java.doc.empty-javadoc-tag.rule.yaml +41 -0
- package/rules/java/java.doc.malformed-javadoc-comment.rule.yaml +41 -0
- package/rules/java/java.doc.parameter-tag-no-description.rule.yaml +41 -0
- package/rules/java/java.doc.unmatched-parameter-tag.rule.yaml +41 -0
- package/rules/java/java.performance.boxed-boolean-constructor.rule.yaml +43 -0
- package/rules/java/java.performance.boxed-double-constructor.rule.yaml +43 -0
- package/rules/java/java.performance.boxed-integer-constructor.rule.yaml +43 -0
- package/rules/java/java.performance.empty-string-constructor.rule.yaml +44 -0
- package/rules/java/java.performance.expensive-method-on-ui-thread.rule.yaml +50 -0
- package/rules/java/java.performance.explicit-gc.rule.yaml +43 -0
- package/rules/java/java.performance.inefficient-string-constructor.rule.yaml +44 -0
- package/rules/java/java.performance.keyset-instead-of-entryset.rule.yaml +49 -0
- package/rules/java/java.performance.non-zero-to-array.rule.yaml +49 -0
- package/rules/java/java.performance.pattern-compile-in-loop.rule.yaml +49 -0
- package/rules/java/java.performance.removeall-to-clear.rule.yaml +49 -0
- package/rules/java/java.performance.replaceall-instead-of-replace.rule.yaml +49 -0
- package/rules/java/java.performance.single-char-string-indexof.rule.yaml +49 -0
- package/rules/java/java.performance.string-concat-in-loop.rule.yaml +49 -0
- package/rules/java/java.performance.string-to-string.rule.yaml +43 -0
- package/rules/java/java.performance.thread-as-runnable.rule.yaml +44 -0
- package/rules/java/java.performance.url-in-collection.rule.yaml +44 -0
- package/rules/java/java.quality.c-style-array-declaration.rule.yaml +41 -0
- package/rules/java/java.quality.multiple-variables-same-line.rule.yaml +41 -0
- package/rules/java/java.quality.type-name-uppercase.rule.yaml +41 -0
- package/rules/java/java.testing.setup-teardown-annotation.rule.yaml +36 -0
- package/rules/java/java.testing.setup-without-super.rule.yaml +43 -0
- package/rules/java/java.testing.teardown-without-super.rule.yaml +43 -0
- package/rules/java/java.testing.wrong-assertion-argument-order.rule.yaml +43 -0
- package/rules/php/php.correctness.abstract-method-outside-abstract-class.rule.yaml +3 -0
- package/rules/php/php.correctness.abstract-method-with-body.rule.yaml +38 -0
- package/rules/php/php.correctness.assign-to-non-lvalue.rule.yaml +38 -0
- package/rules/php/php.correctness.attribute-on-class-constant.rule.yaml +38 -0
- package/rules/php/php.correctness.attribute-on-closure.rule.yaml +38 -0
- package/rules/php/php.correctness.attribute-on-function.rule.yaml +38 -0
- package/rules/php/php.correctness.attribute-on-property.rule.yaml +40 -0
- package/rules/php/php.correctness.break-continue-outside-loop.rule.yaml +2 -0
- package/rules/php/php.correctness.case-insensitive-define.rule.yaml +2 -0
- package/rules/php/php.correctness.class-implements-non-interface.rule.yaml +38 -0
- package/rules/php/php.correctness.default-parameter-not-last.rule.yaml +2 -0
- package/rules/php/php.correctness.deprecated-filter-constant.rule.yaml +2 -0
- package/rules/php/php.correctness.deprecated-libxml-entity-loader.rule.yaml +2 -0
- package/rules/php/php.correctness.deprecated-unset-cast.rule.yaml +2 -0
- package/rules/php/php.correctness.duplicate-array-key.rule.yaml +2 -0
- package/rules/php/php.correctness.duplicate-declaration.rule.yaml +2 -0
- package/rules/php/php.correctness.duplicate-union-type.rule.yaml +38 -0
- package/rules/php/php.correctness.echo-invalid-value.rule.yaml +38 -0
- package/rules/php/php.correctness.empty-array-literal-slot.rule.yaml +2 -0
- package/rules/php/php.correctness.empty-bracket-array-access.rule.yaml +2 -0
- package/rules/php/php.correctness.empty-code-block.rule.yaml +2 -0
- package/rules/php/php.correctness.empty-function-body.rule.yaml +2 -0
- package/rules/php/php.correctness.error-suppression-operator.rule.yaml +2 -0
- package/rules/php/php.correctness.function-comparison.rule.yaml +2 -0
- package/rules/php/php.correctness.inaccessible-property.rule.yaml +49 -0
- package/rules/php/php.correctness.incomplete-arrow-function.rule.yaml +38 -0
- package/rules/php/php.correctness.inconsistent-printf-params.rule.yaml +50 -0
- package/rules/php/php.correctness.instanceof-invalid-type.rule.yaml +40 -0
- package/rules/php/php.correctness.instantiate-abstract-class.rule.yaml +38 -0
- package/rules/php/php.correctness.interface-extends-non-interface.rule.yaml +38 -0
- package/rules/php/php.correctness.interface-implements-keyword.rule.yaml +38 -0
- package/rules/php/php.correctness.invalid-arrow-function-typehint.rule.yaml +38 -0
- package/rules/php/php.correctness.invalid-attribute-class.rule.yaml +49 -0
- package/rules/php/php.correctness.invalid-closure-return-typehint.rule.yaml +38 -0
- package/rules/php/php.correctness.invalid-constructor-promotion.rule.yaml +38 -0
- package/rules/php/php.correctness.invalid-cookie-options.rule.yaml +2 -0
- package/rules/php/php.correctness.invalid-dynamic-constant-fetch.rule.yaml +38 -0
- package/rules/php/php.correctness.invalid-extends-target.rule.yaml +38 -0
- package/rules/php/php.correctness.invalid-increment-operand.rule.yaml +38 -0
- package/rules/php/php.correctness.invalid-isset-argument.rule.yaml +38 -0
- package/rules/php/php.correctness.invalid-return-typehint.rule.yaml +38 -0
- package/rules/php/php.correctness.invalid-static-method.rule.yaml +40 -0
- package/rules/php/php.correctness.invalid-string-interpolation-type.rule.yaml +38 -0
- package/rules/php/php.correctness.invalid-type-cast.rule.yaml +38 -0
- package/rules/php/php.correctness.invalid-use-keyword.rule.yaml +48 -0
- package/rules/php/php.correctness.missing-member-visibility.rule.yaml +2 -0
- package/rules/php/php.correctness.missing-return-statement.rule.yaml +38 -0
- package/rules/php/php.correctness.named-arg-before-positional.rule.yaml +38 -0
- package/rules/php/php.correctness.nested-function-declaration.rule.yaml +2 -0
- package/rules/php/php.correctness.nested-switch.rule.yaml +2 -0
- package/rules/php/php.correctness.nullable-mixed-type.rule.yaml +38 -0
- package/rules/php/php.correctness.nullsafe-returned-by-reference.rule.yaml +3 -0
- package/rules/php/php.correctness.print-invalid-value.rule.yaml +38 -0
- package/rules/php/php.correctness.psr-class-constant-naming.rule.yaml +38 -0
- package/rules/php/php.correctness.psr-method-camel-case.rule.yaml +38 -0
- package/rules/php/php.correctness.redundant-final-method.rule.yaml +38 -0
- package/rules/php/php.correctness.redundant-string-cast-concat.rule.yaml +2 -0
- package/rules/php/php.correctness.self-assignment.rule.yaml +2 -0
- package/rules/php/php.correctness.switch-multiple-default.rule.yaml +2 -0
- package/rules/php/php.correctness.throw-as-expression.rule.yaml +38 -0
- package/rules/php/php.correctness.throw-non-exception.rule.yaml +38 -0
- package/rules/php/php.correctness.trait-as-attribute.rule.yaml +38 -0
- package/rules/php/php.correctness.trait-class-constant.rule.yaml +38 -0
- package/rules/php/php.correctness.undefined-constant-reference.rule.yaml +38 -0
- package/rules/php/php.correctness.undefined-function.rule.yaml +40 -0
- package/rules/php/php.correctness.undefined-method.rule.yaml +40 -0
- package/rules/php/php.correctness.undefined-property.rule.yaml +51 -0
- package/rules/php/php.correctness.undefined-static-property.rule.yaml +41 -0
- package/rules/php/php.correctness.undefined-variable.rule.yaml +48 -0
- package/rules/php/php.correctness.uninitialized-typed-property.rule.yaml +38 -0
- package/rules/php/php.correctness.unknown-magic-method.rule.yaml +2 -0
- package/rules/php/php.correctness.unreachable-after-return.rule.yaml +2 -0
- package/rules/php/php.correctness.unused-closure-use-variable.rule.yaml +38 -0
- package/rules/php/php.correctness.unused-constructor-parameter.rule.yaml +38 -0
- package/rules/php/php.correctness.unused-import.rule.yaml +38 -0
- package/rules/php/php.correctness.useless-post-increment.rule.yaml +2 -0
- package/rules/php/php.correctness.useless-unset.rule.yaml +2 -0
- package/rules/php/php.correctness.void-match-arm.rule.yaml +38 -0
- package/rules/php/php.performance.expensive-loop-condition.rule.yaml +2 -0
- package/rules/php/php.security.debug-function-exposure.rule.yaml +2 -0
- package/rules/php/php.security.insecure-session-id-generation.rule.yaml +2 -0
- package/rules/php/php.security.insecure-session-or-cookie-config.rule.yaml +3 -0
- package/rules/php/php.security.no-dynamic-eval.rule.yaml +2 -0
- package/rules/php/php.security.unsafe-include-with-user-input.rule.yaml +2 -0
- package/rules/php/php.security.unsafe-new-static.rule.yaml +2 -0
- package/rules/php/php.security.weak-cipher.rule.yaml +2 -0
- package/rules/php/php.security.xml-external-entity.rule.yaml +2 -0
- package/rules/python/py.correctness.assert-outside-test.rule.yaml +49 -0
- package/rules/python/py.correctness.global-statement.rule.yaml +51 -0
- package/rules/python/py.correctness.redefined-builtin.rule.yaml +51 -0
- package/rules/python/py.correctness.super-with-arguments.rule.yaml +51 -0
- package/rules/python/py.correctness.unnecessary-comprehension.rule.yaml +51 -0
- package/rules/python/py.correctness.useless-return.rule.yaml +51 -0
- package/rules/python/py.security.command-execution-with-request-input.rule.yaml +56 -0
- package/rules/python/py.security.ftp-usage.rule.yaml +51 -0
- package/rules/python/py.security.hardcoded-credentials.rule.yaml +51 -0
- package/rules/python/py.security.hardcoded-temp-directory.rule.yaml +51 -0
- package/rules/python/py.security.insecure-cipher-mode.rule.yaml +51 -0
- package/rules/python/py.security.insecure-cipher.rule.yaml +51 -0
- package/rules/python/py.security.insecure-crypto-import.rule.yaml +51 -0
- package/rules/python/py.security.insecure-http-transport.rule.yaml +56 -0
- package/rules/python/py.security.insecure-ssl-version.rule.yaml +53 -0
- package/rules/python/py.security.insecure-urllib-method.rule.yaml +51 -0
- package/rules/python/py.security.insecure-xml-parser.rule.yaml +53 -0
- package/rules/python/py.security.mako-insecure-templates.rule.yaml +53 -0
- package/rules/python/py.security.path-traversal-user-input.rule.yaml +51 -0
- package/rules/python/py.security.request-path-file-read.rule.yaml +56 -0
- package/rules/python/py.security.sensitive-logging.rule.yaml +51 -0
- package/rules/python/py.security.sql-interpolation.rule.yaml +56 -0
- package/rules/python/py.security.ssh-host-key-validation.rule.yaml +53 -0
- package/rules/python/py.security.telnet-usage.rule.yaml +51 -0
- package/rules/python/py.security.tls-verification-disabled.rule.yaml +56 -0
- package/rules/python/py.security.unsafe-deserialization.rule.yaml +56 -0
- package/rules/python/py.security.weak-crypto-key.rule.yaml +51 -0
- package/rules/python/py.security.weak-hash-algorithm.rule.yaml +57 -0
- package/rules/python/py.security.wildcard-subprocess-injection.rule.yaml +53 -0
- package/rules/python/py.security.xmlrpc-import.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.action-mailer-base-subclass.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.active-job-base-subclass.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.active-record-alias.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.active-record-base-subclass.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.active-record-method-override.rule.yaml +55 -0
- package/rules/ruby/ruby.bug-risk.active-support-alias.rule.yaml +52 -0
- package/rules/ruby/ruby.bug-risk.all-each-to-find-each.rule.yaml +55 -0
- package/rules/ruby/ruby.bug-risk.allow-blank-with-delegate.rule.yaml +52 -0
- package/rules/ruby/ruby.bug-risk.alter-queries-combine.rule.yaml +54 -0
- package/rules/ruby/ruby.bug-risk.ambiguous-block-association.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.ambiguous-operator-argument.rule.yaml +48 -0
- package/rules/ruby/ruby.bug-risk.ambiguous-regexp-literal.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.argument-overwritten-before-use.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.assert-not-usage.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.bad-date-usage.rule.yaml +55 -0
- package/rules/ruby/ruby.bug-risk.bad-magic-comment-order.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.bad-operand-order.rule.yaml +46 -0
- package/rules/ruby/ruby.bug-risk.bad-rescue-ordering.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.branches-without-body.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.callback-order.rule.yaml +52 -0
- package/rules/ruby/ruby.bug-risk.callback-override.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.circular-argument-reference.rule.yaml +44 -0
- package/rules/ruby/ruby.bug-risk.class-name-should-be-string.rule.yaml +52 -0
- package/rules/ruby/ruby.bug-risk.console-output-instead-of-logger.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.constant-in-block.rule.yaml +52 -0
- package/rules/ruby/ruby.bug-risk.controller-base-subclass.rule.yaml +54 -0
- package/rules/ruby/ruby.bug-risk.dependent-option-cascade.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.deprecated-belongs-to-required.rule.yaml +54 -0
- package/rules/ruby/ruby.bug-risk.deprecated-big-decimal-new.rule.yaml +44 -0
- package/rules/ruby/ruby.bug-risk.deprecated-class-methods.rule.yaml +45 -0
- package/rules/ruby/ruby.bug-risk.deprecated-filter-methods.rule.yaml +54 -0
- package/rules/ruby/ruby.bug-risk.deprecated-find-by-dynamic.rule.yaml +55 -0
- package/rules/ruby/ruby.bug-risk.deprecated-http-status-symbols.rule.yaml +52 -0
- package/rules/ruby/ruby.bug-risk.deprecated-openssl-api.rule.yaml +42 -0
- package/rules/ruby/ruby.bug-risk.deprecated-uri-regexp.rule.yaml +42 -0
- package/rules/ruby/ruby.bug-risk.disjunctive-assignment-in-constructor.rule.yaml +46 -0
- package/rules/ruby/ruby.bug-risk.duplicate-case-conditions.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.duplicate-constant-assignment.rule.yaml +47 -0
- package/rules/ruby/ruby.bug-risk.duplicate-elsif-block.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.duplicate-method-definitions.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.each-with-object-immutable-arg.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.else-followed-by-expression.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.else-without-rescue.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.empty-ensure-block.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.empty-expression.rule.yaml +48 -0
- package/rules/ruby/ruby.bug-risk.empty-interpolation.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.end-in-method.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.enum-array-syntax.rule.yaml +54 -0
- package/rules/ruby/ruby.bug-risk.enum-duplicate-values.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.equal-instead-of-equal.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.error-inherits-exception.rule.yaml +42 -0
- package/rules/ruby/ruby.bug-risk.exit-in-app-code.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.flip-flop-operator.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.git-in-gemspec.rule.yaml +48 -0
- package/rules/ruby/ruby.bug-risk.grouped-parentheses-in-call.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.has-and-belongs-to-many.rule.yaml +52 -0
- package/rules/ruby/ruby.bug-risk.helper-instance-variables.rule.yaml +52 -0
- package/rules/ruby/ruby.bug-risk.heredoc-method-order.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.http-methods-without-params.rule.yaml +54 -0
- package/rules/ruby/ruby.bug-risk.identical-binary-operands.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.ignored-column-accessed.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.inconsistent-request-referrer.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.inconsistent-safe-navigation-try.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.inconsistent-safe-navigation.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.incorrect-pluralization.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.ineffective-access-modifier.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.interpolation-in-single-quote.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.invalid-integer-times.rule.yaml +52 -0
- package/rules/ruby/ruby.bug-risk.invalid-percent-string-literal.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.invalid-percent-symbol-array.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.invalid-rails-env-predicate.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.invalid-rescue-type.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.io-select-single-arg.rule.yaml +48 -0
- package/rules/ruby/ruby.bug-risk.irreversible-migration.rule.yaml +57 -0
- package/rules/ruby/ruby.bug-risk.missing-inverse-of.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.mixed-regex-captures.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.multiple-rescues-for-same-exception.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.non-local-exit-from-iterator.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.non-null-column-without-default.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.non-preferred-assert-falseness.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.old-style-validation-macro.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.outer-variable-shadowed.rule.yaml +47 -0
- package/rules/ruby/ruby.bug-risk.plain-method-instead-of-proc.rule.yaml +48 -0
- package/rules/ruby/ruby.bug-risk.predicate-method-without-parentheses.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.rails-env-equality.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.rails-root-join.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.rake-task-missing-environment.rule.yaml +46 -0
- package/rules/ruby/ruby.bug-risk.redundant-allow-nil.rule.yaml +52 -0
- package/rules/ruby/ruby.bug-risk.redundant-foreign-key.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.redundant-with-options-receiver.rule.yaml +52 -0
- package/rules/ruby/ruby.bug-risk.regex-literal-in-condition.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.relative-date-as-constant.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.renamed-column-accessed.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.rescue-exception.rule.yaml +42 -0
- package/rules/ruby/ruby.bug-risk.return-in-ensure.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.routes-match-single-verb.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.safe-navigation-with-blank.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.safe-navigation-with-empty.rule.yaml +52 -0
- package/rules/ruby/ruby.bug-risk.self-assignment.rule.yaml +52 -0
- package/rules/ruby/ruby.bug-risk.skip-filter-conditional.rule.yaml +55 -0
- package/rules/ruby/ruby.bug-risk.suppressed-exceptions.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.symbol-boolean-name.rule.yaml +44 -0
- package/rules/ruby/ruby.bug-risk.table-without-timestamps.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.time-without-zone.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.to-json-without-argument.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.trailing-comma-attribute.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.undefined-action-filter.rule.yaml +53 -0
- package/rules/ruby/ruby.bug-risk.unintended-string-concatenation.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.unnecessary-require.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.unnecessary-splat.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.unqualified-constant.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.unreachable-code.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.unreachable-loop.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.unsafe-number-conversion.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.unsafe-safe-navigation-chain.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.unused-method-arguments.rule.yaml +51 -0
- package/rules/ruby/ruby.bug-risk.use-blank-simplify.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.use-delegate.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.use-presence-over-explicit-check.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.use-present-to-simplify-conditional.rule.yaml +48 -0
- package/rules/ruby/ruby.bug-risk.use-square-brackets-for-attributes.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.useless-access-modifier.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.useless-comparison.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.useless-setter-call.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.when-branch-without-body.rule.yaml +49 -0
- package/rules/ruby/ruby.bug-risk.where-first-over-find-by.rule.yaml +54 -0
- package/rules/ruby/ruby.bug-risk.with-index-value-unused.rule.yaml +50 -0
- package/rules/ruby/ruby.bug-risk.with-object-value-unused.rule.yaml +50 -0
- package/rules/ruby/ruby.performance.efficient-hash-search.rule.yaml +42 -0
- package/rules/ruby/ruby.performance.enumerable-index-by.rule.yaml +51 -0
- package/rules/ruby/ruby.performance.enumerable-index-with.rule.yaml +52 -0
- package/rules/ruby/ruby.performance.merge-single-key.rule.yaml +42 -0
- package/rules/ruby/ruby.performance.no-static-size-computation.rule.yaml +43 -0
- package/rules/ruby/ruby.performance.prefer-delete-prefix.rule.yaml +53 -0
- package/rules/ruby/ruby.performance.prefer-delete-suffix.rule.yaml +53 -0
- package/rules/ruby/ruby.performance.prefer-flat-map.rule.yaml +41 -0
- package/rules/ruby/ruby.performance.prefer-struct-over-openstruct.rule.yaml +42 -0
- package/rules/ruby/ruby.performance.range-cover-over-include.rule.yaml +43 -0
- package/rules/ruby/ruby.performance.regex-match-over-match.rule.yaml +42 -0
- package/rules/ruby/ruby.performance.yield-over-block-call.rule.yaml +41 -0
- package/rules/ruby/ruby.security.io-shell-command.rule.yaml +50 -0
- package/rules/ruby/ruby.security.rails-http-digest-auth.rule.yaml +51 -0
- package/rules/ruby/ruby.security.rails-render-inline.rule.yaml +55 -0
- package/rules/ruby/ruby.security.rails-skip-validation.rule.yaml +51 -0
- package/rules/rust/rust.correctness.empty-range-expression.rule.yaml +49 -0
- package/rules/rust/rust.correctness.erasing-operation.rule.yaml +49 -0
- package/rules/rust/rust.correctness.forget-drop-on-copy-type.rule.yaml +50 -0
- package/rules/rust/rust.correctness.forget-drop-on-non-drop-type.rule.yaml +50 -0
- package/rules/rust/rust.correctness.forget-drop-on-reference.rule.yaml +49 -0
- package/rules/rust/rust.correctness.hash-unit-value.rule.yaml +49 -0
- package/rules/rust/rust.correctness.identical-binary-operands.rule.yaml +49 -0
- package/rules/rust/rust.correctness.ignored-future-value.rule.yaml +53 -0
- package/rules/rust/rust.correctness.invalid-regex-literal.rule.yaml +49 -0
- package/rules/rust/rust.correctness.iter-next-in-for-loop.rule.yaml +49 -0
- package/rules/rust/rust.correctness.mistyped-suffix.rule.yaml +50 -0
- package/rules/rust/rust.correctness.nan-comparison.rule.yaml +49 -0
- package/rules/rust/rust.correctness.non-binding-let-on-lock.rule.yaml +50 -0
- package/rules/rust/rust.correctness.non-octal-permissions.rule.yaml +60 -0
- package/rules/rust/rust.correctness.print-in-display-impl.rule.yaml +48 -0
- package/rules/rust/rust.correctness.self-not-self-type.rule.yaml +49 -0
- package/rules/rust/rust.correctness.step-by-zero.rule.yaml +48 -0
- package/rules/rust/rust.correctness.syntax-error.rule.yaml +49 -0
- package/rules/rust/rust.correctness.transmute-float-char-to-ref-or-ptr.rule.yaml +48 -0
- package/rules/rust/rust.correctness.transmute-int-lit-to-raw-ptr.rule.yaml +48 -0
- package/rules/rust/rust.correctness.transmute-int-to-fn-ptr.rule.yaml +48 -0
- package/rules/rust/rust.correctness.transmute-integer-to-bool.rule.yaml +49 -0
- package/rules/rust/rust.correctness.transmute-integer-to-char.rule.yaml +48 -0
- package/rules/rust/rust.correctness.transmute-integer-to-nonzero.rule.yaml +48 -0
- package/rules/rust/rust.correctness.transmute-number-to-slice-or-array.rule.yaml +48 -0
- package/rules/rust/rust.correctness.transmute-ptr-to-ptr.rule.yaml +49 -0
- package/rules/rust/rust.correctness.transmute-ptr-to-ref.rule.yaml +49 -0
- package/rules/rust/rust.correctness.transmute-ref-to-ptr.rule.yaml +49 -0
- package/rules/rust/rust.correctness.transmute-t-to-ptr-ref.rule.yaml +49 -0
- package/rules/rust/rust.correctness.transmute-tuple-to-slice-or-array.rule.yaml +48 -0
- package/rules/rust/rust.correctness.unhandled-io-result.rule.yaml +49 -0
- package/rules/rust/rust.correctness.unit-argument.rule.yaml +50 -0
- package/rules/rust/rust.correctness.unit-comparison.rule.yaml +49 -0
- package/rules/rust/rust.performance.single-char-string-literal-pattern.rule.yaml +51 -0
- package/rules/rust/rust.quality.approximate-floating-constant.rule.yaml +51 -0
- package/rules/rust/rust.quality.builtin-type-shadow.rule.yaml +49 -0
- package/rules/rust/rust.quality.clone-on-double-reference.rule.yaml +50 -0
- package/rules/rust/rust.quality.crate-in-macro-definition.rule.yaml +50 -0
- package/rules/rust/rust.quality.deprecated-function-use.rule.yaml +52 -0
- package/rules/rust/rust.quality.env-string-literal.rule.yaml +50 -0
- package/rules/rust/rust.quality.explicit-self-assignment.rule.yaml +49 -0
- package/rules/rust/rust.quality.fn-ptr-null-comparison.rule.yaml +49 -0
- package/rules/rust/rust.quality.fn-ptr-to-non-pointer-cast.rule.yaml +50 -0
- package/rules/rust/rust.quality.inaccurate-duration-calculation.rule.yaml +50 -0
- package/rules/rust/rust.quality.isize-usize-overflow.rule.yaml +50 -0
- package/rules/rust/rust.quality.iter-count-instead-of-len.rule.yaml +49 -0
- package/rules/rust/rust.quality.iter-nth-instead-of-get.rule.yaml +50 -0
- package/rules/rust/rust.quality.map-followed-by-count.rule.yaml +50 -0
- package/rules/rust/rust.quality.non-owned-rc-pointer-into-vec.rule.yaml +50 -0
- package/rules/rust/rust.quality.non-utf8-literal-in-from-utf8-unchecked.rule.yaml +54 -0
- package/rules/rust/rust.quality.option-env-unwrap.rule.yaml +50 -0
- package/rules/rust/rust.quality.ordered-iteration-on-unordered.rule.yaml +52 -0
- package/rules/rust/rust.quality.possible-missing-comma-in-array.rule.yaml +49 -0
- package/rules/rust/rust.quality.potentially-incomplete-ascii-range.rule.yaml +49 -0
- package/rules/rust/rust.quality.redundant-mem-replace-with-default.rule.yaml +48 -0
- package/rules/rust/rust.quality.redundant-mem-replace-with-none.rule.yaml +48 -0
- package/rules/rust/rust.quality.redundant-mem-replace-with-zero.rule.yaml +48 -0
- package/rules/rust/rust.quality.replace-same-pattern-and-replacement.rule.yaml +49 -0
- package/rules/rust/rust.quality.size-of-val-on-reference.rule.yaml +49 -0
- package/rules/rust/rust.quality.unused-enumerate-or-zip-items.rule.yaml +50 -0
- package/rules/rust/rust.security.actix-namedfile-path-traversal.rule.yaml +61 -0
- package/rules/rust/rust.security.bind-all-interfaces.rule.yaml +2 -0
- package/rules/rust/rust.security.const-to-mut-ptr.rule.yaml +61 -0
- package/rules/rust/rust.security.differently-sized-slice-conversion.rule.yaml +61 -0
- package/rules/rust/rust.security.global-write-permission.rule.yaml +61 -0
- package/rules/rust/rust.security.insecure-temp-file.rule.yaml +2 -0
- package/rules/rust/rust.security.invisible-unicode.rule.yaml +60 -0
- package/rules/rust/rust.security.manual-error-type-id.rule.yaml +59 -0
- package/rules/rust/rust.security.missing-regex-anchor.rule.yaml +61 -0
- package/rules/rust/rust.security.misused-bitwise-xor.rule.yaml +54 -0
- package/rules/rust/rust.security.open-redirect.rule.yaml +64 -0
- package/rules/rust/rust.security.potentially-vulnerable-regex.rule.yaml +61 -0
- package/rules/rust/rust.security.raw-slice-to-ptr.rule.yaml +60 -0
- package/rules/rust/rust.security.unsafe-remove-dir-all.rule.yaml +62 -0
- package/rules/rust/rust.security.weak-crypto-import.rule.yaml +2 -0
- package/rules/rust/rust.security.weak-rsa-key-size.rule.yaml +2 -0
- package/rules/rust/rust.testing.ignore-without-ticket-reference.rule.yaml +13 -7
- package/rules/rust/rust.testing.thread-sleep-in-unit-test.rule.yaml +6 -6
- package/rules/shared/security.no-command-execution-with-request-input.rule.yaml +3 -0
- package/rules/shared/security.no-sensitive-data-in-logs-and-telemetry.rule.yaml +2 -0
- package/rules/shared/security.no-sql-interpolation.rule.yaml +2 -0
- package/rules/shared/security.permissive-file-permissions.rule.yaml +2 -0
- package/rules/shared/security.weak-hash-algorithm.rule.yaml +2 -0
- package/rules/sql/sql.correctness.undefined-reference.rule.yaml +37 -0
- package/rules/sql/sql.style.ambiguous-distinct.rule.yaml +37 -0
- package/rules/sql/sql.style.column-expression-without-alias.rule.yaml +37 -0
- package/rules/sql/sql.style.distinct-with-parenthesis.rule.yaml +37 -0
- package/rules/sql/sql.style.duplicate-table-aliases.rule.yaml +37 -0
- package/rules/sql/sql.style.implicit-column-alias.rule.yaml +37 -0
- package/rules/sql/sql.style.implicit-table-alias.rule.yaml +37 -0
- package/rules/sql/sql.style.inconsistent-capitalization.rule.yaml +37 -0
- package/rules/sql/sql.style.inconsistent-keyword-case.rule.yaml +37 -0
- package/rules/sql/sql.style.keyword-as-identifier.rule.yaml +37 -0
- package/rules/sql/sql.style.trailing-select-comma.rule.yaml +37 -0
- package/rules/sql/sql.style.unqualified-references.rule.yaml +37 -0
- package/rules/sql/sql.style.unused-table-alias.rule.yaml +37 -0
- package/rules/typescript/ts.angularjs.inject-function-assignments-only.rule.yaml +36 -0
- package/rules/typescript/ts.angularjs.no-controller.rule.yaml +36 -0
- package/rules/typescript/ts.angularjs.no-deprecated-cookie-store.rule.yaml +36 -0
- package/rules/typescript/ts.angularjs.no-deprecated-directive-replace.rule.yaml +36 -0
- package/rules/typescript/ts.angularjs.no-deprecated-http-success-error.rule.yaml +36 -0
- package/rules/typescript/ts.angularjs.no-jquery-wrapping-angular-element.rule.yaml +36 -0
- package/rules/typescript/ts.angularjs.prefer-angular-for-each.rule.yaml +36 -0
- package/rules/typescript/ts.angularjs.prefer-angular-is-string.rule.yaml +36 -0
- package/rules/typescript/ts.correctness.array-callback-missing-return.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.array-sort-without-compare.rule.yaml +5 -3
- package/rules/typescript/ts.correctness.assignment-in-condition.rule.yaml +4 -2
- package/rules/typescript/ts.correctness.assignment-to-exports.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.assignment-to-import-binding.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.async-promise-executor.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.blocking-call-in-async-flow.rule.yaml +14 -3
- package/rules/typescript/ts.correctness.callback-missing-error-handling.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.callback-not-error-first.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.compound-assignment-with-await.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.confusing-multiline-expression.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.constructor-return-value.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.control-flow-in-finally.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.declaration-in-nested-block.rule.yaml +39 -0
- package/rules/typescript/ts.correctness.delete-on-variable.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.deprecated-api-usage.rule.yaml +39 -0
- package/rules/typescript/ts.correctness.duplicate-class-member.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.duplicate-export.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.duplicate-function-parameter.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.duplicate-if-else-condition.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.duplicate-import-source.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.duplicate-object-key.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.duplicate-switch-case.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.empty-block-statement.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.empty-destructuring-pattern.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.extraneous-import.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.flawed-string-comparison.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.global-object-called-as-function.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.identical-comparison-operands.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.implicit-undefined-return.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.infinite-loop.rule.yaml +16 -7
- package/rules/typescript/ts.correctness.invalid-async-await-call.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.invalid-shebang.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.invalid-typeof-comparison.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.invalid-variable-usage.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.missing-async-on-promise-method.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.missing-super-call.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.missing-timeout-on-external-call.rule.yaml +13 -6
- package/rules/typescript/ts.correctness.missing-type-annotation.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.namespace-import-unexported-name.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.negative-zero-comparison.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.new-expression-with-require.rule.yaml +39 -0
- package/rules/typescript/ts.correctness.new-symbol-instance.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.no-confusing-label-in-switch.rule.yaml +39 -0
- package/rules/typescript/ts.correctness.no-href-with-nuxt-link.rule.yaml +39 -0
- package/rules/typescript/ts.correctness.no-ts-suppress-directive.rule.yaml +36 -0
- package/rules/typescript/ts.correctness.non-existent-assignment-operators.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.off-by-one-loop-boundary.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.parse-int-on-number-literal.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.prefer-as-const-over-literal-type.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.prefer-includes-over-indexof.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.prefer-nullish-coalescing.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.private-member-should-be-readonly.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.promise-reject-non-error.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.prototype-builtin-called-directly.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.reassign-catch-binding.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.reassign-class-member.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.reassign-const-binding.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.reassign-function-declaration.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.regexp-constructor-invalid-pattern.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.regexp-empty-character-class.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.regexp-multicodepoint-character-class.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.regexp-pattern-unusual-control-character.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.regexp-useless-backreference.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.require-outside-import.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.restricted-global-variable.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.restricted-object-property.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.self-assignment.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.setter-return-value.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.simplify-boolean-return.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.sparse-array-literal.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.switch-case-fallthrough.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.template-placeholder-in-string.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.this-before-super.rule.yaml +3 -0
- package/rules/typescript/ts.correctness.this-outside-class.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.undeclared-variable.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.unhandled-async-error.rule.yaml +7 -1
- package/rules/typescript/ts.correctness.unnecessary-return-await.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.unresolved-import.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.unsafe-negation-in-relational.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.unused-expression.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.unused-variable.rule.yaml +37 -0
- package/rules/typescript/ts.correctness.use-number-is-nan.rule.yaml +2 -0
- package/rules/typescript/ts.correctness.used-before-definition.rule.yaml +38 -0
- package/rules/typescript/ts.correctness.var-declaration.rule.yaml +38 -0
- package/rules/typescript/ts.next.no-document-import-outside-custom-document.rule.yaml +39 -0
- package/rules/typescript/ts.next.no-head-import-in-custom-document.rule.yaml +39 -0
- package/rules/typescript/ts.performance.no-await-in-loop.rule.yaml +6 -6
- package/rules/typescript/ts.performance.no-json-parse-stringify-clone.rule.yaml +8 -0
- package/rules/typescript/ts.performance.sequential-async-calls.rule.yaml +16 -7
- package/rules/typescript/ts.quality.no-banned-type.rule.yaml +36 -0
- package/rules/typescript/ts.quality.no-empty-function.rule.yaml +1 -1
- package/rules/typescript/ts.quality.no-side-effect-in-pure-callback.rule.yaml +36 -0
- package/rules/typescript/ts.quality.swallowed-error.rule.yaml +6 -3
- package/rules/typescript/ts.react.no-deprecated-is-mounted.rule.yaml +36 -0
- package/rules/typescript/ts.react.no-deprecated-react-dom-root-api.rule.yaml +24 -2
- package/rules/typescript/ts.react.no-direct-state-mutation.rule.yaml +2 -0
- package/rules/typescript/ts.react.no-duplicate-jsx-attributes.rule.yaml +2 -0
- package/rules/typescript/ts.react.no-hooks-rule-violation.rule.yaml +38 -0
- package/rules/typescript/ts.react.no-invalid-markup-characters.rule.yaml +36 -0
- package/rules/typescript/ts.react.no-lifecycle-method-typo.rule.yaml +36 -0
- package/rules/typescript/ts.react.no-render-invalid-return-type.rule.yaml +36 -0
- package/rules/typescript/ts.react.no-set-state-in-component-did-mount.rule.yaml +2 -0
- package/rules/typescript/ts.react.no-set-state-in-component-did-update.rule.yaml +2 -0
- package/rules/typescript/ts.react.no-set-state-in-component-will-update.rule.yaml +36 -0
- package/rules/typescript/ts.react.no-should-component-update.rule.yaml +36 -0
- package/rules/typescript/ts.react.no-target-blank-without-rel.rule.yaml +2 -0
- package/rules/typescript/ts.react.no-this-state-in-set-state.rule.yaml +38 -0
- package/rules/typescript/ts.react.no-unnecessary-fragment.rule.yaml +36 -0
- package/rules/typescript/ts.runtime.no-process-exit.rule.yaml +3 -0
- package/rules/typescript/ts.runtime.process-exit-control-flow.rule.yaml +46 -0
- package/rules/typescript/ts.security.dangerous-insert-html.rule.yaml +5 -0
- package/rules/typescript/ts.security.express-insecure-listen.rule.yaml +52 -0
- package/rules/typescript/ts.security.express-nosql-injection.rule.yaml +16 -11
- package/rules/typescript/ts.security.express-static-dotfiles-allow.rule.yaml +5 -0
- package/rules/typescript/ts.security.iframe-missing-sandbox-attribute.rule.yaml +18 -6
- package/rules/typescript/ts.security.import-using-user-input.rule.yaml +62 -10
- package/rules/typescript/ts.security.insecure-auth-cookie-flags.rule.yaml +12 -4
- package/rules/typescript/ts.security.missing-request-timeout-or-retry.rule.yaml +8 -6
- package/rules/typescript/ts.security.no-assign-mutable-export.rule.yaml +2 -0
- package/rules/typescript/ts.security.no-dynamic-execution.rule.yaml +3 -3
- package/rules/typescript/ts.security.no-javascript-url.rule.yaml +42 -8
- package/rules/typescript/ts.security.no-native-prototype-extension.rule.yaml +13 -1
- package/rules/typescript/ts.security.non-literal-fs-filename.rule.yaml +13 -1
- package/rules/typescript/ts.security.observable-timing-discrepancy.rule.yaml +3 -3
- package/rules/typescript/ts.security.open-redirect.rule.yaml +6 -0
- package/rules/typescript/ts.security.path-join-user-input.rule.yaml +50 -0
- package/rules/typescript/ts.security.sensitive-data-written-to-file.rule.yaml +16 -6
- package/rules/typescript/ts.security.ssrf.rule.yaml +1 -0
- package/rules/typescript/ts.security.unsafe-dirname-path-concat.rule.yaml +3 -0
- package/rules/typescript/ts.security.unsanitized-http-response.rule.yaml +14 -3
- package/rules/typescript/ts.security.user-controlled-regexp.rule.yaml +52 -0
- package/rules/typescript/ts.testing.no-flaky-timer-test.rule.yaml +7 -7
- package/rules/typescript/ts.testing.no-legacy-test-waiter.rule.yaml +36 -0
- package/rules/typescript/ts.testing.no-network-call-in-unit-test.rule.yaml +7 -1
- package/rules/typescript/ts.testing.no-skipped-test-without-ticket.rule.yaml +3 -3
- package/rules/typescript/ts.testing.useless-assertion.rule.yaml +37 -0
- package/rules/typescript/ts.vue.emits-validator-return-boolean.rule.yaml +36 -0
- package/rules/typescript/ts.vue.no-browser-globals-in-created.rule.yaml +39 -0
- package/rules/typescript/ts.vue.no-computed-missing-dependency.rule.yaml +36 -0
- package/rules/typescript/ts.vue.no-computed-mutation.rule.yaml +36 -0
- package/rules/typescript/ts.vue.no-data-object-declaration.rule.yaml +36 -0
- package/rules/typescript/ts.vue.no-deprecated-keycodes-config.rule.yaml +36 -0
- package/rules/typescript/ts.vue.no-deprecated-listeners.rule.yaml +36 -0
- package/rules/typescript/ts.vue.no-deprecated-model-option.rule.yaml +36 -0
- package/rules/typescript/ts.vue.no-deprecated-scoped-slots.rule.yaml +36 -0
- package/rules/typescript/ts.vue.no-keycode-modifiers.rule.yaml +36 -0
- package/rules/typescript/ts.vue.no-reserved-key-overwrite.rule.yaml +36 -0
- package/rules/typescript/ts.vue.no-server-env-in-client-hooks.rule.yaml +39 -0
- package/rules/typescript/ts.vue.no-slot-property-access.rule.yaml +36 -0
- package/rules/typescript/ts.vue.prefer-prop-type-constructor.rule.yaml +36 -0
- package/rules/typescript/ts.vue.require-transition-conditional.rule.yaml +36 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: py.correctness.global-statement
|
|
5
|
+
aliases:
|
|
6
|
+
- PY-W0002
|
|
7
|
+
title: Avoid global statements in Python
|
|
8
|
+
summary: Using global variables is an anti-pattern that can lead to hard-to-debug side effects
|
|
9
|
+
rationale: Global state makes code harder to reason about, test, and parallelize. Prefer passing state explicitly or using class-based state management.
|
|
10
|
+
detection:
|
|
11
|
+
kind: pattern
|
|
12
|
+
references:
|
|
13
|
+
- kind: cwe
|
|
14
|
+
id: CWE-562
|
|
15
|
+
title: Return of Stack Variable Address
|
|
16
|
+
tags:
|
|
17
|
+
- correctness
|
|
18
|
+
- python
|
|
19
|
+
- quality
|
|
20
|
+
- rules-catalog
|
|
21
|
+
stability: stable
|
|
22
|
+
appliesTo: block
|
|
23
|
+
scope:
|
|
24
|
+
languages:
|
|
25
|
+
- python
|
|
26
|
+
paths:
|
|
27
|
+
include:
|
|
28
|
+
- "**/*.py"
|
|
29
|
+
exclude:
|
|
30
|
+
- "**/tests/**"
|
|
31
|
+
- "**/test_*.py"
|
|
32
|
+
- "**/*_test.py"
|
|
33
|
+
- "**/migrations/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: python.correctness.global-statement
|
|
37
|
+
bind: issue
|
|
38
|
+
emit:
|
|
39
|
+
finding:
|
|
40
|
+
category: correctness.source
|
|
41
|
+
severity: medium
|
|
42
|
+
confidence: 0.95
|
|
43
|
+
tags:
|
|
44
|
+
- correctness
|
|
45
|
+
- python
|
|
46
|
+
- quality
|
|
47
|
+
message:
|
|
48
|
+
title: Global statement in `${captures.issue.text}`
|
|
49
|
+
summary: "`${captures.issue.text}` uses a global declaration for mutable state."
|
|
50
|
+
remediation:
|
|
51
|
+
summary: Refactor to pass state through function parameters or class instances instead of global variables.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: py.correctness.redefined-builtin
|
|
5
|
+
aliases:
|
|
6
|
+
- PY-W0001
|
|
7
|
+
title: Avoid redefining Python builtins
|
|
8
|
+
summary: Function definitions should not shadow builtin names like list, dict, str, or int
|
|
9
|
+
rationale: Shadowing builtins with function definitions can cause unexpected behavior and bugs in code that relies on standard Python functions.
|
|
10
|
+
detection:
|
|
11
|
+
kind: pattern
|
|
12
|
+
references:
|
|
13
|
+
- kind: cwe
|
|
14
|
+
id: CWE-480
|
|
15
|
+
title: Use of Incorrect Operator
|
|
16
|
+
tags:
|
|
17
|
+
- correctness
|
|
18
|
+
- python
|
|
19
|
+
- quality
|
|
20
|
+
- rules-catalog
|
|
21
|
+
stability: stable
|
|
22
|
+
appliesTo: block
|
|
23
|
+
scope:
|
|
24
|
+
languages:
|
|
25
|
+
- python
|
|
26
|
+
paths:
|
|
27
|
+
include:
|
|
28
|
+
- "**/*.py"
|
|
29
|
+
exclude:
|
|
30
|
+
- "**/tests/**"
|
|
31
|
+
- "**/test_*.py"
|
|
32
|
+
- "**/*_test.py"
|
|
33
|
+
- "**/migrations/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: python.correctness.redefined-builtin
|
|
37
|
+
bind: issue
|
|
38
|
+
emit:
|
|
39
|
+
finding:
|
|
40
|
+
category: correctness.source
|
|
41
|
+
severity: medium
|
|
42
|
+
confidence: 0.95
|
|
43
|
+
tags:
|
|
44
|
+
- correctness
|
|
45
|
+
- python
|
|
46
|
+
- quality
|
|
47
|
+
message:
|
|
48
|
+
title: Function shadows builtin in `${captures.issue.text}`
|
|
49
|
+
summary: "`${captures.issue.text}` defines a function that shadows a Python builtin name."
|
|
50
|
+
remediation:
|
|
51
|
+
summary: Rename the function to avoid shadowing standard library names like list, dict, str, etc.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: py.correctness.super-with-arguments
|
|
5
|
+
aliases:
|
|
6
|
+
- PY-W0003
|
|
7
|
+
title: Use parameterless super() in Python 3
|
|
8
|
+
summary: Python 3 supports super() without arguments in class methods
|
|
9
|
+
rationale: Passing the class and self to super() is an older Python 2 pattern that is verbose and error-prone when refactoring class names.
|
|
10
|
+
detection:
|
|
11
|
+
kind: pattern
|
|
12
|
+
references:
|
|
13
|
+
- kind: cwe
|
|
14
|
+
id: CWE-398
|
|
15
|
+
title: Indicator of Poor Code Quality
|
|
16
|
+
tags:
|
|
17
|
+
- correctness
|
|
18
|
+
- python
|
|
19
|
+
- quality
|
|
20
|
+
- rules-catalog
|
|
21
|
+
stability: stable
|
|
22
|
+
appliesTo: block
|
|
23
|
+
scope:
|
|
24
|
+
languages:
|
|
25
|
+
- python
|
|
26
|
+
paths:
|
|
27
|
+
include:
|
|
28
|
+
- "**/*.py"
|
|
29
|
+
exclude:
|
|
30
|
+
- "**/tests/**"
|
|
31
|
+
- "**/test_*.py"
|
|
32
|
+
- "**/*_test.py"
|
|
33
|
+
- "**/migrations/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: python.correctness.super-with-arguments
|
|
37
|
+
bind: issue
|
|
38
|
+
emit:
|
|
39
|
+
finding:
|
|
40
|
+
category: correctness.source
|
|
41
|
+
severity: low
|
|
42
|
+
confidence: 0.95
|
|
43
|
+
tags:
|
|
44
|
+
- correctness
|
|
45
|
+
- python
|
|
46
|
+
- quality
|
|
47
|
+
message:
|
|
48
|
+
title: Use parameterless super() in `${captures.issue.text}`
|
|
49
|
+
summary: "`${captures.issue.text}` passes class and self to super() unnecessarily."
|
|
50
|
+
remediation:
|
|
51
|
+
summary: Replace super(ClassName, self) with super() for cleaner, more maintainable Python 3 code.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: py.correctness.unnecessary-comprehension
|
|
5
|
+
aliases:
|
|
6
|
+
- PY-W0005
|
|
7
|
+
title: Avoid unnecessary comprehension wrapped in list() or set()
|
|
8
|
+
summary: Wrapping a list comprehension in list() or set() is redundant and should be simplified
|
|
9
|
+
rationale: Python list comprehensions already produce a list, so wrapping them in list() performs unnecessary work. Use the comprehension directly or a generator expression.
|
|
10
|
+
detection:
|
|
11
|
+
kind: pattern
|
|
12
|
+
references:
|
|
13
|
+
- kind: cwe
|
|
14
|
+
id: CWE-398
|
|
15
|
+
title: Indicator of Poor Code Quality
|
|
16
|
+
tags:
|
|
17
|
+
- correctness
|
|
18
|
+
- python
|
|
19
|
+
- quality
|
|
20
|
+
- rules-catalog
|
|
21
|
+
stability: stable
|
|
22
|
+
appliesTo: block
|
|
23
|
+
scope:
|
|
24
|
+
languages:
|
|
25
|
+
- python
|
|
26
|
+
paths:
|
|
27
|
+
include:
|
|
28
|
+
- "**/*.py"
|
|
29
|
+
exclude:
|
|
30
|
+
- "**/tests/**"
|
|
31
|
+
- "**/test_*.py"
|
|
32
|
+
- "**/*_test.py"
|
|
33
|
+
- "**/migrations/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: python.correctness.unnecessary-comprehension
|
|
37
|
+
bind: issue
|
|
38
|
+
emit:
|
|
39
|
+
finding:
|
|
40
|
+
category: correctness.source
|
|
41
|
+
severity: low
|
|
42
|
+
confidence: 0.90
|
|
43
|
+
tags:
|
|
44
|
+
- correctness
|
|
45
|
+
- python
|
|
46
|
+
- quality
|
|
47
|
+
message:
|
|
48
|
+
title: Simplify unnecessary comprehension in `${captures.issue.text}`
|
|
49
|
+
summary: "`${captures.issue.text}` wraps a comprehension in list() or set() unnecessarily."
|
|
50
|
+
remediation:
|
|
51
|
+
summary: Remove the list() or set() wrapper and use the comprehension directly, or use the underlying iterable if no transformation is needed.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: py.correctness.useless-return
|
|
5
|
+
aliases:
|
|
6
|
+
- PY-W0004
|
|
7
|
+
title: Avoid bare return at end of function body
|
|
8
|
+
summary: A bare return at the end of a function adds no value and should be removed
|
|
9
|
+
rationale: Bare return statements at the end of a function body are redundant as functions implicitly return None.
|
|
10
|
+
detection:
|
|
11
|
+
kind: pattern
|
|
12
|
+
references:
|
|
13
|
+
- kind: cwe
|
|
14
|
+
id: CWE-398
|
|
15
|
+
title: Indicator of Poor Code Quality
|
|
16
|
+
tags:
|
|
17
|
+
- correctness
|
|
18
|
+
- python
|
|
19
|
+
- quality
|
|
20
|
+
- rules-catalog
|
|
21
|
+
stability: stable
|
|
22
|
+
appliesTo: block
|
|
23
|
+
scope:
|
|
24
|
+
languages:
|
|
25
|
+
- python
|
|
26
|
+
paths:
|
|
27
|
+
include:
|
|
28
|
+
- "**/*.py"
|
|
29
|
+
exclude:
|
|
30
|
+
- "**/tests/**"
|
|
31
|
+
- "**/test_*.py"
|
|
32
|
+
- "**/*_test.py"
|
|
33
|
+
- "**/migrations/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: python.correctness.useless-return
|
|
37
|
+
bind: issue
|
|
38
|
+
emit:
|
|
39
|
+
finding:
|
|
40
|
+
category: correctness.source
|
|
41
|
+
severity: low
|
|
42
|
+
confidence: 0.95
|
|
43
|
+
tags:
|
|
44
|
+
- correctness
|
|
45
|
+
- python
|
|
46
|
+
- quality
|
|
47
|
+
message:
|
|
48
|
+
title: Remove useless return in `${captures.issue.text}`
|
|
49
|
+
summary: "`${captures.issue.text}` contains a bare return at the end of a function body."
|
|
50
|
+
remediation:
|
|
51
|
+
summary: Remove the bare return statement as the function already returns None implicitly.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: py.security.command-execution-with-request-input
|
|
5
|
+
aliases:
|
|
6
|
+
- BAN-B603
|
|
7
|
+
title: Avoid command execution with request-controlled input
|
|
8
|
+
summary: Python process execution helpers must not receive request-controlled arguments.
|
|
9
|
+
rationale: Request-controlled process execution can become remote code execution when attackers choose the binary or influence shell parsing.
|
|
10
|
+
detection:
|
|
11
|
+
kind: pattern
|
|
12
|
+
references:
|
|
13
|
+
- kind: cwe
|
|
14
|
+
id: CWE-78
|
|
15
|
+
title: OS Command Injection
|
|
16
|
+
- kind: owasp
|
|
17
|
+
title: OS Command Injection Defense Cheat Sheet
|
|
18
|
+
url: https://cheatsheetseries.owasp.org/cheatsheets/OS_Command_Injection_Defense_Cheat_Sheet.html
|
|
19
|
+
tags:
|
|
20
|
+
- security
|
|
21
|
+
- python
|
|
22
|
+
- injection
|
|
23
|
+
- command-execution
|
|
24
|
+
- rules-catalog
|
|
25
|
+
stability: stable
|
|
26
|
+
appliesTo: block
|
|
27
|
+
scope:
|
|
28
|
+
languages:
|
|
29
|
+
- python
|
|
30
|
+
paths:
|
|
31
|
+
include:
|
|
32
|
+
- "**/*.py"
|
|
33
|
+
exclude:
|
|
34
|
+
- "**/tests/**"
|
|
35
|
+
- "**/test_*.py"
|
|
36
|
+
- "**/*_test.py"
|
|
37
|
+
- "**/migrations/**"
|
|
38
|
+
match:
|
|
39
|
+
fact:
|
|
40
|
+
kind: security.command-execution-with-request-input
|
|
41
|
+
bind: issue
|
|
42
|
+
emit:
|
|
43
|
+
finding:
|
|
44
|
+
category: security.injection
|
|
45
|
+
severity: critical
|
|
46
|
+
confidence: 0.90
|
|
47
|
+
tags:
|
|
48
|
+
- security
|
|
49
|
+
- python
|
|
50
|
+
- injection
|
|
51
|
+
- command-execution
|
|
52
|
+
message:
|
|
53
|
+
title: Avoid request-controlled command execution in `${captures.issue.text}`
|
|
54
|
+
summary: "`${captures.issue.text}` executes a process using request-controlled command data."
|
|
55
|
+
remediation:
|
|
56
|
+
summary: Dispatch only allowlisted binaries, keep shell mode disabled, and validate or constrain subcommands before execution.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: py.security.ftp-usage
|
|
5
|
+
aliases:
|
|
6
|
+
- BAN-B321
|
|
7
|
+
title: Avoid cleartext FTP protocol
|
|
8
|
+
summary: FTP transmits credentials and data without encryption
|
|
9
|
+
rationale: FTP sends authentication credentials and file data in plaintext over the network, exposing sensitive information to interception and man-in-the-middle attacks.
|
|
10
|
+
detection:
|
|
11
|
+
kind: pattern
|
|
12
|
+
references:
|
|
13
|
+
- kind: cwe
|
|
14
|
+
id: CWE-319
|
|
15
|
+
title: Cleartext Transmission of Sensitive Information
|
|
16
|
+
tags:
|
|
17
|
+
- security
|
|
18
|
+
- python
|
|
19
|
+
- transport
|
|
20
|
+
- rules-catalog
|
|
21
|
+
stability: stable
|
|
22
|
+
appliesTo: block
|
|
23
|
+
scope:
|
|
24
|
+
languages:
|
|
25
|
+
- python
|
|
26
|
+
paths:
|
|
27
|
+
include:
|
|
28
|
+
- "**/*.py"
|
|
29
|
+
exclude:
|
|
30
|
+
- "**/tests/**"
|
|
31
|
+
- "**/test_*.py"
|
|
32
|
+
- "**/*_test.py"
|
|
33
|
+
- "**/migrations/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: python.security.ftp-usage
|
|
37
|
+
bind: issue
|
|
38
|
+
emit:
|
|
39
|
+
finding:
|
|
40
|
+
category: security.transport
|
|
41
|
+
severity: high
|
|
42
|
+
confidence: 0.95
|
|
43
|
+
tags:
|
|
44
|
+
- security
|
|
45
|
+
- python
|
|
46
|
+
- transport
|
|
47
|
+
message:
|
|
48
|
+
title: Replace FTP with secure transport in `${captures.issue.text}`
|
|
49
|
+
summary: "`${captures.issue.text}` imports or uses the insecure FTP protocol."
|
|
50
|
+
remediation:
|
|
51
|
+
summary: Use SFTP/SSH-based transport like `paramiko.Transport` or FTPS for encrypted file transfers.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: py.security.hardcoded-credentials
|
|
5
|
+
aliases:
|
|
6
|
+
- BAN-B101
|
|
7
|
+
title: Avoid hardcoded credentials in Python source
|
|
8
|
+
summary: Python source should not embed static secrets such as API keys, tokens, or passwords in plain text.
|
|
9
|
+
rationale: Hardcoded credentials are easily exposed to version control, logs, and anyone with read access to the source.
|
|
10
|
+
detection:
|
|
11
|
+
kind: pattern
|
|
12
|
+
references:
|
|
13
|
+
- kind: cwe
|
|
14
|
+
id: CWE-798
|
|
15
|
+
title: Use of Hard-coded Credentials
|
|
16
|
+
tags:
|
|
17
|
+
- security
|
|
18
|
+
- python
|
|
19
|
+
- credentials
|
|
20
|
+
- rules-catalog
|
|
21
|
+
stability: stable
|
|
22
|
+
appliesTo: file
|
|
23
|
+
scope:
|
|
24
|
+
languages:
|
|
25
|
+
- python
|
|
26
|
+
paths:
|
|
27
|
+
include:
|
|
28
|
+
- "**/*.py"
|
|
29
|
+
exclude:
|
|
30
|
+
- "**/tests/**"
|
|
31
|
+
- "**/test_*.py"
|
|
32
|
+
- "**/*_test.py"
|
|
33
|
+
- "**/migrations/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: security.hardcoded-credentials
|
|
37
|
+
bind: issue
|
|
38
|
+
emit:
|
|
39
|
+
finding:
|
|
40
|
+
category: security.credentials
|
|
41
|
+
severity: critical
|
|
42
|
+
confidence: 0.95
|
|
43
|
+
tags:
|
|
44
|
+
- security
|
|
45
|
+
- python
|
|
46
|
+
- credentials
|
|
47
|
+
message:
|
|
48
|
+
title: Hardcoded credential in `${captures.issue.text}`
|
|
49
|
+
summary: "`${captures.issue.text}` contains a hardcoded credential."
|
|
50
|
+
remediation:
|
|
51
|
+
summary: Use environment variables, a secrets manager, or a secure vault for all credentials.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: py.security.hardcoded-temp-directory
|
|
5
|
+
aliases:
|
|
6
|
+
- BAN-B108
|
|
7
|
+
title: Avoid hardcoded temporary directory paths
|
|
8
|
+
summary: Temporary paths should use tempfile module instead of string literals
|
|
9
|
+
rationale: Hardcoded temporary directory paths can lead to predictable file locations, enabling symlink races, unauthorized access, and insecure file handling.
|
|
10
|
+
detection:
|
|
11
|
+
kind: pattern
|
|
12
|
+
references:
|
|
13
|
+
- kind: cwe
|
|
14
|
+
id: CWE-377
|
|
15
|
+
title: Insecure Temporary File
|
|
16
|
+
tags:
|
|
17
|
+
- security
|
|
18
|
+
- python
|
|
19
|
+
- filesystem
|
|
20
|
+
- rules-catalog
|
|
21
|
+
stability: stable
|
|
22
|
+
appliesTo: block
|
|
23
|
+
scope:
|
|
24
|
+
languages:
|
|
25
|
+
- python
|
|
26
|
+
paths:
|
|
27
|
+
include:
|
|
28
|
+
- "**/*.py"
|
|
29
|
+
exclude:
|
|
30
|
+
- "**/tests/**"
|
|
31
|
+
- "**/test_*.py"
|
|
32
|
+
- "**/*_test.py"
|
|
33
|
+
- "**/migrations/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: python.security.hardcoded-temp-directory
|
|
37
|
+
bind: issue
|
|
38
|
+
emit:
|
|
39
|
+
finding:
|
|
40
|
+
category: security.file
|
|
41
|
+
severity: medium
|
|
42
|
+
confidence: 0.9
|
|
43
|
+
tags:
|
|
44
|
+
- security
|
|
45
|
+
- python
|
|
46
|
+
- filesystem
|
|
47
|
+
message:
|
|
48
|
+
title: Use tempfile module instead of `${captures.issue.text}`
|
|
49
|
+
summary: "`${captures.issue.text}` uses a hardcoded temporary directory path."
|
|
50
|
+
remediation:
|
|
51
|
+
summary: Use `tempfile.mkdtemp()` or `tempfile.TemporaryDirectory()` to create secure, unpredictable temporary directories.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: py.security.insecure-cipher-mode
|
|
5
|
+
aliases:
|
|
6
|
+
- BAN-B305
|
|
7
|
+
title: Avoid ECB cipher mode
|
|
8
|
+
summary: ECB mode is deterministic and reveals patterns in plaintext
|
|
9
|
+
rationale: ECB (Electronic Codebook) mode encrypts identical plaintext blocks into identical ciphertext blocks, revealing data patterns. It should never be used for encrypting more than a single block.
|
|
10
|
+
detection:
|
|
11
|
+
kind: pattern
|
|
12
|
+
references:
|
|
13
|
+
- kind: cwe
|
|
14
|
+
id: CWE-327
|
|
15
|
+
title: Use of a Broken or Risky Cryptographic Algorithm
|
|
16
|
+
tags:
|
|
17
|
+
- security
|
|
18
|
+
- python
|
|
19
|
+
- crypto
|
|
20
|
+
- rules-catalog
|
|
21
|
+
stability: stable
|
|
22
|
+
appliesTo: block
|
|
23
|
+
scope:
|
|
24
|
+
languages:
|
|
25
|
+
- python
|
|
26
|
+
paths:
|
|
27
|
+
include:
|
|
28
|
+
- "**/*.py"
|
|
29
|
+
exclude:
|
|
30
|
+
- "**/tests/**"
|
|
31
|
+
- "**/test_*.py"
|
|
32
|
+
- "**/*_test.py"
|
|
33
|
+
- "**/migrations/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: python.security.insecure-cipher-mode
|
|
37
|
+
bind: issue
|
|
38
|
+
emit:
|
|
39
|
+
finding:
|
|
40
|
+
category: security.crypto
|
|
41
|
+
severity: high
|
|
42
|
+
confidence: 0.9
|
|
43
|
+
tags:
|
|
44
|
+
- security
|
|
45
|
+
- python
|
|
46
|
+
- crypto
|
|
47
|
+
message:
|
|
48
|
+
title: Replace ECB mode with authenticated encryption in `${captures.issue.text}`
|
|
49
|
+
summary: "`${captures.issue.text}` uses ECB cipher mode which reveals plaintext patterns."
|
|
50
|
+
remediation:
|
|
51
|
+
summary: Use an authenticated encryption mode like GCM (e.g. `AES.MODE_GCM`) or CBC with HMAC.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: py.security.insecure-cipher
|
|
5
|
+
aliases:
|
|
6
|
+
- BAN-B304
|
|
7
|
+
title: Avoid insecure cryptographic ciphers
|
|
8
|
+
summary: Weak ciphers like DES, ARC2, ARC4, and Blowfish should not be used
|
|
9
|
+
rationale: DES, ARC2, ARC4, and Blowfish are cryptographically weak algorithms that are susceptible to brute-force and known-plaintext attacks. Modern applications should use AES or other strong algorithms.
|
|
10
|
+
detection:
|
|
11
|
+
kind: pattern
|
|
12
|
+
references:
|
|
13
|
+
- kind: cwe
|
|
14
|
+
id: CWE-327
|
|
15
|
+
title: Use of a Broken or Risky Cryptographic Algorithm
|
|
16
|
+
tags:
|
|
17
|
+
- security
|
|
18
|
+
- python
|
|
19
|
+
- crypto
|
|
20
|
+
- rules-catalog
|
|
21
|
+
stability: stable
|
|
22
|
+
appliesTo: block
|
|
23
|
+
scope:
|
|
24
|
+
languages:
|
|
25
|
+
- python
|
|
26
|
+
paths:
|
|
27
|
+
include:
|
|
28
|
+
- "**/*.py"
|
|
29
|
+
exclude:
|
|
30
|
+
- "**/tests/**"
|
|
31
|
+
- "**/test_*.py"
|
|
32
|
+
- "**/*_test.py"
|
|
33
|
+
- "**/migrations/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: python.security.insecure-cipher
|
|
37
|
+
bind: issue
|
|
38
|
+
emit:
|
|
39
|
+
finding:
|
|
40
|
+
category: security.crypto
|
|
41
|
+
severity: high
|
|
42
|
+
confidence: 0.9
|
|
43
|
+
tags:
|
|
44
|
+
- security
|
|
45
|
+
- python
|
|
46
|
+
- crypto
|
|
47
|
+
message:
|
|
48
|
+
title: Replace weak cipher in `${captures.issue.text}`
|
|
49
|
+
summary: "`${captures.issue.text}` imports or uses a cryptographically weak cipher."
|
|
50
|
+
remediation:
|
|
51
|
+
summary: Use AES (e.g. `from Crypto.Cipher import AES`) or another strong, modern cipher instead.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: py.security.insecure-crypto-import
|
|
5
|
+
aliases:
|
|
6
|
+
- BAN-B413
|
|
7
|
+
title: Avoid low-level crypto library imports
|
|
8
|
+
summary: Low-level cryptography.hazmat and pycrypto imports bypass safer high-level APIs
|
|
9
|
+
rationale: Direct use of low-level cryptographic primitives from cryptography.hazmat or pycrypto bypasses safe defaults and requires expert knowledge to avoid subtle security flaws. High-level APIs like Fernet provide secure defaults.
|
|
10
|
+
detection:
|
|
11
|
+
kind: pattern
|
|
12
|
+
references:
|
|
13
|
+
- kind: cwe
|
|
14
|
+
id: CWE-327
|
|
15
|
+
title: Use of a Broken or Risky Cryptographic Algorithm
|
|
16
|
+
tags:
|
|
17
|
+
- security
|
|
18
|
+
- python
|
|
19
|
+
- crypto
|
|
20
|
+
- rules-catalog
|
|
21
|
+
stability: stable
|
|
22
|
+
appliesTo: block
|
|
23
|
+
scope:
|
|
24
|
+
languages:
|
|
25
|
+
- python
|
|
26
|
+
paths:
|
|
27
|
+
include:
|
|
28
|
+
- "**/*.py"
|
|
29
|
+
exclude:
|
|
30
|
+
- "**/tests/**"
|
|
31
|
+
- "**/test_*.py"
|
|
32
|
+
- "**/*_test.py"
|
|
33
|
+
- "**/migrations/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: python.security.insecure-crypto-import
|
|
37
|
+
bind: issue
|
|
38
|
+
emit:
|
|
39
|
+
finding:
|
|
40
|
+
category: security.crypto
|
|
41
|
+
severity: medium
|
|
42
|
+
confidence: 0.85
|
|
43
|
+
tags:
|
|
44
|
+
- security
|
|
45
|
+
- python
|
|
46
|
+
- crypto
|
|
47
|
+
message:
|
|
48
|
+
title: Prefer high-level crypto API over `${captures.issue.text}`
|
|
49
|
+
summary: "`${captures.issue.text}` imports a low-level cryptographic primitive directly."
|
|
50
|
+
remediation:
|
|
51
|
+
summary: Use high-level APIs like `cryptography.fernet.Fernet` for symmetric encryption or `cryptography.hazmat.primitives.asymmetric` through the recipes layer.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: py.security.insecure-http-transport
|
|
5
|
+
aliases:
|
|
6
|
+
- BAN-B107
|
|
7
|
+
title: Avoid cleartext HTTP for API calls
|
|
8
|
+
summary: Python outbound requests should use HTTPS, not plain HTTP, when calling external services.
|
|
9
|
+
rationale: Cleartext HTTP exposes request bodies, headers, and responses to eavesdropping and man-in-the-middle interception.
|
|
10
|
+
detection:
|
|
11
|
+
kind: pattern
|
|
12
|
+
references:
|
|
13
|
+
- kind: cwe
|
|
14
|
+
id: CWE-319
|
|
15
|
+
title: Cleartext Transmission of Sensitive Information
|
|
16
|
+
- kind: owasp
|
|
17
|
+
title: Transport Layer Protection Cheat Sheet
|
|
18
|
+
url: https://cheatsheetseries.owasp.org/cheatsheets/Transport_Layer_Protection_Cheat_Sheet.html
|
|
19
|
+
tags:
|
|
20
|
+
- security
|
|
21
|
+
- python
|
|
22
|
+
- transport
|
|
23
|
+
- encryption
|
|
24
|
+
- rules-catalog
|
|
25
|
+
stability: stable
|
|
26
|
+
appliesTo: block
|
|
27
|
+
scope:
|
|
28
|
+
languages:
|
|
29
|
+
- python
|
|
30
|
+
paths:
|
|
31
|
+
include:
|
|
32
|
+
- "**/*.py"
|
|
33
|
+
exclude:
|
|
34
|
+
- "**/tests/**"
|
|
35
|
+
- "**/test_*.py"
|
|
36
|
+
- "**/*_test.py"
|
|
37
|
+
- "**/migrations/**"
|
|
38
|
+
match:
|
|
39
|
+
fact:
|
|
40
|
+
kind: security.insecure-http-transport
|
|
41
|
+
bind: issue
|
|
42
|
+
emit:
|
|
43
|
+
finding:
|
|
44
|
+
category: security.transport
|
|
45
|
+
severity: high
|
|
46
|
+
confidence: 0.95
|
|
47
|
+
tags:
|
|
48
|
+
- security
|
|
49
|
+
- python
|
|
50
|
+
- transport
|
|
51
|
+
- encryption
|
|
52
|
+
message:
|
|
53
|
+
title: Use HTTPS in `${captures.issue.text}`
|
|
54
|
+
summary: "`${captures.issue.text}` sends a request over cleartext HTTP instead of HTTPS."
|
|
55
|
+
remediation:
|
|
56
|
+
summary: Replace `http://` with `https://` for all outbound API calls. Use HTTPS for all service-to-service communication.
|