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):提示潜在问题,可选择修复