Skip to content

警告コード

このドキュメントでは、YaoXiang コンパイラが生成する可能性のある警告コードをリストします。警告はコンパイルを阻止しませんが、コードに潜在的な問題がある可能性を示しています。

設定

yaoxiang.toml で警告動作を設定できます:

toml
[lint]
# デッドコード警告レベル:off | warn | deny
dead-code = "warn"
  • off:警告を無効化
  • warn:警告を表示(デフォルト)
  • deny:警告をエラーとして扱う

警告リスト

W1001: 未使用のエクスポートされた関数

原因:エクスポートされた関数がどのコードからも呼び出されていない。

yaoxiang
pub dead_function: () -> Void = { }  // W1001: 未使用のエクスポートされた関数

main = {
    // dead_function が呼び出されたことがない
}

提案

  • 関数が外部使用を必要としない場合は、pub 修飾子を削除
  • 関数を保持する必要があるが今は使用されていない場合は、設定で dead-code = "off" を設定

W1002: 未使用のエクスポートされた型

原因:エクスポートされた型(type エイリアスまたはカスタム型)が使用されていない。

yaoxiang
DeadType: Type = Int  // W1002: 未使用のエクスポートされた型

main = {
    x = 42
}

提案

  • 型をエクスポートする必要があるが今は使用されていない場合は、この警告を無視

W1003: 未使用のインポート

原因use 文でインポートされたモジュールまたはシンボルが使用されていない。

yaoxiang
use std.json  // W1003: 未使用のインポート

main = {
    // json モジュールが使用されたことがない
}

提案

  • 未使用のインポートを削除してコードを整潔に保つ
  • インポートを保持する必要がある場合(副作用のため)は、use std.json.* を使用するか、コメントで説明を追加

W1004: 未使用のエクスポートされた変数

原因pub でエクスポートされた変数が読み取られたことがない。

yaoxiang
pub dead_var = 42  // W1004: 未使用のエクスポートされた変数

main = {
    // dead_var が読み取られたことがない
}

提案

  • 不要な pub 修飾子を削除
  • 変数をエクスポートする必要があるが今は使用されていない場合は、この警告を無視

W1005: 未使用のエクスポートされたメソッド

原因:型でエクスポートされたメソッドが呼び出されたことがない。

yaoxiang
Foo: Type = { value: Int }

pub Foo.dead_method: (self: Foo) -> Void = { }  // W1005: 未使用のエクスポートされたメソッド

main = {
    foo = Foo(1)
    // dead_method が呼び出されたことがない
}

提案

  • 不要な pub 修飾子を削除
  • メソッドを保持する必要があるが今は使用されていない場合は、この警告を無視

警告レベルの詳細

レベル効果
offこの警告を完全に無効化
warn警告を表示するがコンパイル継続(デフォルト)
deny警告をエラーとして扱い、コンパイルを阻止

使用シナリオ

  • 開発中warn レベルでコードの潜在的な問題を確認
  • リリース前deny レベルで未使用のコードがないことを確認
  • レガシーコードoff レベルで一時的に警告を無視

エラーコードとの違い

警告コードは W プレフィックス(例:W1001)を使用し、エラーコードは E プレフィックス(例:E1001)を使用します。

  • エラー (Error):コンパイルを阻止し、修正が必要
  • 警告 (Warning):潜在的な問題を示唆し、修正は任意