|
|
@@ -0,0 +1,180 @@ |
|
|
|
/* |
|
|
|
* Copyright (c) 2005 Contributors |
|
|
|
* All rights reserved. |
|
|
|
* This program and the accompanying materials are made available |
|
|
|
* under the terms of the Eclipse Public License v1.0 |
|
|
|
* which accompanies this distribution and is available at |
|
|
|
* http://eclipse.org/legal/epl-v10.html |
|
|
|
* |
|
|
|
* Created on 25.03.2005 |
|
|
|
* |
|
|
|
* Contributors |
|
|
|
* Oliver Boehm initial implementation |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
import java.io.Serializable; |
|
|
|
import org.aspectj.lang.annotation.SuppressAjWarnings; |
|
|
|
|
|
|
|
/** |
|
|
|
* Test Aspect to check the different Xlint warnings |
|
|
|
*/ |
|
|
|
aspect XlintTest { |
|
|
|
|
|
|
|
/* |
|
|
|
* examples for "invalidAbsoluteTypeName" |
|
|
|
*/ |
|
|
|
|
|
|
|
pointcut correctName() : |
|
|
|
call(String java.lang.Object.toString()); |
|
|
|
|
|
|
|
pointcut wrongPackageName() : |
|
|
|
call(String java.xxx.Object.toString()); |
|
|
|
|
|
|
|
pointcut wrongTypeName() : |
|
|
|
call(String java.lang.Xxx.toString()); |
|
|
|
|
|
|
|
/** no warning!!! */ |
|
|
|
pointcut wrongMethodName() : |
|
|
|
call(String java.lang.Object.xxx()); |
|
|
|
|
|
|
|
@SuppressAjWarnings |
|
|
|
after() : call(String java.lang.Xxx.toString()) { |
|
|
|
System.out.println(thisJoinPoint); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
* no example for "invalidWildcardTypeName" |
|
|
|
* |
|
|
|
* Never signalled anywhere in the codebase |
|
|
|
* @see http://dev.eclipse.org/mhonarc/lists/aspectj-dev/msg01404.html |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
* example for "unresolvableMember" |
|
|
|
* |
|
|
|
* hard to reproduce - I tried different things but at last I give up |
|
|
|
* @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=59596#c2 |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
* example for "typeNotExposedToWeaver" |
|
|
|
*/ |
|
|
|
|
|
|
|
public int Object.dummy = 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
* no example for "shadowNotInStructure" |
|
|
|
* |
|
|
|
* Signalled if the structure model is broken, probably can't happen |
|
|
|
* @see http://dev.eclipse.org/mhonarc/lists/aspectj-dev/msg01404.html |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
* example for "unmatchedSuperTypeInCall" |
|
|
|
*/ |
|
|
|
|
|
|
|
pointcut unmatchedToStringCall() : |
|
|
|
call(String Car.toString()); |
|
|
|
|
|
|
|
pointcut matchedToStringCall() : |
|
|
|
call(String Object.toString()) && target(Car); |
|
|
|
|
|
|
|
before() : unmatchedToStringCall() && !within(XlintTest) { |
|
|
|
System.out.println(thisJoinPoint); |
|
|
|
} |
|
|
|
|
|
|
|
@SuppressAjWarnings |
|
|
|
before() : call(String Car.toString()) { |
|
|
|
System.out.println(thisJoinPoint); |
|
|
|
} |
|
|
|
|
|
|
|
@SuppressAjWarnings({"adviceDidNotMatch"}) |
|
|
|
before() : call(* java.lang.String.helloWorld()) { |
|
|
|
System.out.println(thisJoinPoint); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
* example for "canNotImplementLazyTjp" |
|
|
|
* |
|
|
|
* This example is from the README-12.html. To get the warning you must |
|
|
|
* compile it with "-XlazyTjp" |
|
|
|
* |
|
|
|
* NOTE: The expected warnung does not appear. I don't know why. |
|
|
|
* Here is the commandline: |
|
|
|
* ajc -XlazyTjp -Xlint:warning -inpath src -d classes src |
|
|
|
*/ |
|
|
|
|
|
|
|
public static boolean enabled = false; |
|
|
|
|
|
|
|
pointcut toBeTraced() : execution(* *(..)) && !within(XlintTest); |
|
|
|
|
|
|
|
Object around() : toBeTraced() && if(enabled) { |
|
|
|
Object[] args = thisJoinPoint.getArgs(); |
|
|
|
System.out.println(thisJoinPoint + ", arg's: " + args.length); |
|
|
|
return proceed(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
* example for "needsSerialVersionUIDField" |
|
|
|
*/ |
|
|
|
|
|
|
|
declare parents : Main implements java.io.Serializable; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
* example for "brokeSerialVersionCompatibility" |
|
|
|
* |
|
|
|
* NOTE: I don't see this warning inside Eclipse with |
|
|
|
* AJDT 1.2.0.20050308091611 although I activate the warning |
|
|
|
* via the project properties. |
|
|
|
* I see it only when I start the compiler from the commandline |
|
|
|
* (ajc -XlazyTjp -Xlint:warning -inpath src -d classes src/x/...) |
|
|
|
*/ |
|
|
|
|
|
|
|
public int Car.breakSerial = 1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
* example for "noInterfaceCtorJoinpoint" |
|
|
|
*/ |
|
|
|
|
|
|
|
pointcut interfaceConstructor() : |
|
|
|
execution(java.util.List.new()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
class Car implements Serializable {} |
|
|
|
|
|
|
|
|
|
|
|
public class Main extends Object { |
|
|
|
|
|
|
|
/** |
|
|
|
* @param args |
|
|
|
*/ |
|
|
|
public static void main(String[] args) { |
|
|
|
new Main().run(); |
|
|
|
Long l = new Long(1); |
|
|
|
String s = l.toString(); |
|
|
|
} |
|
|
|
|
|
|
|
public void run() { |
|
|
|
new Car().toString(); |
|
|
|
} |
|
|
|
|
|
|
|
} |