Skip to content

[java] New rule IdenticalConditionalBranches#6083

Merged
adangel merged 5 commits intopmd:mainfrom
zbynek:useless-condition
Oct 24, 2025
Merged

[java] New rule IdenticalConditionalBranches#6083
adangel merged 5 commits intopmd:mainfrom
zbynek:useless-condition

Conversation

@zbynek
Copy link
Copy Markdown
Contributor

@zbynek zbynek commented Sep 21, 2025

Describe the PR

Add a rule for finding useless ifs and ternary expressions.

Proposed Rule Name: IdenticalConditionalBranches

Proposed Category: Error Prone

Description:
Conditional statement that does the same thing when the condition is true and false
is either incorrect (one of the branches should be changed) or redundant
(can be replaced by one of its branches).

Code Sample:

class Test {
    int method1() {
        if (Math.random() > 0.5) {
            return 1;
        } else {
            return 1;
        }
    }
    int method2() {
        return Math.random() > 0.5 ? 1 : 1;
    }
}

Possible Properties: none

Related issues

  • Fix #

Ready?

  • Added unit tests for fixed bug/feature
  • Passing all unit tests
  • Complete build ./mvnw clean verify passes (checked automatically by github actions)
  • Added (in-code) documentation (if needed)

@zbynek zbynek marked this pull request as draft September 21, 2025 09:42
@pmd-actions-helper
Copy link
Copy Markdown
Contributor

pmd-actions-helper bot commented Sep 21, 2025

Documentation Preview

Compared to main:
This changeset changes 0 violations,
introduces 237 new violations, 0 new errors and 0 new configuration errors,
removes 0 violations, 0 errors and 0 configuration errors.

Regression Tester Report

(comment created at 2025-10-24 10:46:18+00:00 for ffa480c)

@zbynek zbynek marked this pull request as ready for review September 27, 2025 12:53
@adangel adangel added the a:new-rule Proposal to add a new built-in rule label Oct 7, 2025
Copy link
Copy Markdown
Member

@oowekyala oowekyala left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea, thank you

I wonder if another name would be more appropriate. Maybe "IdenticalIfStatementBranches". For one I'm not a fan of the word "useless" as it feels a bit rough, but that's secondary. The main reason is that "UselessCondition" sounds a bit vague and could be confused with a rule that checks conditions that are always true/false for instance. Also if-statements are not the only ones that have conditions (see loops), but they're the only ones checked by this rule.

@zbynek zbynek force-pushed the useless-condition branch from caecdc2 to 6ef2900 Compare October 20, 2025 06:55
@oowekyala oowekyala changed the title [java] new rule for useless conditions [java] New rule IdenticalConditionalBranches Oct 22, 2025
Copy link
Copy Markdown
Member

@adangel adangel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

I'll update the release notes and merge it for 7.18.0.

@adangel adangel added this to the 7.18.0 milestone Oct 24, 2025
@adangel adangel merged commit 643ac55 into pmd:main Oct 24, 2025
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a:new-rule Proposal to add a new built-in rule

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants