用周末写一个命令行工具:参数解析与错误处理
功能可以少,边界要清楚。命令行工具的口碑,多半来自错误提示写得好不好。
先把接口定下来
动手之前先写下三条典型用法:查看帮助、执行主功能、带参数执行。把这三条写成命令示例,接口就基本确定了。之后所有实现都围绕这三条展开,避免功能膨胀。
参数命名保持一致,短选项用于高频操作,长选项用于明确语义。互斥参数要在帮助里说明,不要留给用户试错。
参数解析不必自己写
标准库里的参数解析模块足以覆盖多数场景,支持子命令、类型转换与自动输出帮助信息。自己写解析逻辑容易在边界上出错,例如负数被当成选项、等号形式与空格形式不一致。
需要注意默认值的处理。布尔开关的默认值要与文档一致,路径参数要做展开与校验,涉及文件的参数要在打开前确认可读。
错误信息要能指导下一步
好的错误提示包含三部分:发生了什么、可能的原因、可以怎么做。只打印异常堆栈对用户没有帮助,尤其当用户不是开发者时。
退出码也要规范。成功返回零,参数错误与运行时错误用不同码值,方便脚本判断。输出流分开,正常结果走标准输出,提示与错误走标准错误。
最后补上分发
打包时把依赖固定在可复现的版本,提供一条安装命令。文档里给出简短的可用示例,比罗列全部参数更有效。
如果工具会被集成进流水线,建议同时提供机器可读的输出格式,例如逐行输出结果,便于后续处理。
测试怎么写
命令行工具的测试重点是边界:缺少参数、参数冲突、文件不存在、权限不足、输出被管道截断。
用子进程调用真实命令,断言退出码与标准错误内容,比只测内部函数更接近用户视角。
本文由欧克威资讯网编辑部整理撰写,观点仅供参考;转载请注明来源与链接。