Java言語のソースコードの整形度を試験するテストユーティリティ
CheckStyle公式ドキュメント#EmptyForIteratorPad バージョン Checkstyleバージョン:10.15.0 Javaバージョン:17 チェック概要 チェック追加Ver Checkstyle 3.0 for文の空の変化式に空白を許可するかどうかをチェックする。 forの変化式後に改行されている場合はチェックが実行されない。 ❕forの変化式とは for文の()内の最後の式のことであり、ループ変数の値を変更する式のことを指す。 for (初期化式; 条件式; 変化式){ // 繰り返しの中で実行される処理 } プロパティ プロパティ 型 デフォルト値 説明 追加Ver…
CheckStyle公式ドキュメント#EmptyForInitializerPad バージョン Checkstyleバージョン:10.15.0 Javaバージョン:17 チェック概要 チェック追加Ver Checkstyle 3.4 for文の空の初期化式に空白が必要なのか、あるいは空白が禁止されているのかをチェックする。 forの初期化式後に改行されている場合はチェックが実行されない。 ❕forの初期化式とは for文の()内の最初の式のことであり、ループ変数の初期値を定義する式のことを指す。 for (初期化式; 条件式; 変化式) { // 繰り返しの中で実行される処理 } プロパティ …
Gradleでは、タスクの中で外部コマンドを実行することができる。 Gradle CheckStyle Pluginは、JavaコードだけしかCheckしないため、他のファイルに対してチェックを行うために、外部コマンドでチェックを実行する時の実装を紹介する。 以下のコードでは、ソースのコンパイル完了後にsrc/main/resources配下のファイルのCheckstyleのチェックを実行するようにしている。 プロジェクトのディレクトリ構成は以下の通り。 プロジェクトルート | |ーーconfig | |ーーcheckstyle | |ーー checkstyle.xml(Checkstyleの…
CheckStyle公式ドキュメント 検証環境 Checkstyleバージョン:10.8.0 Javaバージョン:17 チェック概要 チェック追加バージョン Checkstyle 3.0 型名が指定の正規表現にマッチしているがどうかをチェックする。 プロパティ プロパティ 型 デフォルト値 説明 追加バージョン format Pattern "^[A-Z][a-zA-Z0-9]*$" 型名の正規表現 3.0 applyToPublic boolean true publicメンバにチェックを適用するかどうか 5.0 applyToProtected boolean true protected…
CheckStyle公式ドキュメント 検証環境 Checkstyleバージョン:10.8.0 Javaバージョン:17 チェック概要 チェック追加バージョン Checkstyle 3.0 staticでfinalでない変数の変数名が指定の正規表現にマッチしているがどうかをチェックする。 プロパティ プロパティ 型 デフォルト値 説明 追加バージョン format Pattern "^[a-z][a-zA-Z0-9]*$" 変数名の正規表現 3.0 applyToPublic boolean true publicメンバにチェックを適用するかどうか 5.0 applyToProtected bo…
CheckStyle公式ドキュメント 検証環境 Checkstyleバージョン:10.8.0 Javaバージョン:17 チェック概要 チェック追加バージョン Checkstyle 8.36 プロパティ プロパティ 型 デフォルト値 説明 追加バージョン format Pattern "^[A-Z]$" レコードの型パラメータ名の正規表現 8.36 設定+チェック実行結果 プロパティ設定なし 設定ファイル記述方法 <module name="Checker"> <module name="TreeWalker"> <module name="RecordTypeParameterName"/> …
CheckStyle公式ドキュメント 検証環境 Checkstyleバージョン:10.8.0 Javaバージョン:17 チェック概要 チェック追加バージョン Checkstyle 8.40 レコードコンポーネント名が指定の正規表現にマッチしているがどうかをチェックする。 プロパティ プロパティ 型 デフォルト値 説明 追加バージョン format Pattern "^[a-z][a-zA-Z0-9]*$" レコードコンポーネント名の正規表現 8.40 設定+チェック実行結果 プロパティ設定なし 設定ファイル記述方法 <module name="Checker"> <module name="T…
CheckStyle公式ドキュメント 検証環境 Checkstyleバージョン:10.8.0 Javaバージョン:17 チェック概要 チェック追加バージョン Checkstyle 8.36 パターン変数名が指定の正規表現にマッチしているがどうかをチェックする。 プロパティ プロパティ 型 デフォルト値 説明 追加バージョン format Pattern "^[a-z][a-zA-Z0-9]*$" パターン変数名の正規表現 8.36 設定+チェック実行結果 プロパティ設定なし 設定ファイル記述方法 <module name="Checker"> <module name="TreeWalker"…
CheckStyle公式ドキュメント 検証環境 Checkstyleバージョン:10.8.0 Javaバージョン:17 チェック概要 チェック追加バージョン Checkstyle 3.0 メソッドのパラメータ名が指定の正規表現にマッチしているがどうかをチェックする。 accessModifiersプロパティを使用することで、可視化レベルの異なるメソッドに対して異なるフォーマットを指定することができる。 キャッチパラメータを検証する場合は、CatchParameterNameを使用する。 ラムダパラメータの検証には、LambdaParameterNameを使用する。 プロパティ プロパティ 型 …
事象 Gradle Checkstyle PluginでCheckstyleのタスクを実行した際に、 チェックエラーがあった場合、コマンドプロンプト上にエラーメッセージが表示される。 特に何も設定していない場合、下記の画像のように、エラーメッセージが文字化けしてしまうという事象が発生した。 文字化けしていない部分から、エラーがあったクラス、エラー行、エラーとなったチェックの名称が分かるので、そのままでも調査にそこまで影響はないが、 日本語のエラーメッセージが表示できるのであれば、あったに越したことがないので、解決方法を調査した。 プロジェクトのbuild.gradleは以下の通り 必要そうな記…
主語がデカいというか、「すべてのコードレビューが無意味」はうそなんですが、「何も工夫のない原始的なコードレビューは非効率か逆効果」だとは思っています。プロセスとしてコードレビューを入れるなら、効果的に実践できるように指導するのがマネジメントの仕事でしょう。 何も工夫のない原始的なコードレビューと言っているのは、差分を見てレビューアが思いつきでコメントを入れるだけのものです。同じレビューアであっても言っていることが一貫しない。結果品質が安定しない。レビューアからしても毎回おなじことを言わなければならないと必要のない余計なストレスがたまる。 最悪なのはレビューアが品質にも納期にも責任を持っていない…
こんにちは。クルーズ株式会社CTOの鈴木です。 今回は、ソースコード品質の可視化を行う仕組みをとしてSonarQubeを導入してみようという話です。 www.sonarqube.org きっかけ ソースコードの品質の基準って何が適切なんだろうというところから話が始まっています。 私がCROOZ株式会社に入社した当時、Jenkins+CheckStyle+phpmdなど使って、規約違反や、重複やバグの疑いのあるコードを機械的に探してあげるというこ仕組みを構築し、運用していたことがあったのですが、運用に課題を感じていました。 理由としては、まずコーディング規約に違反があったからといってそれが一概に…
1.はじめに 2.開発を効率化できるショートカット 【その1】コードの補完(Ctrl + Space) 【その2】注目箇所にジャンプ(Ctrl + .) 【その3】クイックフィックス(Ctrl+1) 【その4】クラス作成(Ctrl+N) 【その5】実行(Ctrl + F11) 【その6】名前変更(Alt+Shift+R) 【その7】開いているファイルをすべて閉じる(Ctrl + Shift + W) 【その8】カーソル行の入れ替え(Alt + ↑↓) 【その9】インデント調整(Ctrl+Shift+F) 【その10】コメントアウト(Ctrl + /) 3.おわりに 4.参考文献 1.はじめに …
reviewdogとDanger JSでコード内のスペルミスを発見し、修正を自動的に促す方法をご紹介します。 はじめに 「regist」という単語について Danger JS について reviewdog について プルリクエスト作成時に「regist」を検出し警告する Danger JSをGitHub Actionsで動かす設定 reviewdog を GitHub Actionsで動かす設定 プルリクエスト作成 reviewdogとDanger JSの使い分け 終わりに 参考 はじめに こんにちは、プロダクト技術本部の小川です。 みなさんは「regist」という単語、見覚えがありますか? …
はじめに vermeer.hatenablog.jp でOpenAPI(MicroProfile)の実装をしてみましたが、もう少し楽ができるようにしたいと思いました。 かといって実装そのものを拡張したり大がかりなものをつくるほどでも無い「程よい程度に」拡張をしてみました。 はじめに 拡張ポイント プロジェクト全体の定義 オブジェクトのSchemaを追加 なにがうれしいか 実装 @ExampleObjectにjsonを指定 なにがうれしいか 実装 モックとしてjsonを使用する なにがうれしいか 実装 Code さいごに 拡張ポイント プロジェクト全体の定義 OpenApiModelReader…
はじめに こんにちは、株式会社 エブリー DevEnableグループです。 先日のGo Conference 2024に引き続き、本日、約5年ぶりのオフライン開催となったKotlin Fest 2024にひよこスポンサーとして参加してきました! Kotlin Fest運営の皆様および参加された皆様、お疲れ様でした! 早速参加レポートをさせていただきます。 www.kotlinfest.dev 5年ぶりのオフライン開催 Kotlin Fest 2024は今回5年ぶりのオフライン開催となりました。会場はベルサール渋谷ファーストの2Fを貸し切って、2つのセッションルームと1つのスポンサーブース兼フリ…
blog1.mammb.com はじめに 最近の Gradle では、gradle init タスクでプロジェクトを生成すると、以下のような依存定義が生成される。 dependencies { testImplementation(libs.junit.jupiter) testRuntimeOnly("org.junit.platform:junit-platform-launcher") } libs.junit.jupiter は ./gradle/libs.versions.toml の定義を参照しており、以下のように定義されたもの。 [versions] guava = "32.1.…
はじめに PayaraでOpenAPI-UIをつかって、WebAPIの仕様と実行インターフェースを準備する実装です。 軽く触ってみた感じの実装例や、Quarkus(MicroProfileの実装)を使ったものはあったのですが標準仕様だけの範疇だけでできるものはなかなか見つからなかったので色々と試しながらやってやってみました。 メインをOpenAPIにするのでJAX-RS(Jakarta RESTful Web Services)についての説明は割愛します。 はじめに 実行環境 やってみて思ったこと・わかったこと OpenAPIの記述は実装よりも優先 アノテーションで出来ないときはコードで作り込…
※本記事は、Geminiによる意訳+翻訳を活用し、レイアウト調整したものです。 ※感想は、オリジナルです。 原文 意訳+要約 静的コード解析 - ディープ・ダイブ 静的コード分析ツールの種類 静的コード分析ツールの利点 静的コード分析ツールの欠点 まとめ 特に重要な部分 GeminiへのQA Q:動的コード分析ツールはあるのでしょうか? Q:静的コード分析ツールは、規約を守らせるのが得意だと考えてよいでしょうか? Q:静的コード分析ツール入れ過ぎは良くないと思うのですが、その理由を教えて下さい 感想+雑記 原文 Static Code Analysis - deep dive - DEV Co…
news.mynavi.jp ⇧ う~む、Linuxのコアな部分へのRustの導入も難航していたような... Rustは、クリティカルなシステムに耐え得るのかの実績が無いというところが現状と言った感じなんですかね? EclipseのGUI上の選択で内部的に実行されたコマンドの内容が知りたかったんだが... Eclipseを使ったことがある人間が、一度は抱く疑問。 EclipseのGUI上での選択肢で実行されているコマンドが知りたいと思ったことありませんか? 例えば、Javaで開発している時に、「プロジェクト(P)」>「すべてビルド(A)」とか選択肢があるのですが、 ⇧ 最終的に、「.class…
こんにちは。スタディサプリ Androidエンジニアの@morayl です。 本記事では、Kotlinの静的解析ツールであるdetektの解析結果をDangerでプルリクにコメントする際に、ルール名も一緒にコメントするためにしたことを紹介します。 Dangerの基礎言語であるRubyは初心者なので、有識者から学びながらトライしました。 背景と結果 私が所属するチームでは最近、detektを導入し、Dangerを使ってプルリク上にコメントが出るようにしました。 この状態では、detektの指摘コメントだけが出ています。 一見問題無さそうですが、detektの指摘はルールで管理されているため、ルー…
Contributions to Apache Hive 2023年に取り組んだ分散処理OSSに対する貢献のまとめです。今年はApache Hiveのコミュニティが活性化したのでHiveやTezに対する貢献が多めです。 この記事は『Distributed computing (Apache Spark, Hadoop, Kafka, ...)のカレンダー | Advent Calendar 2023 - Qiita』24日目として執筆しました。若干遅れて申し訳ございません。
※本記事は、ChatGPTによる意訳+翻訳を活用し、レイアウト調整したものです。 ※感想は、オリジナルです。 原文 意訳+要約 コーディング規約に従ってますか? ChatGPTさんに聞いてみた Q:適用して維持させるのは、難しいと思うのですが、どのように運用すればよいでしょうか? Q:自動化ツールとして利用できるものは何がありますか? Q:コーディング規約は、作ったら作りっぱなしになる気がするのですが、定期的に見直すべきでしょうか? 理由: 注意点: Q:コーディング規約は、どの程度の分量がよいでしょうか? 感想+雑記 原文 Are you following the Best Coding …