警告コード
このドキュメントでは、YaoXiang コンパイラが生成する可能性のある警告コードを示します。警告はコンパイルを阻止するわけではありませんが、コードに潜在的な問題が存在する可能性を示しています。
設定
yaoxiang.toml で警告の動作を設定できます:
toml
[lint]
# デッドコード警告レベル:off | warn | deny
dead-code = "warn"off:警告を無効化warn:警告を表示(デフォルト)deny:警告をエラーとして扱う
警告一覧
W1001: 未使用のエクスポート関数
原因:エクスポートされた関数がどのコードからも呼び出されていません。
yaoxiang
pub dead_function: () -> Void = { } // W1001: 未使用のエクスポート関数
main: () -> Void = {
// dead_function は一度も呼び出されていない
}提案:
- 関数を外部から使用する必要がない場合は、
pub修飾子を削除してください - 関数を保持する必要があるが現在使用されていない場合は、設定で
dead-code = "off"を指定してください
W1002: 未使用のエクスポート型
原因:エクスポートされた型(type エイリアスまたはカスタム型)が一度も使用されていません。
例:
yaoxiang
DeadType: Type = Int // W1002: 未使用のエクスポート型
main: () -> Void = {
x = 42
}提案:
- 型をエクスポートする必要があるが現在使用されていない場合は、この警告を無視してください
W1003: 未使用のインポート
原因:use 文でインポートされたモジュールまたはシンボルが一度も使用されていません。
yaoxiang
use std.json // W1003: 未使用のインポート
main: () -> Void = {
// json モジュールは一度も使用されていない
}提案:
- 未使用のインポートを削除し、コードを整然と保つ
- インポートを保持する必要がある場合(副作用のため)、
use std.json.*を使用するか、コメントを追加して説明してください
W1004: 未使用のエクスポート変数
原因:pub でエクスポートされた変数が一度も読み取られていません。
例:
yaoxiang
pub dead_var = 42 // W1004: 未使用のエクスポート変数
main: () -> Void = {
// dead_var は一度も読み取られていない
}提案:
- 不要な
pub修飾子を削除してください - 変数をエクスポートする必要があるが現在使用されていない場合は、この警告を無視してください
W1005: 未使用のエクスポートメソッド
原因:型でエクスポートされたメソッドが一度も呼び出されていません。
例:
yaoxiang
Foo: Type = { value: Int }
pub Foo.dead_method: (self: Foo) -> Void = { } // W1005: 未使用のエクスポートメソッド
main: () -> Void = {
foo = Foo(1)
// dead_method は一度も呼び出されていない
}提案:
- 不要な
pub修飾子を削除してください - メソッドを保持する必要があるが現在使用されていない場合は、この警告を無視してください
W1063: const ジェネリック制約を評価できません
原因:const ジェネリックパラメータの値制約をコンパイル時に評価できません。
メッセージ:const ジェネリック制約を評価できません: ({var} = {value})
yaoxiang
BadArray(Int, n) // n はコンパイル時定数ではありません提案:
- const パラメータがコンパイル時定数であることを確認してください
W1080: コンパイル時証明の降格
原因:制約をコンパイル時に証明できないため、ランタイムチェックに降格されました。
メッセージ:コンパイル時に制約を証明できないため、ランタイムチェックに降格されました
提案:
- 証明関数を追加して安全性を向上させることを検討してください
警告レベルの詳細
| レベル | 効果 |
|---|---|
off | この警告を完全に無効化 |
warn | 警告を表示してコンパイルを続行(デフォルト) |
deny | 警告をエラーとして扱い、コンパイルを停止 |
使用シーン
- 開発中:
warnレベルを使用してコードの潜在的な問題を把握する - リリース前:
denyレベルを使用して未使用のコードがないことを確認する - レガシーコード:
offレベルを使用して警告を一時的に無視する
エラーコードとの違い
警告コードは W プレフィックスを使用します(例:W1001)、エラーコードは E プレフィックスを使用します(例:E1001)。
- エラー (Error):コンパイルを阻止し、修正が必要
- 警告 (Warning):潜在的な問題を示し、修正は任意
