python - 用于管理 C++ 项目的 Python 脚本
问题描述
在我的团队中,我决定使用 Python3 脚本来管理用 C++ 编写的项目。因此,我使用脚本将项目上方的所有功能集中在一个地方。我将它用于:
- 启动制作
- 启动测试
- 编译文档
- 收集统计数据
- 检查编码风格
例如我打电话:./foo.py stat
收集统计数据。里面有一堆实用程序。我使用sys
and与他们一起操作os
。
我觉得这很好,但我担心这是一种不好的做法,最终会变成问题,而且这是一种不好的品味。
以下是问题:
- 这是一种常见的做法吗?
- 如果不是那为什么?
- 最好的解决方案是什么?
- 一些附加信息
解决方案
对这些任务使用 python 脚本是否是一个好的解决方案似乎对我来说是一个特定的项目,尝试回答这样的问题可能还不够。尽管如此,让我尝试分类一下。
- 启动制作
- 启动测试
- 编译文档
您应该问自己为什么调用make
,make test
并且make docs
还不够。中间的 python 层对我来说似乎有点矫枉过正,因为我想不出它增加了这么多便利的场景。如果make
调用太复杂(例如,因为必须指定很多参数),我会首先尝试对Makefile
自身进行处理以使其更易于使用。
- 收集统计数据
我感觉合理。
- 检查编码风格
“编码风格”意味着很多东西,但是当您尝试强制执行命名约定、函数长度或代码格式时,我建议您使用clang-tidy和clang-format不要重新发明轮子。这些工具非常强大,可以通过可以成为项目一部分的配置文件来控制。如果可以方便地从 python 脚本调用这些工具,或者使用 python 脚本生成一个compile_commands.json
,那对我来说似乎很好。
一般来说,不同的任务需要不同的工具,我不会尝试围绕这些工具构建一个通用包装器来创建一个整体界面,因为您的 python 脚本会随着时间的推移而增长(版本控制、调试/发布打包...... .) 直到它变得难以管理。更喜欢做一件事的小而简单的脚本(顺便说一下,这可能是你的方法的情况,我不知道)。
要评论您帖子的最后一些问题,
- 这是一种常见的做法吗?
用于特定任务的小脚本,例如生成一些 repo 统计信息:是的。用于管理构建、发布、文档的大型手写工具:我会说不。
- 如果不是那为什么?
像这样的跨平台功能很难做到正确,因为存在无限数量的边缘情况。滚动您自己的工具可能会消耗太多时间。相反,仔细配置现有工具可能是最有效的策略。另外,如果您使用已建立的工具,(新)开发人员可能会习惯它。
推荐阅读
- angular - PrimeNg 树:当我单击按钮以在父/子节点上打开模式时,复选框选择被取消选择
- mysql - mysql 从多个表创建视图
- c - 在循环中添加和除数时错误的小数结果
- python - 如何从image_URL下载图像并计算python中的重复次数?
- javascript - 选择选项后无法使用 jQuery 禁用输入元素
- ruby-on-rails - 如何将列类型从整数更改为小数,小数点后有一个字母?
- postgresql - 在 Postgresql 12 中,主服务器数据发生故障和从服务器故障转移时会发生什么情况?
- python - 有没有办法保存倒数计时器的当前时间?
- javascript - React Sticky div with position relative - 使用相对位置时如何实现平滑的 style.top/style.transform translateY 变化?
- android - Android 单个活动中的多个回收视图