#4539·LightGBM

[ci] cppcheck 产生的警告

作者: jameslamb创建于 2021年8月20日更新于 2026年8月31日
标签help wantedmaintenance

□ 总结

" 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'不会花太长的时间,并确保在完成后能看到所有日志,我建议采取以下行动:

  1. 直接输出到文件
  2. 运行此检查前删除 LightGBM 中作为子模块的第三方库
  • 注:您可以随时用“git submodule init QQt submodule recursive”来恢复这些内容。
  1. 未定义使用 " -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

bash

要生成带有警告的正行列表, 请运行如下 :

贝壳
# 注:下面的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