警告码
本文档列出 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):提示潜在问题,可选择修复
