python.lang.maintainability.useless-literal.useless-literal

profile photo of semgrepsemgrep
Author
unknown
Download Count*

key $X is uselessly assigned twice

Run Locally

Run in CI

Defintion

rules:
  - id: useless-literal
    message: key `$X` is uselessly assigned twice
    languages:
      - python
    severity: WARNING
    patterns:
      - pattern-either:
          - pattern: |
              {..., $X: $A, ..., $X: $B, ...}
          - pattern: |
              dict(..., ($X, $A), ..., ($X, $B), ...)
      - focus-metavariable: $X
    metadata:
      category: maintainability
      references:
        - https://docs.python.org/3/library/stdtypes.html#mapping-types-dict
      technology:
        - python
      license: Commons Clause License Condition v1.0[LGPL-2.1-only]

Examples

useless-literal.py

# ruleid: useless-literal
d = dict((1, "a"), (2, "b"), (1, "a"))

d = dict(
    # ruleid: useless-literal
    (1, "a"),
    (2, "b"),
    (1, "a"),
)

# ruleid: useless-literal
d = {1: "a", 2: "b", 1: "a"}
d = {
    # ruleid: useless-literal
    1: "a",
    2: "b",
    # ruleid: useless-literal
    1: "a",
}
# ruleid: useless-literal
d = {"a": 1, "a": 1}

# ok: useless-literal
d = {1: "a", 2: "b", 3: "a"}