面试题答案
一键面试基本思路
- 插入标记:在脚本的关键位置,如函数入口、循环起始、条件分支等,插入特殊标记或计数器变量,用于记录代码执行路径。
- 执行脚本:以正常方式运行脚本,使插入的标记被触发,从而记录下实际执行到的代码部分。
- 统计分析:根据标记的触发情况,分析哪些代码被执行,哪些未被执行,以此计算代码覆盖率。
可能用到的工具或方法
- Bash内置变量:利用
$LINENO
变量记录脚本当前执行的行号,在关键位置通过echo等方式输出行号,后续分析输出结果来统计覆盖率。 - 专门工具:
- lcov:虽然主要用于C/C++代码覆盖率统计,但结合一些包装脚本,可以对Bash脚本统计。先在Bash脚本中合适位置添加能触发lcov检测的代码,运行脚本后,用lcov工具生成覆盖率报告。
- Bashcov:专门为Bash脚本设计的代码覆盖率工具,它通过在脚本中插入特殊注释标记,运行脚本后生成覆盖率报告。