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: () -> 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):潜在的な問題を示し、修正は任意