[AspectJ Indexページへ戻る]

To AspectJ index page

aspect 定義集

 


メソッドの周辺

メソッドの呼び出し、復帰

pointcut move() :
    call(void Line.setP1(Point)) ||
    call(void Line.setP2(Point)) ;

before() : move() {
    // 呼び出し前に織りこみたい処理
}
after() : move() {
    // 呼び出しから復帰後(例外も含む)に織り込みたい処理
}
after() returning : move() {
    // 呼び出しからreturn後(例外を除く)に織り込みたい処理
}
after() throwing : move() {
    // 呼び出しから例外復帰後に織り込みたい処理
}
void around() : move {
    // 呼び出しをラッピングしたい処理を織りこむ
    // 呼び出しを実行するときはproceed()を使う
}
            call(void alpha.Line.setP1(Point))
            call(void alpha.Line.set*(Point))
            call(void alpha.Line+.setP1(Point))
            call(void alpha..*.setP1(Point))
            call(void Line.setP1(..))

事前条件・事後条件

事前条件として引数が事前条件を満たしていない場合、アサーションを発行する

pointcut setPointCheckContract() :
    execution(void Line.set(Point, Point));

before(Point p1, Point p2) : setPointCheckContract() && args(p1, p2) {
    // p1, p2についての事前条件判定処理
}

after(Line l) : setPointCheckContract() && target(l) {
    // lについての事後条件判定処理
}

フィールドの周辺

コーディング標準を守っているかチェックする

非publicなフィールドにSetterメソッド以外の場所で代入している場合、コンパイル時に警告を出す

alphaパッケージ以下に含まれるクラスで、メソッド名がsetで始まるメソッド以外のコードにおいて非publicなフィールドに値を代入している個所では、コンパイル時に警告を出す。

declare warning : within(alpha..*) &&
                  set(!public * *) &&
                  !withincode(* set*(..))
                : "writing field outside setter.";

警告ではなく、コンパイルエラーとしたいなら、declare errorを使用します。



This page is written by Toru TAKAHASHI.(torutk@02.246.ne.jp)