Les opérateurs ternaires de Sonar se plaignent ne doivent pas être imbriqués.
Est-il possible de supprimer cette plainte depuis que je suis débutant à Java, je voudrais une aide dans ce numéro.
object form = null;
if(objs.getForm() != null)
form = objs.getForm();
String getName = form != null
? referenceObjType + form.getName()
: "" + (objs.getType() == null ? ""
: "(" //$NON-NLS-1$
+ objs.Type().getTypeName() + ")"
+ objs.getName());
3 Réponses :
Vous devez utiliser des parenthèses pour regrouper le deuxième opérateur ternaire:
"" + objs.getType() == null
Après avoir utilisé la parenthèse, je reçois des opérateurs ternaires ne doit pas être imbriqué (calmar: S3358) se plaindre @Oh God Spiders
C'est probablement parce que vous pouvez probablement voir à partir de vos propres opérateurs ternaires imbriqués, ne sont pas vraiment parfaits pour la production de code lisible. Vous devriez penser à simplement réécrire le code complètement et à utiliser un StringBuilder et des blocs normaux si-ase-là. Mais si vous voulez continuer à utiliser des opérateurs ternaires imbriqués, voir: Les opérateurs ternaires ne doivent pas être imbriqués (Squid: S3358) être configuré
Si vous êtes un débutant avec Java, je m'abstiendrais d'utiliser des opérateurs ternaires afin que vous puissiez vraiment comprendre ce que chaque énoncé fait.
Il est difficile de vous donner une réponse complète depuis que je ne connais pas votre problème d'origine et je ne peux pas voir autre code mais j'espère que cela aide p> p>
Qu'en est-il de quelque chose comme ça? Les opérateurs ternaires imbriqués sont assez mauvaises.
Vous pouvez rechercher la description des règles de sonar. Par exemple, ici: Jira.sonarsource.com/browse/rspec-2583 La déclaration indique que le bloc "sinon" de votre expression ne peut jamais être atteint. Donc, la forme ne peut jamais être nulle ou vous appelez un formulaire. avant la déclaration donnée.
@Tomstroemer alors quelle sera l'approche? Pouvez-vous s'il vous plaît fournir un échantillon
Si votre formulaire ne peut pas être null, vous ne pouvez qu'utiliser
string getname = référenceObjtype + form.getname () code>. Pour plus d'informations, vous devez montrer plus de code. D'où vient la variable de forme? L'accédez-vous avant le code que vous avez montré?@Tomstroemer Oui, je fais une variable de formulaire d'accès avant cette condition. J'ai édité le code.Veuillez trouver ci-dessus