Search in sources :

Example 1 with LinkTag

use of soot.tagkit.LinkTag in project soot by Sable.

the class Attribute method addTag.

public void addTag(Tag t) {
    if (t instanceof LineNumberTag) {
        int lnNum = (new Integer(((LineNumberTag) t).toString())).intValue();
        javaStartLn(lnNum);
        javaEndLn(lnNum);
    } else if (t instanceof JimpleLineNumberTag) {
        JimpleLineNumberTag jlnTag = (JimpleLineNumberTag) t;
        jimpleStartLn(jlnTag.getStartLineNumber());
        jimpleEndLn(jlnTag.getEndLineNumber());
    } else if (t instanceof SourceLnPosTag) {
        SourceLnPosTag jlnTag = (SourceLnPosTag) t;
        javaStartLn(jlnTag.startLn());
        javaEndLn(jlnTag.endLn());
        javaStartPos(jlnTag.startPos());
        javaEndPos(jlnTag.endPos());
    } else if (t instanceof LinkTag) {
        LinkTag lt = (LinkTag) t;
        Host h = lt.getLink();
        LinkAttribute link = new LinkAttribute(lt.getInfo(), getJimpleLnOfHost(h), getJavaLnOfHost(h), lt.getClassName(), lt.getAnalysisType());
        addLink(link);
    } else if (t instanceof StringTag) {
        StringTag st = (StringTag) t;
        StringAttribute string = new StringAttribute(formatForXML(st.getInfo()), st.getAnalysisType());
        addText(string);
    } else if (t instanceof PositionTag) {
        PositionTag pt = (PositionTag) t;
        jimpleStartPos(pt.getStartOffset());
        jimpleEndPos(pt.getEndOffset());
    } else if (t instanceof ColorTag) {
        ColorTag ct = (ColorTag) t;
        ColorAttribute ca = new ColorAttribute(ct.getRed(), ct.getGreen(), ct.getBlue(), ct.isForeground(), ct.getAnalysisType());
        // color(ca);
        addColor(ca);
    } else /*else if (t instanceof SourcePositionTag){
        }
        else if (t instanceof SourceLineNumberTag){
        }*/
    {
        // System.out.println("t is: "+t.getClass());
        StringAttribute sa = new StringAttribute(t.toString(), t.getName());
        addText(sa);
    }
}
Also used : SourceLnPosTag(soot.tagkit.SourceLnPosTag) StringTag(soot.tagkit.StringTag) LinkTag(soot.tagkit.LinkTag) ColorTag(soot.tagkit.ColorTag) PositionTag(soot.tagkit.PositionTag) Host(soot.tagkit.Host) JimpleLineNumberTag(soot.tagkit.JimpleLineNumberTag) LineNumberTag(soot.tagkit.LineNumberTag) JimpleLineNumberTag(soot.tagkit.JimpleLineNumberTag)

Example 2 with LinkTag

use of soot.tagkit.LinkTag in project soot by Sable.

the class JavaAttribute method printAttributeTag.

private void printAttributeTag(Tag t) {
    if (t instanceof LineNumberTag) {
        int lnNum = (new Integer(((LineNumberTag) t).toString())).intValue();
        printJavaLnAttr(lnNum, lnNum);
    } else if (t instanceof JimpleLineNumberTag) {
        JimpleLineNumberTag jlnTag = (JimpleLineNumberTag) t;
        printJimpleLnAttr(jlnTag.getStartLineNumber(), jlnTag.getEndLineNumber());
    } else /*else if (t instanceof SourceLineNumberTag) {
            SourceLineNumberTag jlnTag = (SourceLineNumberTag)t; 
			printJavaLnAttr(jlnTag.getStartLineNumber(), jlnTag.getEndLineNumber());
		}*/
    if (t instanceof LinkTag) {
        LinkTag lt = (LinkTag) t;
        Host h = lt.getLink();
        printLinkAttr(formatForXML(lt.toString()), getJimpleLnOfHost(h), getJavaLnOfHost(h), lt.getClassName());
    } else if (t instanceof StringTag) {
        printTextAttr(formatForXML(((StringTag) t).toString()));
    } else if (t instanceof SourcePositionTag) {
        SourcePositionTag pt = (SourcePositionTag) t;
        printSourcePositionAttr(pt.getStartOffset(), pt.getEndOffset());
    } else if (t instanceof PositionTag) {
        PositionTag pt = (PositionTag) t;
        printJimplePositionAttr(pt.getStartOffset(), pt.getEndOffset());
    } else if (t instanceof ColorTag) {
        ColorTag ct = (ColorTag) t;
        printColorAttr(ct.getRed(), ct.getGreen(), ct.getBlue(), ct.isForeground());
    } else {
        printTextAttr(t.toString());
    }
}
Also used : StringTag(soot.tagkit.StringTag) SourcePositionTag(soot.tagkit.SourcePositionTag) JimpleLineNumberTag(soot.tagkit.JimpleLineNumberTag) LineNumberTag(soot.tagkit.LineNumberTag) JimpleLineNumberTag(soot.tagkit.JimpleLineNumberTag) LinkTag(soot.tagkit.LinkTag) ColorTag(soot.tagkit.ColorTag) SourcePositionTag(soot.tagkit.SourcePositionTag) PositionTag(soot.tagkit.PositionTag) Host(soot.tagkit.Host)

Example 3 with LinkTag

use of soot.tagkit.LinkTag in project soot by Sable.

the class PAG method addNodeTag.

private void addNodeTag(Node node, SootMethod m) {
    if (nodeToTag != null) {
        Tag tag;
        if (m == null) {
            tag = new StringTag(node.toString());
        } else {
            tag = new LinkTag(node.toString(), m, m.getDeclaringClass().getName());
        }
        nodeToTag.put(node, tag);
    }
}
Also used : StringTag(soot.tagkit.StringTag) LinkTag(soot.tagkit.LinkTag) Tag(soot.tagkit.Tag) StringTag(soot.tagkit.StringTag) LinkTag(soot.tagkit.LinkTag)

Example 4 with LinkTag

use of soot.tagkit.LinkTag in project soot by Sable.

the class DominatorsTagger method internalTransform.

protected void internalTransform(Body b, String phaseName, Map opts) {
    MHGDominatorsFinder analysis = new MHGDominatorsFinder(new ExceptionalUnitGraph(b));
    Iterator it = b.getUnits().iterator();
    while (it.hasNext()) {
        Stmt s = (Stmt) it.next();
        List dominators = analysis.getDominators(s);
        Iterator dIt = dominators.iterator();
        while (dIt.hasNext()) {
            Stmt ds = (Stmt) dIt.next();
            String info = ds + " dominates " + s;
            s.addTag(new LinkTag(info, ds, b.getMethod().getDeclaringClass().getName(), "Dominators"));
        }
    }
}
Also used : ExceptionalUnitGraph(soot.toolkits.graph.ExceptionalUnitGraph) LinkTag(soot.tagkit.LinkTag) Iterator(java.util.Iterator) List(java.util.List) MHGDominatorsFinder(soot.toolkits.graph.MHGDominatorsFinder) Stmt(soot.jimple.Stmt)

Aggregations

LinkTag (soot.tagkit.LinkTag)4 StringTag (soot.tagkit.StringTag)3 ColorTag (soot.tagkit.ColorTag)2 Host (soot.tagkit.Host)2 JimpleLineNumberTag (soot.tagkit.JimpleLineNumberTag)2 LineNumberTag (soot.tagkit.LineNumberTag)2 PositionTag (soot.tagkit.PositionTag)2 Iterator (java.util.Iterator)1 List (java.util.List)1 Stmt (soot.jimple.Stmt)1 SourceLnPosTag (soot.tagkit.SourceLnPosTag)1 SourcePositionTag (soot.tagkit.SourcePositionTag)1 Tag (soot.tagkit.Tag)1 ExceptionalUnitGraph (soot.toolkits.graph.ExceptionalUnitGraph)1 MHGDominatorsFinder (soot.toolkits.graph.MHGDominatorsFinder)1