このガイドでは、Cataclysm: Bright Nightsにおけるコードの整形と静的解析の方法について説明します。
クイックリファレンス
| ファイル形式 | ツール | コマンド |
|---|---|---|
C++ (.cpp/.h) |
astyle | cmake --build build --target astyle |
| JSON | json_formatter | cmake --build build --target style-json-parallel |
| Markdown | deno fmt | deno fmt |
| TypeScript | deno fmt | deno fmt |
| Lua | dprint | deno task dprint fmt |
自動フォーマット
プルリクエスト(PR)は、autofix.ciによって自動的にフォーマットされます。コードにスタイル違反がある場合、修正のためのコミットが自動的にプッシュされます。
Tip
autofixによるコミット後のマージコンフリクトを避けるには、以下のいずれかを行ってください:
git pullを実行して autofix のコミットを取り込んでから作業を継続する。- プッシュする前にローカルでフォーマットを実行する(必要に応じて
git push --forceを行う)。
C++ のフォーマット
C++ ファイルは astyleを使用してフォーマットします。
# astyle のインストール (Ubuntu/Debian)
sudo apt install astyle
# astyle のインストール (Fedora)
sudo dnf install astyle
# astyle のインストール (macOS)
brew install astyle
CMake を使用する場合
# 設定(一度だけ実行、または既存のビルドを使用)
cmake --preset lint
# すべてのC++ファイルをフォーマット
cmake --build build --target astyle
スタイルの設定は、リポジトリのルートにある .astylerc に記述されています。
JSON のフォーマット
JSONファイルは、プロジェクトのソースからビルドされたカスタムツール json_formatterを使用してフォーマットします。
CMake を使用する場合
# 設定(一度だけ実行、または既存のビルドを使用)
cmake --preset lint
# すべてのJSONファイルを並列でフォーマット
cmake --build build --target style-json-parallel
# すべてのJSONファイルを順次フォーマット (低速ですがデバッグに便利です)
cmake --build build --target style-json
Note
data/names/ ディレクトリは、名前ファイルに特殊なフォーマット要件があるた
め、フォーマットの対象から除外されています。
JSONの構文チェック (Validation)
フォーマットを行う前に、JSON の構文を検証できます:
build-scripts/lint-json.sh
これはすべてのJSONファイルに対してPythonの json.tool を実行し、構文エラーを検出します。
Markdown & TypeScript のフォーマット
MarkdownおよびTypeScriptファイルはDenoを使用してフォーマットします。
# Deno のインストール
curl -fsSL https://deno.land/install.sh | sh
# Markdown と TypeScript のフォーマット
deno fmt
Lua のフォーマット
Luaファイルは、Deno 経由でdprintを使用してフォーマットします。
# Lua ファイルのフォーマット
deno task dprint fmt
ダイアログのバリデーション
NPCのダイアログファイルには、追加の検証項目があります:
tools/dialogue_validator.py data/json/npcs/* data/json/npcs/*/* data/json/npcs/*/*/*
コミット前のワークフロー
コミットする前に、以下のチェックを実行してください:
# 設定の実行 (フォーマットツールを含むビルドディレクトリを作成)
cmake --preset lint
# すべてのコードをフォーマット
cmake --build build --target astyle # C++
cmake --build build --target style-json-parallel # JSON
deno fmt # Markdown/TypeScript
deno task dprint fmt # Lua
CI 連携
CI パイプラインでは、以下のチェックが自動的に実行されます:
- JSON 構文の検証 -
build-scripts/lint-json.sh - JSON フォーマット -
cmake --build build --target style-json-parallel - ダイアログのバリデーション -
tools/dialogue_validator.py
いずれかのチェックに失敗すると、ビルドは失敗します。プッシュする前に、上記のコマンドを使用してローカルで問題を修正してください。
エディタの統合
VS Code
自動フォーマットのために以下の拡張機能をインストールしてください:
Vim/Neovim
設定ファイルに以下を追加してください:
" Format C++ with astyle on save
autocmd BufWritePre *.cpp,*.h !astyle --options=.astylerc %
" Format with deno
autocmd BufWritePre *.md,*.ts !deno fmt %
トラブルシューティング
"json_formatter not found" または "style-json-parallel target not found"
CMakeの設定を lint プリセット、または -DJSON_FORMAT=ONを指定して行っているか確認してください:
cmake --preset lint
cmake --build build --target json_formatter
"astyle target not found"
astyle がインストールされており、PATH が通っているか確認してください:
# astyle が利用可能か確認
which astyle
# インストールされていない場合 (Ubuntu/Debian)
sudo apt install astyle
その後、CMake を再構成します:
cmake --preset lint
astyle の実行結果が異なる
リポジトリのルートにある.astylerc を使用しているか確認してください:
astyle --options=.astylerc src/*.cpp