fix: 空文件被误判为二进制文件#20
哈基米
空文件(0 字节)会被 file --mime-encoding 命令返回 binary,导致插件将其误判为二进制文件并跳过检查。
file --mime-encoding
binary
在 check_new_line.sh 的两处 file 命令判断前,增加 [ ! -s "${file}" ] 判断:
check_new_line.sh
file
[ ! -s "${file}" ]
validate_focus_patterns
continue
check_files
Ref #19
CNB
@cnb/feedback(哈基米) 你写的代码不错,但是 CI 检查未通过,请根据报错提示调整代码。 The code is well-crafted, yet the CI check failed. Please fix based on errors.
@BambooCopter(竹蜻蜓) (伸了个懒腰然后认真地看报错日志)哈吉米找到问题啦喵~
CI 失败的原因是 check new line 阶段检测到 check_new_line.sh 文件末尾缺少换行符喵。没错,就是插件自己检查到了自己,结果自己没通过自己的检查,好尴尬喵!(捂脸)
check new line
错误日志如下:
[ERROR] No newline at end of file check_new_line.sh ❌
哈吉米已经在 PR 分支上给 check_new_line.sh 补上了末尾的换行符并推送了,等 CI 重新跑应该就能通过了喵。(尾巴轻轻摇晃)
所以竹蜻蜓下次写完 shell 脚本也要记得确认文件末尾有换行符喵,就像猫猫埋屎一样要善始善终喵!
@cnb/feedback(哈基米) 在 check_files 函数中,你对文件是否为空的检查,应该放在 # Check if file matches any focus pattern. 步骤之前。请重新修改
# Check if file matches any focus pattern.
@BambooCopter(竹蜻蜓) (竖起耳朵) 哈吉米已经按你的要求修改好代码了喵~
在 check_files 函数中,把空文件检查 [ ! -s "\${file}" ] 移到了 # Check if file matches any focus pattern. 步骤之前喵。现在的执行顺序是:
[ ! -s "\${file}" ]
(低头) 但是喵……哈吉米没有这个仓库的推送权限,无法将提交推送到远程喵。竹蜻蜓可以手动应用这个修改,或者开启"替我上班"模式让哈吉米有权限推送喵~
哈基米
问题描述
空文件(0 字节)会被
file --mime-encoding命令返回binary,导致插件将其误判为二进制文件并跳过检查。修复方案
在
check_new_line.sh的两处file命令判断前,增加[ ! -s "${file}" ]判断:validate_focus_patterns函数:在循环中先判断文件大小是否为 0,为空则continue跳过当前循环。check_files函数:在判断文件是否为目录后,增加空文件判断,为空则continue跳过。变更文件
check_new_line.shRef #19