ブログ

Rewriteアクションによるアノテーションへのパラメータ追加

アラン・リチャードソン
2020年10月26日発行

このブログ記事では、私たちは

  • アノテーションの検索と照合のデモンストレーション
  • ヒゲのテンプレートを使ったアノテーション

Sensei は、問題のあるコードパターンを照合して、合意した実装に修正する機能を提供します。この例では、@Disabled without a parameterを問題のあるコードパターンとして使用しています。

無効化テストのアノテーション

特定の理由なしにテストを無効にすると、無効にした理由を忘れてしまうため、長期的には問題となります。


@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");
   }

Sensei レシピ

説明なしに@Disabledが追加されたことを検知するレシピと、なぜ無効にしたのかを説明する実際の理由を追加するように思い出させるQuick Fixを書くことができます。

自分が何をしようかと考えたときに

  • パラメータなしでDisabledアノテーションにマッチ
  • TODO: add a description here "というマーカーテキストのパラメータを持つようにDisabledアノテーションを変更しました。

ワーニングレシピの作成

私はAlt+Enterで新しいレシピを作成しています。

新しいレシピの作成機能

そして、一般情報の中に基本的な説明文を追加します。

一般設定

ルールを警告にすることで、一致するコードはハイライトされますが、明らかなエラーとしては表示されません。

ルールを警告にする

アノテーションの検索

レシピエディターでは、「検索」をアノテーションに合わせて変更します。

これにより、プレビューに表示されているすべての注釈がハイライトされます。

レシピ編集部

そうすると、今度はアノテーションの種類でフィルタリングしたくなります。

Disabled を使うこともできますが、クラスをパッケージで完全に修飾することで、JUnit 5 のアノテーションにのみ合致するようにしています。プレビューではソースコードが表示されているので、実際のコードから簡単にコピー&ペーストして、タイプミスを防ぐことができます。

そして、Parametersのないアノテーションだけをマッチさせたいのですが、これはGUIでできます。

レシピの設定

i.e.検索

search:
  annotation:
    type: "org.junit.jupiter.api.Disabled"
    without:
       parameters:
          - {}

リライトクイックフィックスアクションの作成

今回のQuickFixでは、リライトアクションを使用します。

変数の表示機能を使って、Mustacheの変数を表示し、内容をプレビューしています。

QuickFixの設定

そして、プレースマーカーのコメントを作成するために必要な追加のコードを追加します。

追加コードでプレースマーカーコメントを作成する

i.e. QuickFix。

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

Sensei 活動中

レシピ作成の様子を短い動画でご紹介します。

概要

書き換えクイックフィックスを構築する際には、書き換えたいコード要素を検索できれば、それが行動できる自己の実体となるため、より簡単になります。

この例では、リライトアクションを使ってアノテーションを修正しました。Rewriteは、どんなコード要素にも適用できる汎用的なアクションであり、デフォルトで使用するのに適しています。

リソースを見る
リソースを見る

Sensei を使って問題のあるコードパターンを照合し、合意された実装に修正する方法を、アノテーション照合の例を使って学びます。

ご興味がおありですか?

アラン・リチャードソンは、20年以上にわたり、開発者として、またテスターからテスト責任者まで、あらゆるレベルのテストに携わってきたプロフェッショナルなIT経験を持っています。アラン・リチャードソンは、Secure Code Warrior のデベロッパーリレーションズの責任者として、チームと直接連携し、高品質で安全なコードの開発を促進しています。また、「Dear Evil Tester」や「Java For Testers」など4冊の著書があります。また、テクニカルWebテストやSelenium WebDriver with Javaを学ぶためのオンライントレーニングcourses を作成しています。アランは、SeleniumSimplified.com、EvilTester.com、JavaForTesters.com、CompendiumDev.co.ukに執筆やトレーニングビデオを掲載している。

Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。

デモを予約する
シェアする
著者
アラン・リチャードソン
2020年10月26日発行

アラン・リチャードソンは、20年以上にわたり、開発者として、またテスターからテスト責任者まで、あらゆるレベルのテストに携わってきたプロフェッショナルなIT経験を持っています。アラン・リチャードソンは、Secure Code Warrior のデベロッパーリレーションズの責任者として、チームと直接連携し、高品質で安全なコードの開発を促進しています。また、「Dear Evil Tester」や「Java For Testers」など4冊の著書があります。また、テクニカルWebテストやSelenium WebDriver with Javaを学ぶためのオンライントレーニングcourses を作成しています。アランは、SeleniumSimplified.com、EvilTester.com、JavaForTesters.com、CompendiumDev.co.ukに執筆やトレーニングビデオを掲載している。

シェアする

このブログ記事では、私たちは

  • アノテーションの検索と照合のデモンストレーション
  • ヒゲのテンプレートを使ったアノテーション

Sensei は、問題のあるコードパターンを照合して、合意した実装に修正する機能を提供します。この例では、@Disabled without a parameterを問題のあるコードパターンとして使用しています。

無効化テストのアノテーション

特定の理由なしにテストを無効にすると、無効にした理由を忘れてしまうため、長期的には問題となります。


@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");
   }

Sensei レシピ

説明なしに@Disabledが追加されたことを検知するレシピと、なぜ無効にしたのかを説明する実際の理由を追加するように思い出させるQuick Fixを書くことができます。

自分が何をしようかと考えたときに

  • パラメータなしでDisabledアノテーションにマッチ
  • TODO: add a description here "というマーカーテキストのパラメータを持つようにDisabledアノテーションを変更しました。

ワーニングレシピの作成

私はAlt+Enterで新しいレシピを作成しています。

新しいレシピの作成機能

そして、一般情報の中に基本的な説明文を追加します。

一般設定

ルールを警告にすることで、一致するコードはハイライトされますが、明らかなエラーとしては表示されません。

ルールを警告にする

アノテーションの検索

レシピエディターでは、「検索」をアノテーションに合わせて変更します。

これにより、プレビューに表示されているすべての注釈がハイライトされます。

レシピ編集部

そうすると、今度はアノテーションの種類でフィルタリングしたくなります。

Disabled を使うこともできますが、クラスをパッケージで完全に修飾することで、JUnit 5 のアノテーションにのみ合致するようにしています。プレビューではソースコードが表示されているので、実際のコードから簡単にコピー&ペーストして、タイプミスを防ぐことができます。

そして、Parametersのないアノテーションだけをマッチさせたいのですが、これはGUIでできます。

レシピの設定

i.e.検索

search:
  annotation:
    type: "org.junit.jupiter.api.Disabled"
    without:
       parameters:
          - {}

リライトクイックフィックスアクションの作成

今回のQuickFixでは、リライトアクションを使用します。

変数の表示機能を使って、Mustacheの変数を表示し、内容をプレビューしています。

QuickFixの設定

そして、プレースマーカーのコメントを作成するために必要な追加のコードを追加します。

追加コードでプレースマーカーコメントを作成する

i.e. QuickFix。

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

Sensei 活動中

レシピ作成の様子を短い動画でご紹介します。

概要

書き換えクイックフィックスを構築する際には、書き換えたいコード要素を検索できれば、それが行動できる自己の実体となるため、より簡単になります。

この例では、リライトアクションを使ってアノテーションを修正しました。Rewriteは、どんなコード要素にも適用できる汎用的なアクションであり、デフォルトで使用するのに適しています。

リソースを見る
リソースを見る

以下のフォームに記入し、レポートをダウンロードしてください。

弊社製品や関連するセキュアコーディングのトピックに関する情報をお送りする許可をお願いします。当社は、お客様の個人情報を細心の注意を払って取り扱い、マーケティング目的で他社に販売することは決してありません。

送信
フォームを送信するには、「Analytics」のCookieを有効にしてください。完了したら、再度無効にしてください。

このブログ記事では、私たちは

  • アノテーションの検索と照合のデモンストレーション
  • ヒゲのテンプレートを使ったアノテーション

Sensei は、問題のあるコードパターンを照合して、合意した実装に修正する機能を提供します。この例では、@Disabled without a parameterを問題のあるコードパターンとして使用しています。

無効化テストのアノテーション

特定の理由なしにテストを無効にすると、無効にした理由を忘れてしまうため、長期的には問題となります。


@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");
   }

Sensei レシピ

説明なしに@Disabledが追加されたことを検知するレシピと、なぜ無効にしたのかを説明する実際の理由を追加するように思い出させるQuick Fixを書くことができます。

自分が何をしようかと考えたときに

  • パラメータなしでDisabledアノテーションにマッチ
  • TODO: add a description here "というマーカーテキストのパラメータを持つようにDisabledアノテーションを変更しました。

ワーニングレシピの作成

私はAlt+Enterで新しいレシピを作成しています。

新しいレシピの作成機能

そして、一般情報の中に基本的な説明文を追加します。

一般設定

ルールを警告にすることで、一致するコードはハイライトされますが、明らかなエラーとしては表示されません。

ルールを警告にする

アノテーションの検索

レシピエディターでは、「検索」をアノテーションに合わせて変更します。

これにより、プレビューに表示されているすべての注釈がハイライトされます。

レシピ編集部

そうすると、今度はアノテーションの種類でフィルタリングしたくなります。

Disabled を使うこともできますが、クラスをパッケージで完全に修飾することで、JUnit 5 のアノテーションにのみ合致するようにしています。プレビューではソースコードが表示されているので、実際のコードから簡単にコピー&ペーストして、タイプミスを防ぐことができます。

そして、Parametersのないアノテーションだけをマッチさせたいのですが、これはGUIでできます。

レシピの設定

i.e.検索

search:
  annotation:
    type: "org.junit.jupiter.api.Disabled"
    without:
       parameters:
          - {}

リライトクイックフィックスアクションの作成

今回のQuickFixでは、リライトアクションを使用します。

変数の表示機能を使って、Mustacheの変数を表示し、内容をプレビューしています。

QuickFixの設定

そして、プレースマーカーのコメントを作成するために必要な追加のコードを追加します。

追加コードでプレースマーカーコメントを作成する

i.e. QuickFix。

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

Sensei 活動中

レシピ作成の様子を短い動画でご紹介します。

概要

書き換えクイックフィックスを構築する際には、書き換えたいコード要素を検索できれば、それが行動できる自己の実体となるため、より簡単になります。

この例では、リライトアクションを使ってアノテーションを修正しました。Rewriteは、どんなコード要素にも適用できる汎用的なアクションであり、デフォルトで使用するのに適しています。

リソースにアクセス

以下のリンクをクリックし、この資料のPDFをダウンロードしてください。

Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。

レポートを見るデモを予約する
PDFをダウンロード
リソースを見る
シェアする
ご興味がおありですか?

シェアする
著者
アラン・リチャードソン
2020年10月26日発行

アラン・リチャードソンは、20年以上にわたり、開発者として、またテスターからテスト責任者まで、あらゆるレベルのテストに携わってきたプロフェッショナルなIT経験を持っています。アラン・リチャードソンは、Secure Code Warrior のデベロッパーリレーションズの責任者として、チームと直接連携し、高品質で安全なコードの開発を促進しています。また、「Dear Evil Tester」や「Java For Testers」など4冊の著書があります。また、テクニカルWebテストやSelenium WebDriver with Javaを学ぶためのオンライントレーニングcourses を作成しています。アランは、SeleniumSimplified.com、EvilTester.com、JavaForTesters.com、CompendiumDev.co.ukに執筆やトレーニングビデオを掲載している。

シェアする

このブログ記事では、私たちは

  • アノテーションの検索と照合のデモンストレーション
  • ヒゲのテンプレートを使ったアノテーション

Sensei は、問題のあるコードパターンを照合して、合意した実装に修正する機能を提供します。この例では、@Disabled without a parameterを問題のあるコードパターンとして使用しています。

無効化テストのアノテーション

特定の理由なしにテストを無効にすると、無効にした理由を忘れてしまうため、長期的には問題となります。


@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");
   }

Sensei レシピ

説明なしに@Disabledが追加されたことを検知するレシピと、なぜ無効にしたのかを説明する実際の理由を追加するように思い出させるQuick Fixを書くことができます。

自分が何をしようかと考えたときに

  • パラメータなしでDisabledアノテーションにマッチ
  • TODO: add a description here "というマーカーテキストのパラメータを持つようにDisabledアノテーションを変更しました。

ワーニングレシピの作成

私はAlt+Enterで新しいレシピを作成しています。

新しいレシピの作成機能

そして、一般情報の中に基本的な説明文を追加します。

一般設定

ルールを警告にすることで、一致するコードはハイライトされますが、明らかなエラーとしては表示されません。

ルールを警告にする

アノテーションの検索

レシピエディターでは、「検索」をアノテーションに合わせて変更します。

これにより、プレビューに表示されているすべての注釈がハイライトされます。

レシピ編集部

そうすると、今度はアノテーションの種類でフィルタリングしたくなります。

Disabled を使うこともできますが、クラスをパッケージで完全に修飾することで、JUnit 5 のアノテーションにのみ合致するようにしています。プレビューではソースコードが表示されているので、実際のコードから簡単にコピー&ペーストして、タイプミスを防ぐことができます。

そして、Parametersのないアノテーションだけをマッチさせたいのですが、これはGUIでできます。

レシピの設定

i.e.検索

search:
  annotation:
    type: "org.junit.jupiter.api.Disabled"
    without:
       parameters:
          - {}

リライトクイックフィックスアクションの作成

今回のQuickFixでは、リライトアクションを使用します。

変数の表示機能を使って、Mustacheの変数を表示し、内容をプレビューしています。

QuickFixの設定

そして、プレースマーカーのコメントを作成するために必要な追加のコードを追加します。

追加コードでプレースマーカーコメントを作成する

i.e. QuickFix。

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

Sensei 活動中

レシピ作成の様子を短い動画でご紹介します。

概要

書き換えクイックフィックスを構築する際には、書き換えたいコード要素を検索できれば、それが行動できる自己の実体となるため、より簡単になります。

この例では、リライトアクションを使ってアノテーションを修正しました。Rewriteは、どんなコード要素にも適用できる汎用的なアクションであり、デフォルトで使用するのに適しています。

目次

PDFをダウンロード
リソースを見る
ご興味がおありですか?

アラン・リチャードソンは、20年以上にわたり、開発者として、またテスターからテスト責任者まで、あらゆるレベルのテストに携わってきたプロフェッショナルなIT経験を持っています。アラン・リチャードソンは、Secure Code Warrior のデベロッパーリレーションズの責任者として、チームと直接連携し、高品質で安全なコードの開発を促進しています。また、「Dear Evil Tester」や「Java For Testers」など4冊の著書があります。また、テクニカルWebテストやSelenium WebDriver with Javaを学ぶためのオンライントレーニングcourses を作成しています。アランは、SeleniumSimplified.com、EvilTester.com、JavaForTesters.com、CompendiumDev.co.ukに執筆やトレーニングビデオを掲載している。

Secure Code Warrior は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする企業文化を創造するために、お客様の組織を支援します。AppSec マネージャー、開発者、CISO、またはセキュリティに関わるすべての人が、安全でないコードに関連するリスクを減らすことができるよう、支援します。

デモを予約するダウンロード
シェアする
リソース・ハブ

始めるためのリソース

その他の記事
リソース・ハブ

始めるためのリソース

その他の記事