J'ai essayé de trouver le terme exact pour "suivre le paramètre d'une méthode" pour le langage de programmation Java et j'ai généralement trouvé "l'analyse des souillures", mais je ne sais pas si je suis sur le bon chemin.Comment suivre un paramètre de méthode?
Ce que je veux, c'est garder une trace du paramètre d'une méthode et voir quelle partie de la méthode (dans la portée) fait l'effet du paramètre. Par exemple, si un paramètre est assigné à une autre variable, je veux aussi garder une trace de la variable assignée. En mentionnant «parties», il pourrait s'agir de lignes de code, d'une déclaration ou d'une branche d'un graphique de flux de contrôle.
J'ai également vérifié les outils et rencontré Checker Framework et Findbugs, mais il semble qu'ils ne répondent pas tout à fait aux besoins que je veux ou que je n'arrive pas à faire fonctionner pour mes besoins.
S'il vous plaît, dites-moi si "analyse de la souillure" est le bon terme que je cherche. En outre, toutes les autres suggestions d'outils sont les bienvenues.
Il existe un code modifié ci-dessous de Checker Framework Live Demo. Ce que j'attends, à l'intérieur processRequest()
lorsque la variable String input
est Tainted, je m'attends à recevoir un avertissement ou une erreur pour toutes les lignes à l'intérieur de la méthode executeQuery()
. Parce qu'une variable contaminée est passée à son paramètre.
import org.checkerframework.checker.tainting.qual.*;
public class TaintingExampleWithWarnings {
String getUserInput() {
return "taintedStr";
}
void processRequest() {
@Tainted String input = getUserInput();
executeQuery(input); //error: pass tainted string to executeQeury()
}
public void executeQuery(@Untainted String input) {
// Do some SQL Query
String token = input + " Hello World";
String tokens[] = token.split(" ");
for(int i=0; i<tokens.length; i++)
{
System.out.println((i+1)+"String: "+tokens[i])
}
}
/* To eliminate warning in line 10, replace line 10 by
* executeQuery(validate(input)); */
/*@Untainted*/ public String validate(String userInput) {
// Do some validation here
@SuppressWarnings("tainting")
@Untainted String result = userInput;
return result;
}
}
Il existe différents outils de contrôle des défauts pour différentes langues. Vous n'avez pas spécifié une langue donc je ne peux rien recommander mais google est votre meilleur ami –
@UlugToprak merci pour le rappel, j'ai édité la question en spécifiant la langue comme "Java". – Ekin
IntelliJ IDEA a des outils intégrés que vous pouvez utiliser. Checkstyle serait mon choix qui peut également être intégré aux IDE –