Bonjour
J'ai vu que dans l'utilitaire de recherche dans le code (find, ctrl+f) on peut utiliser des expressions régulières.
J'ai approfondi un peu la chose et je suis tombé sur le détail des regexp qu'on peut utiliser :
http://www.eclipse.org/tptp/monitori...f/rregexp.html
Mais je n'arrive toujours pas à faire ce que je veux (faut dire que c'est un peu complexe ^^) :
Je cherche à écrire une regexp me permettant de trouver dans mon code les catch(SQLException xx) qui n'ont pas de finally associé, afin de chasser les connexions pas fermées...
J'ai créé ce petit fichier pour tester les regexp :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| /******************SQLException AVEC FINALLY**********************/
try {
conn = ds.getConnection();
ArrayList listeLien = new ArrayList();
/***/
switch (actionRecue) {
case Actions.ANNULER:
return JSPName.INDEX;
case Actions.DOWNLOAD:
List desLiens = (List) sm.getAttribute(LISTE_LIEN);
Fichier unFic = (Fichier) desLiens.get(Integer.parseInt(req.getParameter("NOFIC")));
break;
default:
break;
}
} catch (SQLException e1) {
e1.printStackTrace();
} finally {
ConnectionUtil.fermetureConnectionSimple(conn, null, null, null);
}
/******************SQLException SANS FINALLY**********************/
try {
conn = ds.getConnection();
ArrayList listeLien = new ArrayList();
/***/
}
} catch (SQLException e1) {
e1.printStackTrace(); |
J'ai testé des tonnes de solutions, sans succès. La dernière tentative a donné l'expression suivante :
(?s)catch\s*\(SQLException.*\}.*(?!(finally)){0}.\s\{
(?s) me permet d'ignorer les sauts à la ligne, d'après ce que j'ai compris (?!(finally)) désigne l'absence du mot 'finally'.
Quand je ne met rien après ce (?!(finally)) ça me sélectionne tout depuis le catch jusque la fin de la page. J'aimerais que cette selection s'arrête a l'endroit ou je suis supposé trouver un finally, c'est à dire après le premier '}' trouvé...
Si quelqu'un sait comment s'y prendre j'apprécierais vraiment un ptit coup de pouce
Merci !
Partager