書き換え動作を使用した注釈へのパラメータの追加


この例では、
  • 探索とマッチング注釈の証明
  • 口ひげテンプレートを使用して注釈を修正します.
  • Senseiは、問題のあるコードパターンと一致し、一致する実装にそれらを修正する機能を提供します.この例では@Disabled 問題のあるコードパターンとしてパラメータなしで.

    無効なテスト注釈


    我々がなぜそれを無効にしたかについて忘れるので、特定の理由なしで無効なテストは長期的に問題を証明することができます.
    @Disabled
    void thisTestMethodHasNoDisabledReason(){
        Assertions.fail("This test is disabled and should not run");
    }
    
    危険性は、時間が経過すると、コードベースが移動すると、無効になったテストは、コードの目的でステップで更新されず、最終的に冗長で無関係になり、潜在的に再利用できないことです.
    コードレビュー中に、注釈記述として説明記述を追加するのは良い考えであることをよく指摘します.
    @Disabled("Disabled to demonstrate adding a reason")
    void thisTestMethodHasDisabledReason(){
        Assertions.fail("This test is disabled and should not run");
    }
    

    ビデオで先生のデモビデオ


    先生レシピ


    レシピを書くことができます@Disabled 説明なしで追加され、なぜ私たちはそれを無効にする理由を説明する実際の理由を追加することを思い出させる迅速な修正.

    タスク


    何をしようかと思うと、
  • マッチするDisabled パラメータのない注釈
  • 変更するDisabled 注釈をマーカーテキストで「todo :ここで説明を追加」する
  • 解決策


    私の使用Alt+Enter 新しいレシピを作成します.

    次に、一般的な情報に基本的な説明テキストを追加します.

    規則を警告することで、任意の一致するコードが強調表示されますが、glaringエラーとして表示されません.

    全般
    〜〜〜
    無効にする説明を追加してください
    簡単に説明する理由を説明する必要があります
    レベル:エラー
    〜〜〜
    レシピエディターでは、注釈を合わせて検索を変更します.
    これは、プレビューのすべての注釈を強調表示されます.

    それをして、私はフィルターをかけたいですtype . 私はちょうど使えるDisabled しかし、私はJUnit 5からの注釈と一致するようにパッケージを完全に修飾します.プレビューが表示されるので、私は簡単にコードからこれをコピーして、ペーストすることができます.
    それから、パラメータなしで注釈だけにマッチしたいです、そして、私はそれをするためにGUIを使うことができます.

    すなわち、
    〜〜〜
    検索
    注釈
    タイプ: "org . junit . jupiter . api . disable "
    なし
    パラメータ
    /{ }
    〜〜〜
    私のQuickfixのために、私は書き直しアクションを使用します.
    私はShow Variables 機能は私に口ひげの変数を表示し、コンテンツをプレビューします.

    それから、私はプレースマーカコメントを作成するのに必要な余分のコードを加えます.

    すなわちQuickFIX :
    availableFixes:
    - name: "Add a todo comment parameter"
      actions:
      - rewrite:
          to: "{{{ . }}}(\"TODO: add a description here\")"
          target: "self"
    

    概要


    書き直しの速いフィックスを構築するとき、それが私たちが書き直したいコード要素を捜すことができるとき、それはより簡単ですself 我々が行動することができる実体.
    この例では、注釈を修正するために再書き込み操作を使用しました.書き換えは、任意のコード要素に適用できる汎用のアクションです.
    このブログ記事のすべてのコードは junitexamples module ブログ例リポジトリgithub.com/SecureCodeWarrior/sensei-blog-examples
    Sensei Intellijプラグインは無料でダウンロードできますIntelliJ Marketplace .