123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- package org.aspectj.langlib;
- import org.aspectj.testing.Tester;
-
- import java.awt.Button;
- import java.awt.event.ActionEvent;
- import java.beans.PropertyChangeListener;
- import java.io.*;
- import java.lang.reflect.Method;
- import java.util.*;
- import javax.swing.*;
- import javax.swing.Action;
-
-
-
-
- /**
- * todo yet untested:
- * - dynamic calls
- */
- public aspect PointcutsCW {
- declare error: Pointcuts.never() : "never";
- declare error: within(PointcutsCW) && Pointcuts.never() : "never";
-
- declare warning: Pointcuts.mainExecution() : "mainExecution";
- declare warning: Pointcuts.anyMethodExecution() : "anyMethodExecution";
- declare warning: Pointcuts.anyPublicMethodExecution() : "anyPublicMethodExecution";
- declare warning: Pointcuts.anyNonPrivateMethodExecution() : "anyNonPrivateMethodExecution";
- declare warning: Pointcuts.anyConstructorExecution() : "anyConstructorExecution";
- declare warning: Pointcuts.anyPublicConstructorExecution() : "anyPublicConstructorExecution";
- declare warning: Pointcuts.anyNonPrivateConstructorExecution() : "anyNonPrivateConstructorExecution";
-
- declare warning: Pointcuts.anyPublicFieldGet() : "anyPublicFieldGet";
- declare warning: Pointcuts.anyNonPrivateFieldGet() : "anyNonPrivateFieldGet";
- declare warning: Pointcuts.anyPublicFieldSet() : "anyPublicFieldSet";
- declare warning: Pointcuts.anyNonPrivateFieldSet() : "anyNonPrivateFieldSet";
- declare warning: Pointcuts.withinSetter() : "withinSetter";
- declare warning: Pointcuts.withinGetter() : "withinGetter";
- declare warning: Pointcuts.anyNonPublicFieldSetOutsideConstructorOrSetter() : "anyNonPublicFieldSetOutsideConstructorOrSetter";
-
- declare warning: Pointcuts.anyRunnableImplementation() : "anyRunnableImplementation";
- declare warning: Pointcuts.anyGetSystemErrOut() : "anyGetSystemErrOut";
- declare warning: Pointcuts.anySetSystemErrOut() : "anySetSystemErrOut";
- //declare warning: Pointcuts.withinAnyJavaCode() : "withinAnyJavaCode"; // XXX
- //declare warning: Pointcuts.notWithinJavaCode() : "notWithinJavaCode"; // XXX
- declare warning: Pointcuts.toStringExecution() : "toStringExecution";
- declare warning: Pointcuts.anyThreadConstruction() : "anyThreadConstruction";
- declare warning: Pointcuts.anyJavaIOCalls() : "anyJavaIOCalls";
- declare warning: Pointcuts.anyJavaAWTOrSwingCalls() : "anyJavaAWTOrSwingCalls";
- declare warning: Pointcuts.cloneImplementationsInNonCloneable() : "cloneImplementationsInNonCloneable";
- declare warning: Pointcuts.runImplementationsInNonRunnable() : "runImplementationsInNonRunnable";
- declare warning: Pointcuts.anySystemReflectiveCalls() : "anySystemReflectiveCalls";
- declare warning: Pointcuts.anySystemClassLoadingCalls() : "anySystemClassLoadingCalls";
- declare warning: Pointcuts.anySystemProcessSpawningCalls() : "anySystemProcessSpawningCalls";
- declare warning: Pointcuts.mostThrowableReadCalls() : "mostThrowableReadCalls";
- declare warning: Pointcuts.exceptionWrappingCalls() : "exceptionWrappingCalls";
- declare warning: Pointcuts.anyCollectionWriteCalls() : "anyCollectionWriteCalls";
- // CW anyMethodExecution, anyPublicMethodExecution, anyNonPrivateMethodExecution
- public static void main(String[] list) {
- new MemberTests(0).toString(); // RT cflowMainExecution
- }
- }
- class MemberTests {
- public static int publicStaticInt;
- public int publicInt;
- private static int privateStaticInt;
- private int privateInt;
- static int defaultStaticInt;
- int defaultInt;
-
- private MemberTests() {} // CW anyConstructorExecution
-
- public MemberTests(int i) {} // CW anyConstructorExecution, anyPublicConstructorExecution, anyNonPrivateConstructorExecution
-
- MemberTests(String s) { // CW anyConstructorExecution, anyNonPrivateConstructorExecution
-
- defaultInt = 0; // CW anyNonPrivateFieldSet
-
- }
-
- // CW anyMethodExecution, anyPublicMethodExecution, anyNonPrivateMethodExecution
- public String toString() {// CW toStringExecution
- return "";
- }
-
- private int pperrorCode() { return 0; } // CW anyMethodExecution
-
- private void setInt(int i) { // CW anyMethodExecution,
-
- defaultInt = i; // CW anyNonPrivateFieldSet, withinSetter
-
- }
-
- private int getInt() {
-
- return defaultInt; // CW anyNonPrivateFieldGet, withinGetter
-
- }
-
- static class NotRunnable {
- // CW anyMethodExecution, anyPublicMethodExecution, anyNonPrivateMethodExecution
- public void run() { // CW runImplementationsInNonRunnable
- }
- }
-
- static class R implements Runnable { // CW anyRunnableImplementation
-
- // CW anyMethodExecution, anyPublicMethodExecution, anyNonPrivateMethodExecution
- public void run() {
- int i = 1; // hmm -- getting 110 here instead of 109?
- }
-
- // CW anyMethodExecution, anyPublicMethodExecution, anyNonPrivateMethodExecution
- public Object clone() { // CW cloneImplementationsInNonCloneable
- return null;
- }
-
- }
-
- // CW anyMethodExecution, anyPublicMethodExecution, anyNonPrivateMethodExecution
- public void perrorCode() throws Exception {
-
- int i = publicStaticInt; // CW anyPublicFieldGet, anyNonPrivateFieldGet
-
- i = publicInt; // CW anyPublicFieldGet, anyNonPrivateFieldGet
-
- i = privateStaticInt;
-
- i = privateInt;
-
-
-
- i = defaultStaticInt; // CW anyNonPrivateFieldGet
-
- i = defaultInt; // CW anyNonPrivateFieldGet
-
- publicStaticInt = 1; // CW anyPublicFieldSet, anyNonPrivateFieldSet
-
- publicInt = 1; // CW anyPublicFieldSet, anyNonPrivateFieldSet
-
- // for these 4: CW anyNonPublicFieldSetOutsideConstructorOrSetter
- privateStaticInt = 1;
-
- privateInt = 1;
-
- defaultStaticInt = 1; // CW anyNonPrivateFieldSet
-
- defaultInt = 1; // CW anyNonPrivateFieldSet
-
- System.out.println(""); // CW anyGetSystemErrOut, anyNonPrivateFieldGet, anyPublicFieldGet, anyJavaIOCalls
-
- System.err.println(""); // CW anyGetSystemErrOut, anyNonPrivateFieldGet anyPublicFieldGet, anyJavaIOCalls
-
- new Thread((Runnable)null); // CW anyThreadConstruction, anyConstructorExecution, anyNonPrivateConstructorExecution
-
- FileReader fr = new FileReader("none"); // CW anyJavaIOCalls
-
- i = fr.read(); // CW anyJavaIOCalls
-
- DefaultListModel model = new DefaultListModel(); // CW anyJavaAWTOrSwingCalls
-
- model.addElement(null); // CW anyJavaAWTOrSwingCalls
-
- Button button = new Button(); // CW anyJavaAWTOrSwingCalls
-
- button.addActionListener(null); // CW anyJavaAWTOrSwingCalls
-
- String myName = PointcutsCW.class.getName(); // CW anySystemClassLoadingCalls, mostThrowableReadCalls b/c of in-bytecode conversion from ClassNotFoundException to NoClassDefFoundError
-
- Class me = Class.forName(myName); // CW anySystemClassLoadingCalls
-
- Method m = me.getDeclaredMethod("notFound", new Class[]{}); // CW anySystemReflectiveCalls
-
- Process p = Runtime.getRuntime().exec("ls"); // CW anySystemProcessSpawningCalls
-
- Error e = new Error("hello");
-
- e.getMessage(); // CW mostThrowableReadCalls
-
- e.printStackTrace(); // CW mostThrowableReadCalls
-
- e.getClass(); // not mostThrowableReadCalls b/c getClass() is Object
-
- List list = new ArrayList();
- list.add("one"); // CW anyCollectionWriteCalls
-
- // actually not writing, but staticly might
- list.remove("two"); // CW anyCollectionWriteCalls
-
- list.removeAll(Collections.EMPTY_LIST); // CW anyCollectionWriteCalls, anyPublicFieldGet, anyNonPrivateFieldGet
-
- list.retainAll(list); // CW anyCollectionWriteCalls
-
- }
-
- }
-
-
- aspect DynamicTests {
- DynamicTests() {
- int i = 1; // CW anyConstructorExecution, anyNonPrivateConstructorExecution XXX shows as 190, not 189?
- }
- static {
- Tester.expectEvent("mainExecution");
- Tester.expectEvent("cflowMainExecution");
- Tester.expectEvent("adviceCflow");
- Tester.expectEvent("notInAdviceCflow");
- }
- after(MemberTests memberTests) returning : target(memberTests)
- && Pointcuts.cflowMainExecution() && call(String toString())
- && !within(DynamicTests) {
- String targ = memberTests.toString();
- Tester.event("cflowMainExecution");
- Tester.event("adviceCflow");
- }
-
- after() returning : target(MemberTests)
- && Pointcuts.notInAdviceCflow() && call(String toString()) {
- Tester.event("notInAdviceCflow"); // should only get one of these
- }
-
- after() returning : within(PointcutsCW) && Pointcuts.mainExecution() {
- Tester.event("mainExecution"); // also cflowMainExecution
- Tester.checkAllEvents();
- }
-
- }
- /*
- grep -n " CW" PointcutsCW.java \
- | sed 's|^\(.*\)\:.*\/\/*CW \(.*\)$|<message kind="warning" line="\1" text="\2"/>|' \
- > messages.txt
-
- */
|