Augmenting Static Source Views in IDEs with Dynamic Metrics

Preview:

Citation preview

Augmenting

Static Source Views

in IDEs with Dynamic Metrics

Augmenting

Static Source Views

in IDEs with Dynamic Metrics

IJavaElement element = elements[0];if (element.getElementType() == IJavaElement.FIELD) {

IJavaProject javaProject = element.getJavaProject();} else if (element.getElementType() == IJavaElement.LOCAL_VARIABLE) {

IJavaProject javaProject = element.getParent().getJavaProject();}

Static Source Views

no runtime information

execution path?

polymorphism?

runtime metrics?

?

Augmenting

Static Source Views

in IDEs with Dynamic Metrics

Dynamic Metrics

message sending

invocations

created objects

allocated memory

collecting Dynamic Metrics

aspect CCTAspect { before() : execution(* *(..)) { CCTNode[] ss = thisStack; int sp = thisSP; ss[sp] = ss[sp-1]. profileCall( thisJoinPointStaticPart); ss[sp]. storeRcvArgsRuntimeTypes( thisJoinPoint); } after() returning(Object o) : execution(* *(..)) { CCTNode[] ss = thisStack; int sp = thisSP; ss[sp].storeRetRuntimeType(o); ss[sp] = null; }

Simplified excerptof the CCTAspect

after() returning( Object o): call(*.new(..)) { CCTNode[] ss = thisStack; int sp = thisSP; ss[sp].storeObjAlloc(o); } ...}

MAJOR

Senseo

Augmenting

Static Source Views

in IDEs with Dynamic Metrics

IDE

eclipse plugin

hoverhover

ruler columns

tree view

DEMO

Senseo enriches JDT withdynamic runtime information

future workvisual enrichments

usability

July / August case study /paper

September

writing thesisNovember / December

questions?