Python 用于管理 C++ 项目的脚本
Python script for managing C++ project
在我的团队中,我决定使用 Python3 脚本来管理用 C++ 编写的项目。
因此,我使用该脚本是为了将项目之上的所有功能集中在一个地方。我将它用于:
- 正在启动 make
- 正在启动测试
- 编译文档
- 收集统计数据
- 检查编码风格
例如我调用:./foo.py stat
来收集统计数据。里面有一堆实用程序。我使用 sys
和 os
.
与他们合作
我觉得很好,但我担心这是一种不好的做法,最终会变成问题,而且这是一种不好的品味。
问题如下:
- 这是普遍做法吗?
- 如果不是那是为什么?
- 最好的解决方案是什么?
- 一些附加信息
对于这些任务使用 python 脚本是否是一个好的解决方案似乎对我来说非常具体,尝试回答这样的问题可能还不够。不过让我试着分类一下。
- launching make
- launching test make
- compile docs
您应该问问自己为什么调用 make
、make test
和 make docs
是不够的。中间的 python 层对我来说似乎有点矫枉过正,因为我想不出它会增加这么多便利的场景。如果 make
调用太复杂(例如因为必须指定很多参数),我会首先尝试处理 Makefile
本身以使其更易于使用。
- collect statistics
对我来说很有意义。
- check coding style
"Coding style" 意味着很多东西,但是当您尝试强制执行命名约定、函数长度或代码格式时,我建议您使用 clang-tidy and clang-format 来避免重新发明轮子。这些工具非常强大,可以通过作为项目一部分的配置文件进行控制。如果从 python 脚本调用这些工具很方便,或者使用 python 脚本生成 compile_commands.json
,那对我来说似乎没问题。
一般来说,不同的任务需要不同的工具,我不会尝试围绕这些工具构建一个通用包装器来创建一个整体界面,因为您的 python 脚本会随着时间的推移而增长(版本呢?控制,打包 debug/release...) 直到变得难以管理。更喜欢做一件事的小而简单的脚本(顺便说一下,这可能是你的方法,我不能说)。
评论您 post、
的最后一些问题
- Is it a common practice?
用于生成一些回购统计信息等特定任务的小脚本:是的。用于管理构建、发布和文档的大型手写工具:我会说不。
- If it's not then why?
像这样的跨平台功能很难正确实现,因为有无数种边缘情况。使用自己的工具只会消耗太多时间。相反,仔细配置现有工具可能是最有效的策略。另外,如果您使用成熟的工具,(新)开发人员可能会习惯它。
在我的团队中,我决定使用 Python3 脚本来管理用 C++ 编写的项目。 因此,我使用该脚本是为了将项目之上的所有功能集中在一个地方。我将它用于:
- 正在启动 make
- 正在启动测试
- 编译文档
- 收集统计数据
- 检查编码风格
例如我调用:./foo.py stat
来收集统计数据。里面有一堆实用程序。我使用 sys
和 os
.
我觉得很好,但我担心这是一种不好的做法,最终会变成问题,而且这是一种不好的品味。
问题如下:
- 这是普遍做法吗?
- 如果不是那是为什么?
- 最好的解决方案是什么?
- 一些附加信息
对于这些任务使用 python 脚本是否是一个好的解决方案似乎对我来说非常具体,尝试回答这样的问题可能还不够。不过让我试着分类一下。
- launching make
- launching test make
- compile docs
您应该问问自己为什么调用 make
、make test
和 make docs
是不够的。中间的 python 层对我来说似乎有点矫枉过正,因为我想不出它会增加这么多便利的场景。如果 make
调用太复杂(例如因为必须指定很多参数),我会首先尝试处理 Makefile
本身以使其更易于使用。
- collect statistics
对我来说很有意义。
- check coding style
"Coding style" 意味着很多东西,但是当您尝试强制执行命名约定、函数长度或代码格式时,我建议您使用 clang-tidy and clang-format 来避免重新发明轮子。这些工具非常强大,可以通过作为项目一部分的配置文件进行控制。如果从 python 脚本调用这些工具很方便,或者使用 python 脚本生成 compile_commands.json
,那对我来说似乎没问题。
一般来说,不同的任务需要不同的工具,我不会尝试围绕这些工具构建一个通用包装器来创建一个整体界面,因为您的 python 脚本会随着时间的推移而增长(版本呢?控制,打包 debug/release...) 直到变得难以管理。更喜欢做一件事的小而简单的脚本(顺便说一下,这可能是你的方法,我不能说)。
评论您 post、
的最后一些问题
- Is it a common practice?
用于生成一些回购统计信息等特定任务的小脚本:是的。用于管理构建、发布和文档的大型手写工具:我会说不。
- If it's not then why?
像这样的跨平台功能很难正确实现,因为有无数种边缘情况。使用自己的工具只会消耗太多时间。相反,仔细配置现有工具可能是最有效的策略。另外,如果您使用成熟的工具,(新)开发人员可能会习惯它。