リンター
Wippyには、Luaコードの型チェックと静的解析を行うビルトインリンターが含まれています。wippy lint で実行します。
wippy lint # Check all Lua entrieswippy lint --level hint # Show all diagnostics including hintswippy lint --json # Output in JSON formatwippy lint --ns app # Check only the app namespacewippy lint --summary # Group results by error codeチェック対象
Section titled “チェック対象”リンターはすべてのLuaエントリ種別を検証します:
function.lua- 関数library.lua- ライブラリprocess.lua- プロセスworkflow.lua- ワークフロー
それらのプリコンパイル済み .bc バリアント(function.lua.bc、library.lua.bc、process.lua.bc、workflow.lua.bc)もリントされます。
各エントリはパースされ、型チェックされ、正確性の問題が解析されます。
重大度レベル
Section titled “重大度レベル”診断には3つの重大度レベルがあります:
| レベル | 説明 |
|---|---|
error | 修正が必要な型エラーと正確性の問題 |
warning | バグの可能性が高いパターンや問題のあるパターン |
hint | スタイルの提案と情報メモ |
--level で表示するレベルを制御します:
wippy lint --level error # Errors onlywippy lint --level warning # Warnings and errors (default)wippy lint --level hint # Everythingエラーコード
Section titled “エラーコード”パースエラー
Section titled “パースエラー”| コード | 説明 |
|---|---|
P0001 | Lua構文エラー - ソースをパースできません |
型チェックエラー (Eシリーズ)
Section titled “型チェックエラー (Eシリーズ)”型チェッカーエラー (E0001+) は、型システムが検出した問題を報告します: 型の不一致、未定義の変数、無効な操作、およびその他の正確性の問題です。これらは常にエラーとして報告されます。
local x: number = "hello" -- E: string not assignable to number
local function add(a: number, b: number): number return a + bend
add("one", "two") -- E: string not assignable to numberリントルール警告 (Wシリーズ)
Section titled “リントルール警告 (Wシリーズ)”リントルールはコードスタイルと品質のチェックを提供します。--rules で有効にします:
wippy lint --rules| コード | ルール | 説明 |
|---|---|---|
W0001 | no-empty-blocks | 空のブロック文 |
W0002 | no-global-assign | グローバル変数への代入 |
W0003 | no-self-compare | 値の自己比較 |
W0004 | no-unused-vars | 未使用のローカル変数 |
W0005 | no-unused-params | 未使用の関数パラメータ |
W0006 | no-unused-imports | 未使用のインポート |
W0007 | no-shadowed-vars | 外部スコープの変数を隠蔽 |
--rules なしでは、型チェック(PコードとEコード)のみが実行されます。
フィルタリング
Section titled “フィルタリング”名前空間によるフィルタリング
Section titled “名前空間によるフィルタリング”--ns を使用して特定の名前空間をチェックします:
wippy lint --ns app # Exact namespace matchwippy lint --ns "app.*" # All under appwippy lint --ns app --ns lib # Multiple namespaces選択されたエントリの依存関係は型チェックのためにロードされますが、それらの診断は報告されません。
エラーコードによるフィルタリング
Section titled “エラーコードによるフィルタリング”コードで診断をフィルタリングします:
wippy lint --code E0001wippy lint --code E0001 --code E0004件数によるフィルタリング
Section titled “件数によるフィルタリング”表示する診断の数を制限します:
wippy lint --limit 10 # Show first 10 issues出力フォーマット
Section titled “出力フォーマット”テーブルフォーマット (デフォルト)
Section titled “テーブルフォーマット (デフォルト)”各診断はソースコンテキスト、ファイルの場所、およびエラーメッセージとともに表示されます。結果はエントリ、重大度、行番号の順にソートされます。
サマリー行に合計が表示されます:
Checked 42 entries: 5 errors, 12 warningsサマリーフォーマット
Section titled “サマリーフォーマット”名前空間とエラーコードで診断をグループ化します:
wippy lint --summaryBy namespace:
app 15 issues (5 errors, 10 warnings) lib 2 issues (2 warnings)
By error code:
E0001 [error ] 5 occurrences E0004 [error ] 3 occurrences
Checked 42 entries: 5 errors, 12 warningsJSONフォーマット
Section titled “JSONフォーマット”CI/CD統合のための機械可読出力:
wippy lint --json{ "diagnostics": [ { "entry_id": "app:handler", "code": "E0001", "severity": "error", "message": "string not assignable to number", "line": 10, "column": 5 } ], "total_entries": 42, "error_count": 5, "warning_count": 12, "hint_count": 0}リンターは繰り返しの実行を高速化するために結果をキャッシュします。キャッシュキーはソースコードのハッシュ、メソッド名、依存関係、および型システムの設定に基づいています。
結果が古いと思われる場合はキャッシュをクリアしてください:
wippy lint --cache-resetCI/CD統合
Section titled “CI/CD統合”自動チェックにはJSON出力と終了コードを使用します:
wippy lint --json --level error > lint-results.jsonリンターはエラーが見つからない場合は終了コード0で終了し、エラーがある場合は非ゼロで終了します。
GitHub Actionsステップの例:
- name: Lint run: wippy lint --level warningフラグリファレンス
Section titled “フラグリファレンス”| フラグ | 短縮形 | デフォルト | 説明 |
|---|---|---|---|
--level | warning | 最小重大度レベル (error, warning, hint) | |
--json | false | JSON形式で出力 | |
--ns | 名前空間パターンでフィルタリング | ||
--code | エラーコードでフィルタリング | ||
--limit | 0 | 表示する診断の最大数 (0 = 無制限) | |
--summary | false | エラーコードでグループ化 | |
--no-color | false | カラー出力を無効化 | |
--rules | false | リントルールを有効化(Wシリーズのスタイル/品質チェック) | |
--cache-reset | false | リント前にキャッシュをクリア | |
--lock-file | -l | wippy.lock | ロックファイルのパス |