javascript.lang.correctness.useless-assign.useless-assignment

profile photo of semgrepsemgrep
Author
4,564
Download Count*

$X is assigned twice; the first assignment is useless

Run Locally

Run in CI

Defintion

rules:
  - id: useless-assignment
    patterns:
      - pattern: |
          $X = $Y;
          $X = $Z;
      - pattern-not: |
          $X = $Y;
          $X = <... $X ...>;
    message: "`$X` is assigned twice; the first assignment is useless"
    languages:
      - javascript
      - typescript
    severity: INFO
    metadata:
      category: correctness
      technology:
        - javascript
      license: Commons Clause License Condition v1.0[LGPL-2.1-only]

Examples

useless-assign.js

// ruleid:useless-assignment
var x1 = 1;
x1 = 2;

// ruleid:useless-assignment
let x2 = 1;
x2 = 2;

// ruleid:useless-assignment
x3 = 1;
x3 = 2;

// ok:useless-assignment
x4 = {value1: 42};
x4 = {x4, value2: 43};

// ok:useless-assignment
x5 = {value1: 42};
x5 = {...x5, value2: 43};

// ok:useless-assignment
y = [1, 2];
y = y.map(function(e) { return e * 2; });

// ok:useless-assignment
z = [1, 2];
z = z.map(e => e * 2);

// ok:useless-assignment
a = "Hi ";
a += "Mom";

// ok:useless-assignment
b = i;
b = f(1, b);

// ok:useless-assignment
c = j;
c = f(1, g(c));