Unchecked warnings

Alertes de compilation

Ce site ne sera plus alimenté de contenu après août 2014. Tous les nouveaux articles seront redigés pour www.waitingforcode.com

Au moment de compilation on peut se confronter à des unchecked warnings. Ces alertes liées à des fragments de code potentiellement dangereux ont pout l'objectif de sensibiliser le développeur. Le compilateur les affiche s'il ne dispose pas de suffisament d'informations pour vérifier la cohérence du code. Regardons comment se présentent ces avertissements dans le code :

import java.util.TreeSet;
public class Unchecked {
    public static void main(String[] args) {
        TreeSet tree = new TreeSet();
        tree.add("unchecked warning");
    }
}

Le compilateur fera son travail. Cependant à côté de cela, il nous affichera également les notes d'alertes :

Note: Unchecked.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

L'élimination de ces messages peut se faire selon une des deux manières :

  1. En spécifiant le type attendu entre crochets <> :
    import java.util.TreeSet;
    public class UncheckedCorrect {
        public static void main(String[] args) {
            TreeSet<String> tree = new TreeSet<String>();
          tree.add("unchecked warning");
        }
    }
    
  2. En rajoutant une annotation @SuppressWarnings :
    import java.util.TreeSet;
    @SuppressWarnings({"unchecked"})
    public class UncheckedCorrect {
        public static void main(String[] args) {
            TreeSet tree = new TreeSet();
            tree.add("unchecked warning");
        }
    }
    

La première méthode est sans doute meilleure. A part de supprimer une alerte au moment de compilation, elle introduit une meilleure clarté du code. Désormais de nouveaux développeurs qui arriveront sur le projet sauront que TreeSet peut accepter uniquement des chaînes de caractères.

Bartosz KONIECZNY Standards du codage

Une question ? Une remarque ?

*

*

Un conseil Symfony2

Comment exécuter son code dans le listener ?

Pour ce faire il suffit de surcharger la méthode handle(Request $request, $type = self::MASTER_REQUEST, $catch = true) qui se trouve dans AppKernel.php .

Une nouvelle méthode handle() peut se présenter ainsi :

function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true)
{
  echo 'handle request';

  return parent::handle($request, $type, $catch);
}