3 votes

L'annotation des ressources dans les servlets déclenche squid:S2226

Lorsque j'essaie d'utiliser l'annotation Resource dans une servlet, Sonar déclenche la règle squid:S2226 "Les servlets ne devraient pas avoir de champs d'instance mutables" et me demande de rendre la variable finale ou statique.

Mais l'injection de ressources ne fonctionne pas et les variables finales et statiques.

Est-ce un bogue dans le sonar ou l'injection de ressources n'est plus recommandée dans les servlets ?

public class MyServlet extends HttpServlet {
    @Resource(name = "jdbc/database")
    private DataSource dataSource;
}

Une énigme similaire apparaît avec ServletConfig

private ServletConfig config;

@Override
public void init(ServletConfig config) throws ServletException {
    this.config = config;
}

Ici, config ne peut pas être rendu final, mais le rendre statique déclenche l'autre règle squid:S2696 : "Les méthodes d'instance ne devraient pas écrire dans des champs "statiques"".

Je rencontre cette situation avec SonarLint for Eclipse 3.3.1.201712071600, si cela est utile.

1voto

DaniEll Points 915

Membres injectés

Vous avez raison à propos des membres injectés (@EJB, @Resource, ...) et il y a (maintenant corrigé) Questions dans le SONARJAVA Issue Tracker.

Par exemple SONARJAVA-2744
Titre : "S2226 ne devrait pas soulever de problèmes pour les champs annotés avec @Resource".
Résolu avec la version 5.4 des règles de sécurité

Membres initialisés dans #init

Il y a un autre problème (résolu) : SONARJAVA-1458
Les membres initialisés dans #init ne devraient pas déclencher squid:S2226.

Selon ServletConfig :
En général, il n'est pas nécessaire de conserver une référence à ServletConfig car il est accessible en utilisant GenericServlet#getServletConfig .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X