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 CSS

Si vous rencontrez un problème lors de l'utilisation du filtre de transparence pour IE6.

La définition qui permet d'utiliser la transparence sous IE6 pour la classe textFooter se présente ainsi :

.textFooter { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', src='/images/bottom.png', sizingMethod='scale'); background: none; }

Cependant, il se peut qu'elle ne fonctionne pas correctement. Dans ce cas-là, commencez à la débugger par l'ajout du nom de domaine dans l'attribut src. On obtiendrait alors :
.textFooter { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', src='http://mysite.com/images/bottom.png', sizingMethod='scale'); background: none; }