---
title: "Dead Code"
type: "code-smell"
slug: "dead-code"
url: "http://localhost:3000/en/smells/dead-code.md"
category: "Dispensables"
description: "A variable, parameter, field, method or class is no longer used (usually because it’s obsolete)."
---
# Dead Code

> A variable, parameter, field, method or class is no longer used (usually because it’s obsolete).

## Signs and Symptoms

A variable, parameter, field, method or class is no longer used (usually because it’s obsolete).

## Reasons for the Problem

When requirements for the software have changed or corrections have been made, nobody had time to clean up the old code.

Such code could also be found in complex conditionals, when one of the branches becomes unreachable (due to error or other circumstances).

## Payoff

* Reduced code size.
* Simpler support.
## Relations

**Treated by**

- [Inline Class](/en/inline-class.md)
- [Collapse Hierarchy](/en/collapse-hierarchy.md)
- [Remove Parameter](/en/remove-parameter.md)


## Detected by

- **sonar** `S1481` — Unused local variables should be removed (https://rules.sonarsource.com/java/rspec-1481/)
- **sonar** `S1172` — Unused function parameters should be removed (https://rules.sonarsource.com/java/rspec-1172/)
- **sonar** `S1068` — Unused "private" fields should be removed (https://rules.sonarsource.com/java/rspec-1068/)
- **sonar** `S1144` — Unused "private" methods should be removed (https://rules.sonarsource.com/java/rspec-1144/)
- **sonar** `S1854` — Unused assignments should be removed (https://rules.sonarsource.com/java/rspec-1854/)
- **eslint** `no-unused-vars` — Disallow unused variables (https://eslint.org/docs/latest/rules/no-unused-vars)
- **eslint** `no-unused-private-class-members` — Disallow unused private class members (https://eslint.org/docs/latest/rules/no-unused-private-class-members)
