@critiq/rules 0.2.0 → 0.3.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/README.md +3 -2
- package/catalog.yaml +798 -0
- package/package.json +1 -1
- package/rules/cfn/cfn.correctness.attributedefinitions-keyschemas-mismatch.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.base64-validation-of-parameters.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.basic-cloudformation-resource-check.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.basic-cloudformation-template-configuration.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.cannot-reference-resources-in-the-conditions-block-of-the-template.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-at-least-one-essential-container-is-specified.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-deletionpolicy-values-for-resources.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-dependson-values-for-resources.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-ec2-ebs-properties.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-elastic-cache-redis-cluster-settings.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-events-rule-targets-are-less-than-or-equal-to-5.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-fargate-service-scheduling-strategy.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-fn-and-structure-for-validity.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-fn-equals-structure-for-validity.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-fn-if-structure-for-validity.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-fn-not-structure-for-validity.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-fn-or-structure-for-validity.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-for-subscriptionfilters-have-beyond-2-attachments-to-a-cloudwatch-log-group.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-if-a-json-object-is-within-size-limits.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-if-a-list-has-between-min-and-max-number-of-values-specified.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-if-a-list-has-duplicate-values.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-if-a-number-is-between-min-and-max.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-if-a-string-has-between-min-and-max-number-of-values-specified.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-if-eol-lambda-function-runtimes-are-used.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-if-properties-have-a-valid-value.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-if-property-values-adhere-to-a-specific-pattern.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-if-refing-to-a-iam-resource-with-path-set.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-if-refs-exist.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-if-serverless-resources-have-serverless-transform.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-if-the-referenced-conditions-are-defined.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-minimum-90-period-is-met-between-backupplan-cold-and-delete.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-properties-that-are-mutually-exclusive.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-properties-that-are-required-together.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-properties-that-need-at-least-one-of-a-list-of-properties.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-properties-that-need-only-one-of-a-list-of-properties.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-resource-properties-values.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-state-machine-definition-for-proper-syntax.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-that-modules-resources-are-valid.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-the-configuration-of-a-resources-updatepolicy.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-updatereplacepolicy-values-for-resources.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.check-values-of-properties-for-valid-refs-and-getatts.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.cidr-validation-of-parameters.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.cloudfront-aliases.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.codepipeline-stage-actions.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.codepipeline-stages.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.conditions-have-appropriate-properties.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.default-value-cannot-use-refs.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.default-value-is-within-parameter-constraints.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.error-processing-rule-on-the-template.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.findinmap-validation-of-configuration.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.getatt-validation-of-parameters.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.getaz-validation-of-parameters.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.importvalue-validation-of-parameters.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.join-validation-of-parameters.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.length-validation-of-parameters.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.mapping-attribute-limit-not-exceeded.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.mapping-keys-are-strings-and-alphanumeric.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.mapping-limit-not-exceeded.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.mapping-name-limit-not-exceeded.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.mappings-are-appropriately-configured.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.mappings-have-appropriate-names.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.metadata-interface-have-appropriate-properties.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.output-description-limit-not-exceeded.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.output-limit-not-exceeded.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.output-name-limit-not-exceeded.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.outputs-descriptions-can-only-be-strings.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.outputs-have-appropriate-names.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.outputs-have-appropriate-properties.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.outputs-have-required-properties.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.outputs-have-values-of-strings.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.parameter-limit-not-exceeded.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.parameter-name-limit-not-exceeded.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.parameter-value-limit-not-exceeded.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.parameters-have-appropriate-names.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.parameters-have-appropriate-properties.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.parameters-have-appropriate-type.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.property-is-required-based-on-another-properties-value.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.property-is-unwanted-based-on-another-properties-value.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.rds-instance-type-is-compatible-with-the-rds-type.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.recordset-hostedzonename-is-a-superdomain-of-name.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.ref-validation-of-value.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.required-resource-properties-are-missing.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.resource-dependencies-are-not-circular.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.resource-ec2-security-group-ingress-properties.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.resource-elb-properties.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.resource-limit-not-exceeded.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.resource-name-limit-not-exceeded.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.resource-properties-are-invalid.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.resource-schema.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.resource-subnetroutetableassociation-properties.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.resources-have-appropriate-names.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.select-validation-of-parameters.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.snapstart-supports-the-configured-runtime.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.split-validation-of-parameters.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.sub-is-required-if-a-variable-is-used-in-a-string.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.sub-validation-of-parameters.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.template-description-can-only-be-a-string.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.template-description-limit.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.template-size-limit.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.tojsonstring-validation-of-parameters.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.unique-resource-and-parameter-names.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.validate-accesscontrol-are-set-with-ownershipcontrols.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.validate-aws-event-scheduleexpression-format.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.validate-parameters-for-in-a-nested-stack.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.validate-route53-recordsets.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.validate-the-configuration-of-the-metadata-section.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.validates-foreach-functions.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.validation-not-function-configuration.rule.yaml +49 -0
- package/rules/cfn/cfn.correctness.validationdomain-is-superdomain-of-domainname.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.arns-should-use-correctly-placed-pseudo-parameters.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.availability-zone-parameters-should-not-be-hardcoded.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-iam-resource-policies-syntax.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-if-a-list-that-allows-duplicates-has-any-duplicates.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-if-conditions-are-used.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-if-eol-lambda-function-runtimes-are-used-w2531.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-if-imageid-parameters-have-the-correct-type.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-if-mappings-are-used.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-if-parameters-are-used.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-if-parameters-have-a-valid-value-based-on-an-allowed-pattern.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-if-parameters-have-a-valid-value.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-obsolete-dependson-configuration-for-resources.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-outputs-using-importvalue.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-required-properties-for-lambda-if-the-deployment-package-is-a-zip-file.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-resources-with-auto-expiring-content-have-explicit-retention-period.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-resources-with-updatereplacepolicy-deletionpolicy-have-both.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.check-stateful-resources-have-a-set-updatereplacepolicy-deletionpolicy.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.checks-for-legacy-instance-type-generations.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.findinmap-keys-exist-in-the-map.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.fn-equals-will-always-return-true-or-false.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.mapping-attribute-limit.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.mapping-limit.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.mapping-name-limit.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.metadata-interface-parameters-exist.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.output-description-limit.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.output-limit.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.output-name-limit.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.parameter-limit.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.parameter-memory-size-attributes-should-have-max-and-min.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.parameter-name-limit.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.parameter-value-limit.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.ref-getatt-to-resource-that-is-available-when-conditions-are-applied.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.resource-limit.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.resource-name-limit.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.sub-isn-t-needed-if-it-doesn-t-have-a-variable-defined.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.sub-validation-of-parameters-w1019.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.template-description-limit-i1003.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.template-size-limit-i1002.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.use-sub-instead-of-join.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.validate-that-snapstart-is-configured-for-java11-runtimes.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.validate-that-snapstart-is-properly-configured.rule.yaml +49 -0
- package/rules/cfn/cfn.maintainability.warn-when-properties-are-configured-to-only-work-with-the-package-command.rule.yaml +49 -0
- package/rules/cfn/cfn.security.check-dynamic-references-secure-strings-are-in-supported-locations.rule.yaml +53 -0
- package/rules/cfn/cfn.security.check-for-noecho-references.rule.yaml +53 -0
- package/rules/cfn/cfn.security.check-iam-permission-configuration.rule.yaml +53 -0
- package/rules/cfn/cfn.security.check-if-iam-policies-are-properly-configured.rule.yaml +53 -0
- package/rules/cfn/cfn.security.check-if-password-properties-are-correctly-configured.rule.yaml +53 -0
- package/rules/cfn/cfn.security.controlling-access-to-an-s3-bucket-should-be-done-with-bucket-policies.rule.yaml +53 -0
- package/rules/php/php.correctness.abstract-method-outside-abstract-class.rule.yaml +36 -0
- package/rules/php/php.correctness.break-continue-outside-loop.rule.yaml +36 -0
- package/rules/php/php.correctness.case-insensitive-define.rule.yaml +36 -0
- package/rules/php/php.correctness.default-parameter-not-last.rule.yaml +36 -0
- package/rules/php/php.correctness.deprecated-filter-constant.rule.yaml +36 -0
- package/rules/php/php.correctness.deprecated-libxml-entity-loader.rule.yaml +36 -0
- package/rules/php/php.correctness.deprecated-unset-cast.rule.yaml +36 -0
- package/rules/php/php.correctness.duplicate-declaration.rule.yaml +36 -0
- package/rules/php/php.correctness.empty-array-literal-slot.rule.yaml +36 -0
- package/rules/php/php.correctness.empty-bracket-array-access.rule.yaml +36 -0
- package/rules/php/php.correctness.empty-code-block.rule.yaml +36 -0
- package/rules/php/php.correctness.empty-function-body.rule.yaml +36 -0
- package/rules/php/php.correctness.function-comparison.rule.yaml +36 -0
- package/rules/php/php.correctness.invalid-cookie-options.rule.yaml +36 -0
- package/rules/php/php.correctness.invalid-regex-literal.rule.yaml +36 -0
- package/rules/php/php.correctness.missing-member-visibility.rule.yaml +36 -0
- package/rules/php/php.correctness.nested-function-declaration.rule.yaml +36 -0
- package/rules/php/php.correctness.nested-switch.rule.yaml +36 -0
- package/rules/php/php.correctness.redundant-string-cast-concat.rule.yaml +36 -0
- package/rules/php/php.correctness.self-assignment.rule.yaml +36 -0
- package/rules/php/php.correctness.todo-fixme-marker.rule.yaml +36 -0
- package/rules/php/php.correctness.unknown-magic-method.rule.yaml +36 -0
- package/rules/php/php.correctness.useless-post-increment.rule.yaml +36 -0
- package/rules/php/php.correctness.useless-unset.rule.yaml +36 -0
- package/rules/php/php.performance.expensive-loop-condition.rule.yaml +36 -0
- package/rules/php/php.security.unsafe-new-static.rule.yaml +42 -0
- package/rules/ruby/ruby.bug-risk.assignment-in-condition.rule.yaml +42 -0
- package/rules/ruby/ruby.bug-risk.deprecated-uri-escape.rule.yaml +42 -0
- package/rules/ruby/ruby.bug-risk.division-by-zero.rule.yaml +42 -0
- package/rules/ruby/ruby.bug-risk.duplicate-hash-keys.rule.yaml +42 -0
- package/rules/ruby/ruby.bug-risk.exception-class-overwritten.rule.yaml +42 -0
- package/rules/ruby/ruby.bug-risk.raw-sql-without-squish.rule.yaml +42 -0
- package/rules/ruby/ruby.security.debugger-call.rule.yaml +53 -0
- package/rules/ruby/ruby.security.dynamic-code-execution.rule.yaml +54 -0
- package/rules/ruby/ruby.security.insecure-json-load.rule.yaml +53 -0
- package/rules/ruby/ruby.security.kernel-open.rule.yaml +53 -0
- package/rules/ruby/ruby.security.plaintext-password-in-callback.rule.yaml +46 -0
- package/rules/ruby/ruby.security.rails-link-to-blank-without-noopener.rule.yaml +48 -0
- package/rules/ruby/ruby.security.rails-output-unsafe.rule.yaml +47 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: cfn.security.check-if-iam-policies-are-properly-configured
|
|
5
|
+
title: Check if iam policies are properly configured
|
|
6
|
+
summary: Check if iam policies are properly configured
|
|
7
|
+
rationale: cfn-lint reports E2507 when Check if iam policies are properly configured.
|
|
8
|
+
aliases:
|
|
9
|
+
- CFLIN-E2507
|
|
10
|
+
tags:
|
|
11
|
+
- cfn
|
|
12
|
+
- cfn-lint
|
|
13
|
+
- cloudformation
|
|
14
|
+
- e2507
|
|
15
|
+
- rules-catalog
|
|
16
|
+
stability: stable
|
|
17
|
+
appliesTo: file
|
|
18
|
+
detection:
|
|
19
|
+
kind: pattern
|
|
20
|
+
references:
|
|
21
|
+
- kind: url
|
|
22
|
+
title: AWS CloudFormation Linter (E2507)
|
|
23
|
+
url: https://github.com/aws-cloudformation/cfn-lint
|
|
24
|
+
scope:
|
|
25
|
+
languages:
|
|
26
|
+
- all
|
|
27
|
+
paths:
|
|
28
|
+
include:
|
|
29
|
+
- "**/*.yaml"
|
|
30
|
+
- "**/*.yml"
|
|
31
|
+
- "**/*.json"
|
|
32
|
+
exclude:
|
|
33
|
+
- "**/node_modules/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: cfn.lint.finding
|
|
37
|
+
bind: finding
|
|
38
|
+
where:
|
|
39
|
+
- path: ruleId
|
|
40
|
+
equals: E2507
|
|
41
|
+
emit:
|
|
42
|
+
finding:
|
|
43
|
+
category: security.configuration
|
|
44
|
+
severity: high
|
|
45
|
+
confidence: 0.9
|
|
46
|
+
tags:
|
|
47
|
+
- cfn
|
|
48
|
+
- cloudformation
|
|
49
|
+
message:
|
|
50
|
+
title: Check if iam policies are properly configured
|
|
51
|
+
summary: "${captures.finding.text} matches cfn-lint E2507."
|
|
52
|
+
remediation:
|
|
53
|
+
summary: Resolve the cfn-lint E2507 finding in this CloudFormation template.
|
package/rules/cfn/cfn.security.check-if-password-properties-are-correctly-configured.rule.yaml
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: cfn.security.check-if-password-properties-are-correctly-configured
|
|
5
|
+
title: Check if password properties are correctly configured
|
|
6
|
+
summary: Check if password properties are correctly configured
|
|
7
|
+
rationale: cfn-lint reports W2501 when Check if password properties are correctly configured.
|
|
8
|
+
aliases:
|
|
9
|
+
- CFLIN-W2501
|
|
10
|
+
tags:
|
|
11
|
+
- cfn
|
|
12
|
+
- cfn-lint
|
|
13
|
+
- cloudformation
|
|
14
|
+
- w2501
|
|
15
|
+
- rules-catalog
|
|
16
|
+
stability: stable
|
|
17
|
+
appliesTo: file
|
|
18
|
+
detection:
|
|
19
|
+
kind: pattern
|
|
20
|
+
references:
|
|
21
|
+
- kind: url
|
|
22
|
+
title: AWS CloudFormation Linter (W2501)
|
|
23
|
+
url: https://github.com/aws-cloudformation/cfn-lint
|
|
24
|
+
scope:
|
|
25
|
+
languages:
|
|
26
|
+
- all
|
|
27
|
+
paths:
|
|
28
|
+
include:
|
|
29
|
+
- "**/*.yaml"
|
|
30
|
+
- "**/*.yml"
|
|
31
|
+
- "**/*.json"
|
|
32
|
+
exclude:
|
|
33
|
+
- "**/node_modules/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: cfn.lint.finding
|
|
37
|
+
bind: finding
|
|
38
|
+
where:
|
|
39
|
+
- path: ruleId
|
|
40
|
+
equals: W2501
|
|
41
|
+
emit:
|
|
42
|
+
finding:
|
|
43
|
+
category: security.configuration
|
|
44
|
+
severity: medium
|
|
45
|
+
confidence: 0.85
|
|
46
|
+
tags:
|
|
47
|
+
- cfn
|
|
48
|
+
- cloudformation
|
|
49
|
+
message:
|
|
50
|
+
title: Check if password properties are correctly configured
|
|
51
|
+
summary: "${captures.finding.text} matches cfn-lint W2501."
|
|
52
|
+
remediation:
|
|
53
|
+
summary: Resolve the cfn-lint W2501 finding in this CloudFormation template.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: cfn.security.controlling-access-to-an-s3-bucket-should-be-done-with-bucket-policies
|
|
5
|
+
title: Controlling access to an s3 bucket should be done with bucket policies
|
|
6
|
+
summary: Controlling access to an s3 bucket should be done with bucket policies
|
|
7
|
+
rationale: cfn-lint reports W3045 when Controlling access to an s3 bucket should be done with bucket policies.
|
|
8
|
+
aliases:
|
|
9
|
+
- CFLIN-W3045
|
|
10
|
+
tags:
|
|
11
|
+
- cfn
|
|
12
|
+
- cfn-lint
|
|
13
|
+
- cloudformation
|
|
14
|
+
- w3045
|
|
15
|
+
- rules-catalog
|
|
16
|
+
stability: stable
|
|
17
|
+
appliesTo: file
|
|
18
|
+
detection:
|
|
19
|
+
kind: pattern
|
|
20
|
+
references:
|
|
21
|
+
- kind: url
|
|
22
|
+
title: AWS CloudFormation Linter (W3045)
|
|
23
|
+
url: https://github.com/aws-cloudformation/cfn-lint
|
|
24
|
+
scope:
|
|
25
|
+
languages:
|
|
26
|
+
- all
|
|
27
|
+
paths:
|
|
28
|
+
include:
|
|
29
|
+
- "**/*.yaml"
|
|
30
|
+
- "**/*.yml"
|
|
31
|
+
- "**/*.json"
|
|
32
|
+
exclude:
|
|
33
|
+
- "**/node_modules/**"
|
|
34
|
+
match:
|
|
35
|
+
fact:
|
|
36
|
+
kind: cfn.lint.finding
|
|
37
|
+
bind: finding
|
|
38
|
+
where:
|
|
39
|
+
- path: ruleId
|
|
40
|
+
equals: W3045
|
|
41
|
+
emit:
|
|
42
|
+
finding:
|
|
43
|
+
category: security.configuration
|
|
44
|
+
severity: medium
|
|
45
|
+
confidence: 0.85
|
|
46
|
+
tags:
|
|
47
|
+
- cfn
|
|
48
|
+
- cloudformation
|
|
49
|
+
message:
|
|
50
|
+
title: Controlling access to an s3 bucket should be done with bucket policies
|
|
51
|
+
summary: "${captures.finding.text} matches cfn-lint W3045."
|
|
52
|
+
remediation:
|
|
53
|
+
summary: Resolve the cfn-lint W3045 finding in this CloudFormation template.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.abstract-method-outside-abstract-class
|
|
5
|
+
title: Keep abstract methods inside abstract classes
|
|
6
|
+
summary: Only abstract classes may declare abstract methods.
|
|
7
|
+
rationale: Abstract methods in concrete classes cannot be implemented correctly and will fail at compile time.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: stable
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.abstract-method-outside-abstract-class
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.language
|
|
27
|
+
severity: high
|
|
28
|
+
confidence: 0.95
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Keep abstract methods inside abstract classes
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.abstract-method-outside-abstract-class."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: Abstract methods in concrete classes cannot be implemented correctly and will fail at compile time.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.break-continue-outside-loop
|
|
5
|
+
title: Use break and continue only inside loops or switch
|
|
6
|
+
summary: "break and continue outside a loop or switch block are invalid control flow."
|
|
7
|
+
rationale: Misplaced break or continue statements usually indicate unfinished refactors or copy-paste errors.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: stable
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.break-continue-outside-loop
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.control-flow
|
|
27
|
+
severity: high
|
|
28
|
+
confidence: 0.9
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Use break and continue only inside loops or switch
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.break-continue-outside-loop."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: Misplaced break or continue statements usually indicate unfinished refactors or copy-paste errors.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.case-insensitive-define
|
|
5
|
+
title: Avoid case-insensitive define calls
|
|
6
|
+
summary: The third argument to define() for case-insensitive constants is deprecated.
|
|
7
|
+
rationale: Case-insensitive constants behave inconsistently across PHP versions and should be replaced with normal constants.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: stable
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.case-insensitive-define
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.language
|
|
27
|
+
severity: medium
|
|
28
|
+
confidence: 0.95
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Avoid case-insensitive define calls
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.case-insensitive-define."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: Case-insensitive constants behave inconsistently across PHP versions and should be replaced with normal constants.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.default-parameter-not-last
|
|
5
|
+
title: Place default parameters last
|
|
6
|
+
summary: Parameters with default values must appear after required parameters.
|
|
7
|
+
rationale: Misordered defaults are invalid PHP and break callers that rely on positional arguments.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: stable
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.default-parameter-not-last
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.language
|
|
27
|
+
severity: high
|
|
28
|
+
confidence: 0.95
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Place default parameters last
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.default-parameter-not-last."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: Misordered defaults are invalid PHP and break callers that rely on positional arguments.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.deprecated-filter-constant
|
|
5
|
+
title: Replace deprecated filter constants
|
|
6
|
+
summary: Several FILTER_* constants are deprecated and should not be used in new code.
|
|
7
|
+
rationale: Deprecated filter constants may be removed and can silently change sanitization behavior across PHP versions.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: stable
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.deprecated-filter-constant
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.language
|
|
27
|
+
severity: medium
|
|
28
|
+
confidence: 0.95
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Replace deprecated filter constants
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.deprecated-filter-constant."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: Deprecated filter constants may be removed and can silently change sanitization behavior across PHP versions.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.deprecated-libxml-entity-loader
|
|
5
|
+
title: Remove deprecated libxml_disable_entity_loader calls
|
|
6
|
+
summary: libxml_disable_entity_loader() is deprecated and no longer needed on supported PHP versions.
|
|
7
|
+
rationale: The helper is deprecated and can give a false sense of protection compared to modern libxml defaults.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: stable
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.deprecated-libxml-entity-loader
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.language
|
|
27
|
+
severity: medium
|
|
28
|
+
confidence: 0.95
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Remove deprecated libxml_disable_entity_loader calls
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.deprecated-libxml-entity-loader."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: The helper is deprecated and can give a false sense of protection compared to modern libxml defaults.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.deprecated-unset-cast
|
|
5
|
+
title: Remove deprecated (unset) casts
|
|
6
|
+
summary: "The `(unset)` cast is deprecated and should not be used in modern PHP code."
|
|
7
|
+
rationale: Deprecated casts break on newer PHP versions and hide intent compared to explicit unset calls.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: stable
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.deprecated-unset-cast
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.language
|
|
27
|
+
severity: medium
|
|
28
|
+
confidence: 0.95
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Remove deprecated (unset) casts
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.deprecated-unset-cast."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: Deprecated casts break on newer PHP versions and hide intent compared to explicit unset calls.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.duplicate-declaration
|
|
5
|
+
title: Remove duplicate declarations
|
|
6
|
+
summary: Functions, classes, traits, and interfaces must be declared only once per file.
|
|
7
|
+
rationale: Duplicate declarations cause fatal errors and usually indicate incomplete refactors or copy-paste mistakes.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: stable
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.duplicate-declaration
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.language
|
|
27
|
+
severity: high
|
|
28
|
+
confidence: 0.95
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Remove duplicate declarations
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.duplicate-declaration."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: Duplicate declarations cause fatal errors and usually indicate incomplete refactors or copy-paste mistakes.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.empty-array-literal-slot
|
|
5
|
+
title: Remove empty slots from array literals
|
|
6
|
+
summary: Array literals with consecutive commas define empty slots that are easy to miss during review.
|
|
7
|
+
rationale: Empty array slots usually indicate typos or incomplete edits and can produce unexpected sparse arrays.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: stable
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.empty-array-literal-slot
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.language
|
|
27
|
+
severity: medium
|
|
28
|
+
confidence: 0.95
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Remove empty slots from array literals
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.empty-array-literal-slot."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: Empty array slots usually indicate typos or incomplete edits and can produce unexpected sparse arrays.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.empty-bracket-array-access
|
|
5
|
+
title: Avoid empty bracket array reads
|
|
6
|
+
summary: "Reading from an array with `$value[]` appends null and returns the new element."
|
|
7
|
+
rationale: Empty bracket reads are rarely intentional and usually indicate a mistaken append or missing index.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: stable
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.empty-bracket-array-access
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.language
|
|
27
|
+
severity: medium
|
|
28
|
+
confidence: 0.9
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Avoid empty bracket array reads
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.empty-bracket-array-access."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: Empty bracket reads are rarely intentional and usually indicate a mistaken append or missing index.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.empty-code-block
|
|
5
|
+
title: Remove empty code blocks
|
|
6
|
+
summary: Empty control-flow blocks hide missing logic or unfinished branches.
|
|
7
|
+
rationale: Empty blocks make intent unclear and often survive incomplete refactors.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: experimental
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.empty-code-block
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.maintainability
|
|
27
|
+
severity: low
|
|
28
|
+
confidence: 0.55
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Remove empty code blocks
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.empty-code-block."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: Empty blocks make intent unclear and often survive incomplete refactors.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.empty-function-body
|
|
5
|
+
title: Implement or remove empty functions
|
|
6
|
+
summary: Non-abstract functions with empty bodies hide missing behavior.
|
|
7
|
+
rationale: Empty function bodies often indicate stubs that were never completed or dead placeholders.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: stable
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.empty-function-body
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.maintainability
|
|
27
|
+
severity: low
|
|
28
|
+
confidence: 0.9
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Implement or remove empty functions
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.empty-function-body."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: Empty function bodies often indicate stubs that were never completed or dead placeholders.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.function-comparison
|
|
5
|
+
title: Avoid comparing function values
|
|
6
|
+
summary: Comparing functions or callables with equality operators is unreliable.
|
|
7
|
+
rationale: Function comparisons rarely express intent correctly and usually indicate a logic bug.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: experimental
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.function-comparison
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.language
|
|
27
|
+
severity: low
|
|
28
|
+
confidence: 0.55
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Avoid comparing function values
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.function-comparison."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: Function comparisons rarely express intent correctly and usually indicate a logic bug.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
apiVersion: critiq.dev/v1alpha1
|
|
2
|
+
kind: Rule
|
|
3
|
+
metadata:
|
|
4
|
+
id: php.correctness.invalid-cookie-options
|
|
5
|
+
title: Use valid cookie option keys
|
|
6
|
+
summary: setcookie and setrawcookie option arrays only accept documented keys.
|
|
7
|
+
rationale: Invalid cookie option keys are ignored at runtime and can leave security attributes unset.
|
|
8
|
+
tags:
|
|
9
|
+
- correctness
|
|
10
|
+
- php
|
|
11
|
+
- rules-catalog
|
|
12
|
+
stability: stable
|
|
13
|
+
appliesTo: block
|
|
14
|
+
scope:
|
|
15
|
+
languages:
|
|
16
|
+
- php
|
|
17
|
+
paths:
|
|
18
|
+
include:
|
|
19
|
+
- "**/*.php"
|
|
20
|
+
match:
|
|
21
|
+
fact:
|
|
22
|
+
kind: php.correctness.invalid-cookie-options
|
|
23
|
+
bind: issue
|
|
24
|
+
emit:
|
|
25
|
+
finding:
|
|
26
|
+
category: correctness.language
|
|
27
|
+
severity: medium
|
|
28
|
+
confidence: 0.95
|
|
29
|
+
tags:
|
|
30
|
+
- correctness
|
|
31
|
+
- php
|
|
32
|
+
message:
|
|
33
|
+
title: Use valid cookie option keys
|
|
34
|
+
summary: "`${captures.issue.text}` matches php.correctness.invalid-cookie-options."
|
|
35
|
+
remediation:
|
|
36
|
+
summary: Invalid cookie option keys are ignored at runtime and can leave security attributes unset.
|