最近、コード分析にソナーを使用しています。違反のドリルダウンを徹底的に行ったところ、中括弧なしで if ステートメントが定義された Java ファイルが多数見つかりました (数千箇所)。if ステートメントに中かっこを置き換えるか追加する簡単な方法はありますか、または各ファイルで手動で実行せずにこのタスクを達成するために実行できる手順は何ですか。
私は現在intelliJを使用しています。
最近、コード分析にソナーを使用しています。違反のドリルダウンを徹底的に行ったところ、中括弧なしで if ステートメントが定義された Java ファイルが多数見つかりました (数千箇所)。if ステートメントに中かっこを置き換えるか追加する簡単な方法はありますか、または各ファイルで手動で実行せずにこのタスクを達成するために実行できる手順は何ですか。
私は現在intelliJを使用しています。
if ステートメントに中かっこを置き換えるか追加する簡単な方法はありますか、または各ファイルで手動で実行せずにこのタスクを達成するために実行できる手順は何ですか。
これを自動的に行うツールがあるかどうかはわかりません。(おそらくあります...) しかし、そのようなツールが存在すると仮定すると、それが正しいアプローチであるとは確信できません。
少し戻って、コード分析でこれが問題として報告された理由を考えてみてください。多くの人 (@pst や私のような) は、さまざまなスタイル ガイドがこれを主張していなくても、中括弧は常にそこにあるべきだと考えています。これには正当な理由があります...「見栄えが悪い」ことは別として。次のコード スニペットの例を検討してください。
if (i == 1)
i++;
doSomething();
while (i < 1)
i++;
doSomething();
doSomething();
これらを注意深く読まないと、インデントが正しくないために、 が条件付きで呼び出されていると思い込んでしまいます。そして、それは起こります。
(余談ですが、そのコードを読み違えた人を「無能」とレッテルを貼るのは役に立ちません。致命的なバグを必死に修正しようとしていて、14 時間連続で作業している場合は、この種のことを見逃す可能性があります。 . そして、あなたが無能だからではありません. そのような状況に数回遭遇すると、レッスンは沈みます...)
では、自動ツールを実行してブレースを追加するとします。あなたが得るものはこれです:
if (i == 1) {
i++;
}
doSomething();
while (i < 1) {
i++;
}
doSomething();
元のコードとまったく同じ意味です。 しかし...元のコードが実際にバグだったとしたら? プログラマーが呼び出しを条件付きに するつもりだったら?doSomething()
要するに、中括弧を自動的に追加することで、元のプログラマーの意図を覆い隠し、これらのバグを追跡するのを難しくしました。
結論 -自動的に「修正」するのではなく、これらの発生を手動で確認する方が賢明だと思います。実際、手動でレビューする時間や忍耐がない場合は、コードをそのままにしておく方がよいでしょう。警告をオフにしたほうがいいでしょう... IMO。
コードを再フォーマットして intelliJ に処理させることはできますが、すべてのファイルを調べて再フォーマットする必要があります。はい、チェックをオフにしたかもしれませんが、タスクを実行するための優れたツールがあるかどうか疑問に思っています。プロセス中にバグが発生するかどうかを確認するための適切なテストのセットがあります。
バグを持ち込まないことをテストするいくつかの方法があると確信している場合は、IntelliJ Reformat Code機能を使用してください。
IntelliJのコード スタイルが会社のポリシーに準拠していることを確認してください。そうしないと、自分のスタイルを他の人にも強要してしまいます。
Always
中かっこを強制するには、IntelliJ の [コード スタイル] 設定ダイアログの [折り返し] と [中かっこ]タグでそれらをマークするだけです。
プロジェクト ビューでソース フォルダをマークし、 を押しCtrl-Alt-L
ます。ダイアログがポップアップし、そこで選択できますAll files in directory <...>
。
次にRun
、押して何が起こるか見てみましょう。満足できない場合は、VCS から戻してください。