yaml.semgrep.unnecessary-parent.unnecessary-parent-operator

profile photo of semgrepsemgrep
Author
225
Download Count*

Unnecessary parent operator. Remove one to fix.

Run Locally

Run in CI

Defintion

rules:
  - id: unnecessary-parent-operator
    message: Unnecessary parent operator. Remove one to fix.
    languages:
      - yaml
    patterns:
      - pattern-inside: "rules: [..., $RULE, ...]"
      - pattern-either:
          - patterns:
              - pattern: |
                  pattern-either:
                  - $THING1
                  - ...
              - pattern-not: |
                  pattern-either:
                  - $THING1
                  - $THING2
                  - ...
          - patterns:
              - pattern: |
                  patterns:
                  - $THING1
                  - ...
              - pattern-not: |
                  patterns:
                  - $THING1
                  - $THING2
                  - ...
          - pattern: |
              pattern-either:
              - ...
              - pattern-either:
                - ...
    severity: WARNING
    metadata:
      category: best-practice
      technology:
        - semgrep
      license: Commons Clause License Condition v1.0[LGPL-2.1-only]

Examples

unnecessary-parent.test.yaml

rules:
  - id: unchecked-subprocess-call1
    # ruleid: unnecessary-parent-operator
    patterns:
      - pattern-either:
          - pattern: subprocess.call1(...)
          - pattern: subprocess.call2(...)
    message: test
    severity: WARNING
    fix: subprocess.check_call(...)
  - id: unchecked-subprocess-call2
    # ok: unnecessary-parent-operator
    patterns:
      - pattern-either:
          - pattern: subprocess.call1(...)
          - pattern: subprocess.call2(...)
      - pattern: subprocess.call3(...)
    message: test
    severity: WARNING
    fix: subprocess.check_call(...)
  - id: unchecked-subprocess-call3
    # ruleid: unnecessary-parent-operator
    pattern-either:
      - patterns:
          - pattern: subprocess.call1(...)
          - pattern: subprocess.call2(...)
    message: test
    severity: WARNING
    fix: subprocess.check_call(...)
  - id: unchecked-subprocess-call4
    # ok: unnecessary-parent-operator
    pattern-either:
      - patterns:
          - pattern: subprocess.call1(...)
          - pattern: subprocess.call2(...)
      - pattern: subprocess.call3(...)
    message: test
    severity: WARNING
    fix: subprocess.check_call(...)
  - id: unchecked-subprocess-call5
    # ruleid: unnecessary-parent-operator
    pattern-either:
      - pattern: subprocess.call1(...)
    message: test
    severity: WARNING
    fix: subprocess.check_call(...)
  - id: unchecked-subprocess-call6
    # ok: unnecessary-parent-operator
    pattern-either:
      - pattern: subprocess.call1(...)
      - pattern: subprocess.call2(...)
    message: test
    severity: WARNING
    fix: subprocess.check_call(...)
  - id: unchecked-subprocess-call7
    # ruleid: unnecessary-parent-operator
    patterns:
      - pattern: subprocess.call1(...)
    message: test
    severity: WARNING
    fix: subprocess.check_call(...)
  - id: unchecked-subprocess-call8
    # ok: unnecessary-parent-operator
    patterns:
      - pattern: subprocess.call1(...)
      - pattern: subprocess.call2(...)
    message: test
    severity: WARNING
    fix: subprocess.check_call(...)