尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

如何10分钟跑通flint:完整构建安装指南与常见坑清单

如何10分钟跑通flint:完整构建安装指南与常见坑清单 如何10分钟跑通flint完整构建安装指南与常见坑清单【免费下载链接】flintAn open-source lint program for C developed by, and formerly used at Facebook.项目地址: https://gitcode.com/gh_mirrors/fli/flintflint是 Facebook 开源的C Lint 工具曾在 Facebook 内部用于 C 代码审查与静态分析能自动检测命名规范、头文件保护、异常处理等常见代码坏味道。本指南带你10 分钟完成 flint 的完整构建安装从环境依赖、三条命令编译到一次验证跑通最后附一份常见坑清单。 先认识一下 flintflint 提供两个版本都包含在同一个仓库中D 语言版主力版本根目录下的Main.d、Checks.d、Tokenizer.d等.d文件是官方持续支持的实现编译后就是flint主程序C 版历史参考cxx/子目录下的旧实现仅供对比阅读⚠️ 官方说明构建仅在 Ubuntu 上测试过其他系统需要自行适配同时项目已不再积极维护建议按学习/研究心态使用。 第一步准备好构建依赖约5分钟flint 基于 Autotools 构建且主程序由D 语言编译器编译见 configure.ac 中对gdc/dmd/ldc的检测。以 Ubuntu 为例一次性装齐依赖sudo apt-get install build-essential gdc automake autoconf \ autoconf-archive libtool libboost1.54-all-dev \ libgoogle-glog-dev libgflags-dev此外还需要三个第三方库官方依赖说明见 README.md依赖库作用follyFacebook 的 C 基础库C 版 flint 的核心依赖double-conversionfolly 的依赖编译时需要把它的头文件/库路径传给 configuregoogletest单元测试框架C 版测试用⚡ 第二步三条命令完成 flint 编译克隆仓库后在根目录执行git clone https://gitcode.com/gh_mirrors/fli/flint cd flint然后依次运行前两条来自官方 README 的构建说明# 1. 重新生成 configure 脚本build-aux/ 会自动创建 autoreconf --install # 2. 配置构建把 double-conversion 的库路径与头文件路径填进去 LDFLAGS-Ldouble-conversion安装路径 \ CPPFLAGS-Idouble-conversion安装路径/src ./configure # 3. 编译 make构建成功后根目录会生成 4 个可执行文件构建目标定义在Makefile.amflint—— 主程序C Lint 检查器flint_test—— D 版单元测试cxx_replace、cxx_tokenize—— 代码替换与词法切分工具✅ 第三步1分钟验证跑通第一次 C 代码检查仓库自带示例文件test_files/Test1.cpp里面有故意埋下的坏代码如std::map abc;这种缺类型参数的写法直接对示例目录执行检查./flint test_files/看到规则命中输出的报错信息就说明 flint 已经成功跑通。常用参数如下参数作用--recursive递归扫描目录默认开启--c_mode只跑 C 模式规则跳过 C 专属检查--include_what_you_use开启include what you use检查--excluderule1,rule2按名称排除指定检查规则两个实用小技巧在某个目录放一个.nolint空文件即可让整个目录跳过检查用注释对// %flint: pause与// %flint: resume包裹住代码块临时忽略其中的告警 常见坑清单90% 的报错都在这坑报错/现象解决办法没装 D 编译器configure阶段报No D Compiler found安装gdc或ldc这是最高频的坑configure.ac检测到gdc/dmd/ldc之一才会继续缺 folly / gflagsPlease install the folly library先按 folly 官方说明安装再apt-get install libgflags-dev漏传 double-conversion 路径configure找不到相关库/头文件严格按上面格式设置LDFLAGS和CPPFLAGS老项目在 GCC 10 上编译失败大量 C0x 语法报错flint 依赖-stdc0x旧标准新工具链需降级或使用旧版 GCC非 Ubuntu 系统依赖缺失各种No such file or directory官方仅测试过 Ubuntu需按报错自行补依赖误以为有包管理直接安装找不到apt install flintflint 无官方发行包只能源码构建 关键文件速查跑通之后往哪看Main.d—— 主程序入口定义了参数解析与检查规则注册表Checks.d—— 所有 Lint 规则的实现include 保护、智能指针用法等Tokenizer.d—— C 词法切分器规则都基于 token 流工作FileCategories.d/Ignored.d—— 文件类型判定与忽略逻辑Test.dtest_files/Test1.cpp—— 单测入口与示例代码configure.ac—— 自动配置脚本D 编译器检测就写在这里m4/—— boost 检测等 autoconf 宏定义TARGETS—— Facebook 内部构建系统的目标描述文件按以上三步走10 分钟内你就能在自己的机器上拥有一个可运行的 Facebook 级 C 静态检查器遇到报错时对照常见坑清单基本都能快速定位。【免费下载链接】flintAn open-source lint program for C developed by, and formerly used at Facebook.项目地址: https://gitcode.com/gh_mirrors/fli/flint创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表