クイック・フィックス・プロセッサー

org.eclipse.jdt.ui.quickFixProcessors

3.0 以降の拡張ポイント。3.2 以降の要素 handledMarkerTypes

この拡張ポイントによって、クイック・フィックス・プロセッサーを追加して、Java の問題に新しいクイック・フィックスを提供します。

3.2 以降、拡張では、ハンドルすることのできる問題マーカーの型を指定することができます。これらの型は、処理する際に問題を生じる場合があります。ハンドルされるマーカー型が指定されない場合、プロセッサーで型についての問題 org.eclipse.jdt.core.problem、org.eclipse.jdt.core.buildpath_problem および org.eclipse.jdt.core.task が生じることになります (3.2 以前の振る舞いには互換性あり)。

この拡張ポイントは、enablement タグをサポートしています。テストが実行されるプロパティーは以下のとおりです。

  • compilationUnit: 型は ICompilationUnit。クイック・アシストが適用されるコンパイル単位。
  • projectNatures: 型は Collection。現行プロジェクトのすべてのプロジェクト・ネーチャー。
  • sourceLevel: 型は String。現行プロジェクトのソースの整合性。
  • <!ELEMENT extension (quickFixProcessor*)>

    <!ATTLIST extension

    point CDATA #REQUIRED

    id    CDATA #IMPLIED

    name  CDATA #IMPLIED>


    <!ELEMENT quickFixProcessor (enablement , handledMarkerTypes*)>

    <!ATTLIST quickFixProcessor

    id                  CDATA #REQUIRED

    name                CDATA #IMPLIED

    class               CDATA #REQUIRED

    requiredSourceLevel CDATA #IMPLIED>


    <!ELEMENT handledMarkerTypes (markerType+)>

    このクイック・フィックス・プロセッサーで扱うことのできる問題のあるマーカー型を指定します。ハンドルされるマーカー型が指定されない場合、プロセッサーで型についての問題 org.eclipse.jdt.core.problem、org.eclipse.jdt.core.buildpath_problem および org.eclipse.jdt.core.task が生じることになります。



    <!ELEMENT markerType EMPTY>

    <!ATTLIST markerType

    id CDATA #REQUIRED>


    <!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    汎用ルート要素です。 この要素を拡張ポイントの内部で使用すると、enablement 式を定義できます。 enablement 式の子は、AND 演算子を使用して結合されます。



    <!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>

    この要素は、サブ要素式を評価した結果に対する NOT 演算を表します。



    <!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    この要素は、サブ要素式すべてを評価した結果に対する AND 演算を表します。



    <!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    この要素は、サブ要素式すべてを評価した結果に対する OR 演算を表します。



    <!ELEMENT instanceof EMPTY>

    <!ATTLIST instanceof

    value CDATA #REQUIRED>

    この要素は、フォーカスされているオブジェクトの instanceof 検査を実行するために使用されます。 オブジェクトの型が、属性値で指定されている型のサブタイプの場合、この式は EvaluationResult.TRUE を戻します。これ以外の場合は、EvaluationResult.FALSE を戻します。



    <!ELEMENT test EMPTY>

    <!ATTLIST test

    property CDATA #REQUIRED

    args     CDATA #IMPLIED

    value    CDATA #IMPLIED>

    この要素は、フォーカスされているオブジェクトのプロパティー状態を評価するために使用されます。 テスト可能なプロパティーのセットは、プロパティー・テスターの拡張ポイントを使用して拡張することができます。 実際のテストを実行するプロパティー・テスターがまだロードされていない場合、test 式は EvaluationResult.NOT_LOADED を戻します。



    <!ELEMENT systemTest EMPTY>

    <!ATTLIST systemTest

    property CDATA #REQUIRED

    value    CDATA #REQUIRED>

    System.getProperty メソッドを呼び出してシステム・プロパティーをテストし、その結果を、 value 属性によって指定された値と比べてください。



    <!ELEMENT equals EMPTY>

    <!ATTLIST equals

    value CDATA #REQUIRED>

    この要素は、フォーカスされているオブジェクトの等号検査を実行するために使用されます。 オブジェクトが、属性値によって提供された値と等しい場合、この式は EvaluationResult.TRUE を戻します。 これ以外の場合は、EvaluationResult.FALSE を戻します。



    <!ELEMENT count EMPTY>

    <!ATTLIST count

    value CDATA #REQUIRED>

    この要素は、コレクション内の要素の数をテストするために使用されます。



    <!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    <!ATTLIST with

    variable CDATA #REQUIRED>

    この要素は、すべての子要素がインスペクション対象であるオブジェクトを、指定の変数で参照されているオブジェクトに変更します。 変数が解決できない場合、式は、評価時に ExpressionException をスローします。 with 式の子は、AND 演算子を使用して結合されます。



    <!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    <!ATTLIST resolve

    variable CDATA #REQUIRED

    args     CDATA #IMPLIED>

    この要素は、すべての子要素がインスペクション対象であるオブジェクトを、指定の変数で参照されているオブジェクトに変更します。 変数が解決できない場合、式は、評価時に ExpressionException をスローします。 with 式の子は、AND 演算子を使用して結合されます。



    <!ELEMENT adapt (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    <!ATTLIST adapt

    type CDATA #REQUIRED>

    この要素は、フォーカスされているオブジェクトを、属性型で指定されている型に適合させるために使用されます。 アダプターまたは参照される型がまだロードされていない場合、式は「ロードされていない」を戻します。 型名が全く存在しない場合、評価中に ExpressionException がスローされます。 adapt 式の子は、AND 演算子を使用して結合されます。



    <!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    <!ATTLIST iterate

    operator (or|and) >

    この要素は、java.util.Collection 型の変数を繰り返すために使用されます。 フォーカスされているオブジェクトの型が java.util.Collection ではない場合、式の評価時に ExpressionException がスローされます。



    クイック・フィックス・プロセッサーの contribution の例を以下に示します。

     

    <extension point=

    "org.eclipse.jdt.ui.quickFixProcessors"

    >

    <quickFixProcessor id=

    "AdvancedQuickFixProcessor"

    name=

    "Advanced Quick Fix Processor"

    requiredSourceLevel=

    "1.5"

    class=

    "com.example.AdvancedQuickFixProcessor"

    >

    <handledMarkerTypes>

    <markerType id=

    "org.eclipse.myplugin.audits"

    />

    </handledMarkerTypes>

    <enablement>

    <with variable=

    "projectNatures"

    >

    <iterate operator=

    "or"

    >

    <equals value=

    "org.eclipse.jdt.core.javanature"

    />

    </iterate>

    </with>

    </enablement>

    </quickFixProcessor>

    </extension>

    提供されたクラスは、org.eclipse.jdt.ui.text.java.IQuickFixProcessor を実装しなければなりません。