JUnit 5 のメソッドとクラスの可視性の変更
JUnit 5 のメソッドとクラスの可視性の変更
JUnit 5 のメソッドとクラスの可視性の変更
プログラミングの楽しさの1つは、常に最新の状態を保つために必要な学習です。Sensei は、非推奨のパターンを特定し、今後使用するための修正方法を提示することで、移行を支援します。
例えば、JUnit 4からJUnit 5に移行したとき、私はテストクラスやメソッドをすべてpublicに書くことに慣れていました。しかし、JUnit 5では、それらをパッケージ・プライベートにすることができます。
e.g. instead of:
public class Junit5VisibilityTest {
@Test
public void thisDoesNotNeedToBePublic(){
Assertions.assertTrue(true);
}
}
本当は書きたいんだけどね。
class Junit5VisibilityTest {
@Test
void thisDoesNotNeedToBePublic(){
Assertions.assertTrue(true);
}
}
このようにコーディングするためのマッスルメモリーを構築するのに時間がかかり、今でもたまに失敗することがあります。
使用方法Sensei
Sensei を使えば、パブリックなメソッドやクラスを見つけて、宣言をパッケージ・プライベートに自動的に修正するレシピを作ることができます。
そのために、私はレシピを作りました。
名前 - JUnit:JUnit 5 test methods do not need to be public
説明 - JUnit 5 test methods do not need public visibility
レベル - エラー
私は、このコーディング手法を根絶したいと考え、IDEでコードを書いているときにこの問題をより明確にしたいと考え、この問題をErrorに分類しました。
クラス宣言の修正
クラスを見つけるために、私はJunit 5の@Testの子アノテーションを持つすべてのクラスを検索します(org.junit.jupiter.api.Testなど)。
そして、そのクラスが修飾子 public を持つ場合。
search:
class:
with:
child:
annotation:
type:"org.junit.jupiter.api.Test"
modifier:"public"
そして、クイックフィックスでは、モディファイアを変更して可視性を取り除き、デフォルトにします。
availableFixes:
- name: "remove public visibility from JUnit 5 Test class"
actions:
- changeModifiers:
visibility:""
メソッド宣言の修正
メソッド宣言の修正レシピは、クラスのレシピとほぼ同じです。
まず、JUnit 5の@Testでアノテーションされたパブリックメソッドを探します。
search:
method:
annotation:
type:"org.junit.jupiter.api.Test"
modifier:"public"
そして、モディファイアをデフォルトの可視性に変更します。
availableFixes:
- name: "Remove @Test method public visibility"
actions:
- changeModifiers:
visibility:""
ヒント:複数のメソッドを修正する
Sensei は、現在のファイルのすべての違反にQuickFixを適用する機能を持っています。
alt+enterでQuickFixを適用した場合。
QuickFixの名前のメニューを展開すると、以下のようなオプションがあります。
"Fix All: 'JUnit:JUnit 5 test methods do not need to be public "の問題をファイルに記載"
このオプションを選択すると、Sensei は、私が選択したものだけでなく、すべての問題の発生を修正します。
クラスの修正
メソッドがパブリックである必要がないのと同じように、クラスもパブリックである必要はありません。
レシピとQuckFixを作成してクラスを修正することができます。
名前 - JUnit:Junit 5 Test classes do not need to be public
説明 - Junit 5 Test classes do not need to be public
レベル - エラー
公開されているクラスで、@Testアノテーションが付いたメソッドを見つけたとき。そして、可視性を変更したいと思います。
search:
class:
modifier:"public"
anyOf:
- child:
method:
annotation:
type:"Test"
再びchangeModifiersアクションでクラス定義の変更を行うことができます。
availableFixes:
- name: "Remove @Test class public visibility"
actions:
- changeModifiers:
visibility:""
概要
静的解析ツールは、当初、JUnitのこの推奨されるアプローチを警告してくれました。しかし、静的解析ツールでは、プログラミング中に自分のコードを変更するための筋肉の記憶を作ることはできませんでした。
レベル」を使って警告します。コーディングで解決しようとしている問題の場合、最初は「エラー」にして、コーディングのアプローチから自分を解放していくように、このレベルを下げていきます。
なお、Sensei は、QuickFix を適用する際にドロップダウンメニューオプションを使用することで、現在のファイルのすべての問題を同時に修正することができます。
Sensei レシピを作成することで、これまでの自分のコーディング手法をリアルタイムで確認することができます。そして、たまにコーディングに失敗しても、そのアプローチを強化するためにQuickFixすることができます。
---
IntelliJの「Preferences ‾ Plugins」(Mac)または「Settings ‾ Plugins」(Windows)から、「sensei secure code」を検索して、「Sensei 」をインストールすることができます。
このためのソースコードとレシピは、Secure Code Warrior GitHubアカウントの`sensei-blog-examples`リポジトリの`junitexamples`モジュールにあります。
セキュアコーディングに関する最新の知見をブログでご紹介しています。
当社の豊富なリソースライブラリは、安全なコーディングアップスキルに対する人間的なアプローチを強化することを目的としています。
開発者主導のセキュリティに関する最新の研究成果を入手する
ホワイトペーパーからウェビナーまで、開発者主導のセキュアコーディングを始めるために役立つリソースが満載のリソースライブラリです。今すぐご覧ください。
JUnit 5 のメソッドとクラスの可視性の変更
JUnit 5 のメソッドとクラスの可視性の変更
プログラミングの楽しさの1つは、常に最新の状態を保つために必要な学習です。Sensei は、非推奨のパターンを特定し、今後使用するための修正方法を提示することで、移行を支援します。
例えば、JUnit 4からJUnit 5に移行したとき、私はテストクラスやメソッドをすべてpublicに書くことに慣れていました。しかし、JUnit 5では、それらをパッケージ・プライベートにすることができます。
e.g. instead of:
public class Junit5VisibilityTest {
@Test
public void thisDoesNotNeedToBePublic(){
Assertions.assertTrue(true);
}
}
本当は書きたいんだけどね。
class Junit5VisibilityTest {
@Test
void thisDoesNotNeedToBePublic(){
Assertions.assertTrue(true);
}
}
このようにコーディングするためのマッスルメモリーを構築するのに時間がかかり、今でもたまに失敗することがあります。
使用方法Sensei
Sensei を使えば、パブリックなメソッドやクラスを見つけて、宣言をパッケージ・プライベートに自動的に修正するレシピを作ることができます。
そのために、私はレシピを作りました。
名前 - JUnit:JUnit 5 test methods do not need to be public
説明 - JUnit 5 test methods do not need public visibility
レベル - エラー
私は、このコーディング手法を根絶したいと考え、IDEでコードを書いているときにこの問題をより明確にしたいと考え、この問題をErrorに分類しました。
クラス宣言の修正
クラスを見つけるために、私はJunit 5の@Testの子アノテーションを持つすべてのクラスを検索します(org.junit.jupiter.api.Testなど)。
そして、そのクラスが修飾子 public を持つ場合。
search:
class:
with:
child:
annotation:
type:"org.junit.jupiter.api.Test"
modifier:"public"
そして、クイックフィックスでは、モディファイアを変更して可視性を取り除き、デフォルトにします。
availableFixes:
- name: "remove public visibility from JUnit 5 Test class"
actions:
- changeModifiers:
visibility:""
メソッド宣言の修正
メソッド宣言の修正レシピは、クラスのレシピとほぼ同じです。
まず、JUnit 5の@Testでアノテーションされたパブリックメソッドを探します。
search:
method:
annotation:
type:"org.junit.jupiter.api.Test"
modifier:"public"
そして、モディファイアをデフォルトの可視性に変更します。
availableFixes:
- name: "Remove @Test method public visibility"
actions:
- changeModifiers:
visibility:""
ヒント:複数のメソッドを修正する
Sensei は、現在のファイルのすべての違反にQuickFixを適用する機能を持っています。
alt+enterでQuickFixを適用した場合。
QuickFixの名前のメニューを展開すると、以下のようなオプションがあります。
"Fix All: 'JUnit:JUnit 5 test methods do not need to be public "の問題をファイルに記載"
このオプションを選択すると、Sensei は、私が選択したものだけでなく、すべての問題の発生を修正します。
クラスの修正
メソッドがパブリックである必要がないのと同じように、クラスもパブリックである必要はありません。
レシピとQuckFixを作成してクラスを修正することができます。
名前 - JUnit:Junit 5 Test classes do not need to be public
説明 - Junit 5 Test classes do not need to be public
レベル - エラー
公開されているクラスで、@Testアノテーションが付いたメソッドを見つけたとき。そして、可視性を変更したいと思います。
search:
class:
modifier:"public"
anyOf:
- child:
method:
annotation:
type:"Test"
再びchangeModifiersアクションでクラス定義の変更を行うことができます。
availableFixes:
- name: "Remove @Test class public visibility"
actions:
- changeModifiers:
visibility:""
概要
静的解析ツールは、当初、JUnitのこの推奨されるアプローチを警告してくれました。しかし、静的解析ツールでは、プログラミング中に自分のコードを変更するための筋肉の記憶を作ることはできませんでした。
レベル」を使って警告します。コーディングで解決しようとしている問題の場合、最初は「エラー」にして、コーディングのアプローチから自分を解放していくように、このレベルを下げていきます。
なお、Sensei は、QuickFix を適用する際にドロップダウンメニューオプションを使用することで、現在のファイルのすべての問題を同時に修正することができます。
Sensei レシピを作成することで、これまでの自分のコーディング手法をリアルタイムで確認することができます。そして、たまにコーディングに失敗しても、そのアプローチを強化するためにQuickFixすることができます。
---
IntelliJの「Preferences ‾ Plugins」(Mac)または「Settings ‾ Plugins」(Windows)から、「sensei secure code」を検索して、「Sensei 」をインストールすることができます。
このためのソースコードとレシピは、Secure Code Warrior GitHubアカウントの`sensei-blog-examples`リポジトリの`junitexamples`モジュールにあります。