Java言語のソースコードの整形度を試験するテストユーティリティ
Gradleでは、タスクの中で外部コマンドを実行することができる。 Gradle CheckStyle Pluginは、JavaコードだけしかCheckしないため、他のファイルに対してチェックを行うために、外部コマンドでチェックを実行する時の実装を紹介する。 以下のコードでは、ソースのコンパイル完了後にsrc/main/resources配下のファイルのCheckstyleのチェックを実行するようにしている。 プロジェクトのディレクトリ構成は以下の通り。 プロジェクトルート | |ーーconfig | |ーーcheckstyle | |ーー checkstyle.xml(Checkstyleの…
CheckStyle公式ドキュメント 検証環境 Checkstyleバージョン:10.8.0 Javaバージョン:17 チェック概要 チェック追加バージョン Checkstyle 3.4 for文の空の初期化式に空白を許可するかどうかをチェックする。 forの初期化式後に改行されている場合はチェックが実行されない。 〇forの初期化式とは for (初期化式; 条件式; 変化式) { // 繰り返しの中で実行される処理 } プロパティ プロパティ 型 デフォルト値 説明 追加バージョン option PadOption nospace 空白パディングについてのポリシーを指定 3.4 〇PadO…
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は以下の通り 必要そうな記…
CheckStyle公式ドキュメント 検証環境 Checkstyleバージョン:10.8.0 Javaバージョン:17 チェック概要 チェック追加バージョン Checkstyle 5.0 メソッドの型パラメータ名が指定の正規表現にマッチしているがどうかをチェックする。 プロパティ プロパティ 型 デフォルト値 説明 追加バージョン format Pattern "^[A-Z]$" 型パラメータ名の正規表現 5.0 設定+チェック実行結果 プロパティ設定なし 設定ファイル記述方法 <module name="Checker"> <module name="TreeWalker"> <module…
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 …
何年も「NetBeans8.2」を使い続けてきました。 世の中的には、「Apache NetBeans」になっているというのに、ずっと、IDEを移行するタスクが先延ばしにしてしまっていたのですね。 開発を再開するに当たり、このタイミングで、「Apache NetBeans」に移行することにしました。 2024年も好スタートを切りたいですしね! 現状の開発環境の確認 Windows11 NetBeans8.2 Oracle JDK 8 Payara 4.1.1.163 Maven Project このようなVersionになっています。少なくてもJava11にはしたいところですが、まずは安定運用…
ソースコードの複雑性を表す基準として、循環的複雑度という指標があります。この循環的複雑度はどれくらいの設定値にするのが適切なのかをまとめておこうと思います。 循環的複雑度とは 循環的複雑度はThomas J. McCabe氏によって1976年に考案された指標です。この値はソースコードの複雑性を示すものであり、この値を測定し、低い値を保つことで、ソースコードの保守性を高い状態で維持することができます。 循環的複雑度の目安 循環的複雑度の基準は、対象としているソフトウェアの複雑性や、ドメインの複雑性などに左右されます。そのため、絶対の数値というものはありませんが、書籍などで紹介されているものの一部…
はてブの記事を管理しているgithubに文章校正ツール(textlint)を導入した。
はじめに こんにちは、CTO/DevRelブロックの堀江(@Horie1024)です。本記事はZOZO DevRelチームによる連載「ZOZO TECH BLOGを支える技術」の2本目の記事です。 前回の記事ではZOZO TECH BLOGの概要とその運用について紹介しました。今回の記事ではTECH BLOGの運用プロセスのうち記事の執筆に焦点を当て、執筆とそのレビュー体制を支えるCI/CDフローの整備について紹介します。
前回の記事ではリーダブルコードの中心となる「読みやすいコード」についてと、読みやすいコードがもたらす価値とはどういうものなのか?について解説を行いました。 tech-kodawari-japan.hatenablog.com 今回からリーダブルコードの2章以降に記載されている「読みやすいコード」を書くための方法について触れていきたいと思います。 www.oreilly.co.jp 本シリーズ:リーダブルコードの解説 各記事のリンクはこちらをクリック リーダブルコード 未来の自分を助ける 01 - こだわりデベロッパーズノート リーダブルコード 未来の自分を助ける 02 - こだわりデベロッパー…
はじめに ゴール 環境 1章 スケルトン(雛形)を作成 pomの内容について 1.6.2 TODO テストコンパイル設定 1.6.3 TODO リソースの配置 2章 3章 3.3 4章 5章 6章 7章 7.3.1 8章 8.1.1 9章,10章 参考情報 はじめに 業務でmavenを利用している、正直、雰囲気で触っている。 苦手意識を克服することを目標に、mavenの学習に取り組もうと思う 公式のDocumentを読んで理解できるタイプではないため、Maven3 チュートリアルに沿って手を動かしながら学習をする ※TECHSCORE(テックスコア)と迷ったが前者のほうが情報が圧倒的に新しいの…
フィードバック 古い習慣では生き残れない窮地になってはじめて、より優れた新製品開発手法が必然的に生まれてきた。 そのような、堅牢な開発プロセスにはかならず2つの共通点がある。 1.秀逸ですばやいフィードバック 2.優れた詳しい規律 リリース計画 計画は、市場ニーズ(あるいはビジネスニーズ)、製品コンセプト、目標コスト、稼働タイミングを見極めるところからはじまる。 1.初期投資期間中には、詳細な長期計画を作らず、短期間でインクリメンタルなリリース計画を作成する。 2.直近の開発についての計画を立て、最も重要な機能を見つけ出し、その土台となるアーキテクチャを確立させる。 3.収益獲得(や投資の回収…
JJUG CCC 2023 Spring で最近のGradleにはversion catalogというmultiple projectでバージョン定義を共有する仕組みがあるのを知った。その時に講演していた方のプレゼン資料は Gradleと仲良くなる第一歩 ~小規模PJから大規模PJへ~ にある。 https://docs.gradle.org/current/userguide/platforms.html 公式ドキュメントとしてはこのあたりを参照している。 ソースコードなど 以下の記述においてdependencyResolutionManagementはsettings.gradleに記述す…