es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

SonarCube C# Cambie esta condición para que no siempre se evalúe como ‘false’; algún código posterior nunca se ejecuta

Sonar Qube muestra el mensaje “Cambia esta condición para que no se evalúe siempre como ‘falsa’; algún código posterior nunca se ejecuta” para la condición if (isZeroRulePassed & isAllRulesPassed).
¿Qué hay de malo en este código?

var isZeroRulePassed = results.All(x => !x.Result);
var isAllRulesPassed = false;
    if (isZeroRulePassed)
    {
        switch (isSubrogation)
        {
            case true when Sum < 500000:
                SimpleRulesSet.ForEach(x =>
                results.Add((RuleResult)x.DynamicInvoke()));
                isAllRulesPassed = results.All(x => !x.Result);
                break;
            case false when Sum < 50000:
                FullRulesSet.ForEach(
                    x => results.Add((RuleResult)x.DynamicInvoke()));
                isAllRulesPassed = results.All(x => !x.Result);
                break;
        }
    }
if (isZeroRulePassed & isAllRulesPassed)
{// Some code}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con este código es que la variable isAllRulesPassed se inicializa como false fuera de la declaración switch, y luego se utiliza en la declaración if sin ser actualizada correctamente dentro de la declaración switch. Esto significa que si la declaración switch no se ejecuta, la variable isAllRulesPassed seguirá siendo false, lo que resulta en que la declaración if siempre se evalúe como falsa y el código subsiguiente nunca se ejecute. La variable isAllRulesPassed debería actualizarse correctamente dentro de cada caso de la declaración switch para evitar este problema.

Comments are closed.