Explique-moi comment "javap -c MaClasse" va te donner toutes les methodes de ton projet appelant des methodes de MaClasse ?
rm appels.txt
foreach $j in MesJars
foreach $c in $j.classes
javap -c $c | awk -f filtre.awk >>appels.txtcat appels.txt | awk -f synthese.txt
# version jetable de filtre.awk (5mn)
/ class / {
gsub("^.*class ","");
gsub(" extends.*","");
c=$0;
}/^(public|protected) / {
gsub("public ","");
gsub("protected ","");
gsub(";","");
gsub("^[^ ]* ",""); i=index($0,".");
j=index($0,"(");
if((i<=0)||(i>j)) $0=c "." $0;m=$0; }
/\/\/Method/ {
gsub(".*//Method ","");
gsub("\\).*",")");
gsub(":\\(","(");
gsub("\\.\"<init>\"","");
gsub("\"<init>\"",c);
gsub("/",".");
gsub(";",",");
gsub("\\(Z","(boolean,");
gsub("\\(I","(int,");
gsub("\\(L","(");
gsub(",Z",",boolean");
gsub(",I",",int");
gsub(",L",",");
gsub("Z\\)",",boolean)");
gsub("I\\)",",int)");
gsub(",\\)",")"); i=index($0,".");
j=index($0,"(");
if((i<=0)||(i>j)) $0=c "." $0;print($0 " <- " m); }
Extrait de resultat: com.memoire.bu.BuButton.setText(java.lang.String).<-.com.memoire.bu.BuButton(java.lang.String,javax.swing.Icon) com.memoire.bu.BuLib.isMetal().<-.com.memoire.bu.BuButton.getBackground() com.memoire.bu.BuLib.setAntialiasing(java.awt.Graphics).<-.com.memoire.bu.BuButton.paint(java.awt.Graphics) com.memoire.bu.BuLib.setIcon(javax.swing.AbstractButton,com.memoire.bu.BuIcon).<-.com.memoire.bu.BuButton.setIcon(com.memoire.bu.BuIcon) com.memoire.bu.BuPreferences.getBooleanProperty(java.lang.String,boolean).<-.com.memoire.bu.BuButton.getIcon() com.memoire.bu.BuPreferences.getBooleanProperty(java.lang.String,boolean).<-.com.memoire.bu.BuButton.getText()
Guillaume
