問題:
如果存在 B 過濾器,且情況如下,A 過濾器就會失敗:
B 放在 A 前面,符合 B 的類別也符合 A。
比方說,如果過濾器看起來如下:
ClassA* method* INCLUDE * * EXCLUDE
第一個過濾器就會錯誤地併入 ClassABC 的 initialize() 方法,因為它的類別名稱符合 classA* 型樣,即使方法名稱不符合方法型樣也是如此。 這也表示下列情況會併入開頭為 ClassA 的所有方法:
ClassA* method* INCLUDE ClassA* * EXCLUDE
因為第二個過濾器永遠會被忽略。
暫行解決方法:
依預設,如果類別和方法不符合任何過濾器,就會併入它。 因此,永遠不要使用 INCLUDE 過濾器,請只用 EXCLUDE 過濾器。 由於只有第一個相符的類別型樣會起作用,因此,每個類別只能指定一個 EXCLUDE 過濾器, 在這個過濾器中,可以依照下列方式,利用一個方法型樣來指定要排除的方法:
ClassA method* EXCLUDE ClassB call* EXCLUDE
(C) Copyright IBM Corporation 2000, 2003. All Rights Reserved.