Code Quality

Dead Code in Java: How to Identify and Eliminate It

Dead code in Java includes unreachable statements after return/throw, unused private methods, and branches that can never be true. Some are compiler errors; others need tools.


❌ Unreachable and Dead Code

public class OrderProcessor {
    public double processOrder(Order order) {
        if (order == null) throw new IllegalArgumentException('null');
        return calculateTotal(order);
        System.out.println('Processing done');  // Unreachable!
    }
    private void sendLegacyEmail(Order o) {  // Never called!
        // Old implementation, replaced but not removed
    }
}

✅ Cleaned Up

public class OrderProcessor {
    public double processOrder(Order order) {
        if (order == null) throw new IllegalArgumentException('null');
        return calculateTotal(order);
    }
    private double calculateTotal(Order order) {
        return order.getItems().stream().mapToDouble(Item::getPrice).sum();
    }
}
💡

Pro tip: SonarQube's squid:S1172 and squid:S1854 rules find dead code that compilers miss. Run it in CI to prevent new dead code from entering the codebase.

Paste this code into LearnCodeGuide

Detect Java vulnerabilities and bugs automatically with AI-powered analysis.

Analyze Java Code →

Related Guides

Java Long MethodJava Duplicate CodeJava Magic Numbers