Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

False Negative: ContinueInFalseLoop.ql misses `do ... while(false)` loops once `false` is stored in a local.

Ouverte
#21,540 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
68/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Calme
Stack technique
java
Domaine
devtools

Piste de recherche

Commencez par Likely Bugs/Statements/ContinueInFalseLoop.ql et examinez comment il évalue les conditions des boucles do lorsque false est stocké dans une variable locale. Examinez ensuite les cas concernés PosCase1_Var1.java et PosCase1_Var5.java, puis exécutez les tests du checker pour confirmer que les deux cas sont signalés, tout en conservant la couverture du comportement existant pour le littéral false.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

False Negative: ContinueInFalseLoop.ql misses do ... while(false) loops once false is stored in a local.

Version
codeql 2.24.3

Checker

  • Checker id: Likely Bugs/Statements/ContinueInFalseLoop.ql
  • Checker description: This checker detects a 'continue' statement inside a 'do' loop whose condition is always false, meaning the continue will never actually re-run the loop body.

Description of the false negative

Both samples are still do loops whose condition is false and therefore cannot loop back after continue. The only difference is that the literal false is first assigned to a local variable.

That should still be a direct hit for Likely Bugs/Statements/ContinueInFalseLoop.ql.

Affected test cases

PosCase1_Var1.java

never is a constant false value, so the continue still cannot re-enter the loop body.

// A do loop with a literal false condition contains a continue statement targeting that same loop should be flagged as a positive case.
package scensct.var.pos;

public class PosCase1_Var1 {
    public static void main(String[] args) {
        final boolean never = false;
        do {
            // continue inside do with false condition
            continue;
        } while (never);
    }
}
PosCase1_Var5.java

flag is initialized from Boolean.FALSE and never changed. This is still the same impossible loop-back case.

// A do loop with a literal false condition contains a continue statement targeting that same loop should be flagged as a positive case.
package scensct.var.pos;

public class PosCase1_Var5 {
    public static void main(String[] args) {
        boolean flag = Boolean.FALSE;
        do {
            // continue inside do with false condition
            continue;
        } while (flag);
    }
}

Cause analysis

The miss is surprisingly basic. The query appears to require a literal false at the loop condition and loses the result as soon as that same value is stored in a local.

For developers, these are the same bug. Whether the condition is written as while (false) or while (never) should not matter.

References

None known.

Langage dominant
CodeQL
Étoiles
10.1k
Forks
2.1k
Merge moyen
2 j 16 h
PR mergées (30 j)
143

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de github/codeql

Toutes les issues de github/codeql

Issues similaires

Plus d'issues DevTools

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.