[ci] cppcheck 产生的警告
□ 总结
" cppcheck " 警告如果被确定为真正的问题,而不是虚假的肯定,就应得到解决。
□动机
["cppcheck" (http://cppcheck.sourceforge.net/)是C++代码的静态分析器.
这个工具可以捕捉到一些没有被其他linters所捕获或用消毒器进行测试的问题类别,它这样做是使用轻量级方法,不需要汇编一个有仪器的版本的库.
请参看https://sourceforge.net/p/cppcheck/wiki/ListOfchecks/ 完整的支票列表.
□ 说明
与LightGBM对cpplint'(#1990)和mypy'(#3867)采取的做法相似,在一段时间内,这些检查可以不间断地进行,而不阻碍合并,就像关于代码状况的额外信息一样。
见http://cppcheck.sourceforge.net/ 关于如何在不同操作系统中安装"cppcheck"的指示.
LightGBM是一个庞大而复杂的项目,其代码库包含许多可能组合的QQifdef'条件. 每个附加的"`#"("ifdef")会增加另一个需要尝试的组合,这可以大大地减慢检查速度,并对所生产的日志数量产生很大影响.
为了保证‘cppcheck'不会花太长的时间,并确保在完成后能看到所有日志,我建议采取以下行动:
- 直接输出到文件
- 运行此检查前删除 LightGBM 中作为子模块的第三方库
- 注:您可以随时用“git submodule init QQt submodule recursive”来恢复这些内容。
- 未定义使用 " -U " 定义的预处理器,以限制所搜索的组合数量(您总是可以有选择地删除这些 " U " 检查,以便进行更彻底的检查!)
贝壳 rm - r./ external libs
检查 部队
- 完全可以吗?
--std=c++17
-我包括/\\\\\\\\\# - 乌德比格? -ULABEL T USE DOUBLE -ULGB R BUILD吗?
- 苏克,苏克,苏克 -吴善? -吴善? -U SVR4,我们...
- 乌斯弗尔4号 -UTIMETAG(猫) -UUSE CUDA(音乐剧)
- 乌斯克格普
- 乌斯克・梅普 曲线/\
cppcheck.txt 2%% 1
要生成带有警告的正行列表, 请运行如下 :
贝壳
# 注:下面的LGBM 条件处理c api.cpp中的函数是该软件的公用接口这一事实
共享的图书馆,所以没关系 他们看起来"未使用"
猫 Cppcheck.txt \
[a-zA-Z] $" $
Grep -v - E'LGBM [A-Za-z]+. *从未使用过'.把它插到"wc -l"会给你留下的警告次数.
如何贡献
通过在本地运行“ cppcheck” 来查看当前警告列表( 遵循上面“ 描述” 一节中的步骤) 。
非常赞赏针对“cppcheck”警告的代码库或类型中的某一部分提出的小型牵引请求。 请不要提交Pull Request试图同时纠正许多 " cppcheck " 警告。
在提交Pull Request时,在说明中至少包括以下内容:
- 与这一问题的联系
- 记录 . . . . . . .
内容来源: lightgbm-org/LightGBM