【问题标题】:Find unused protobuf messages查找未使用的 protobuf 消息
【发布时间】:2021-01-01 08:59:56
【问题描述】:

我们有一个包含许多原型文件的大型项目。其中许多包含不再在任何地方使用的消息,因此我想删除它们。但是,由于项目的规模,要查看哪些消息仍然是必要的,哪些不是。

我最初的方法是注释掉消息并重新注释,直到编译器满意为止(Java、C++)。不幸的是,我们也有大量的 python,这种方法不起作用,并且总是运行所有的测试用例太昂贵了。

以前有人遇到过这种情况吗?是否有任何工具可以帮助检测跨 Java、C++ 和 Python 的未使用的 protobuf 消息?

编辑: 我可能应该补充一点,我们目前(仍然)可以控制它的所有用途,所以我们项目之外的人都没有使用它们。

【问题讨论】:

    标签: refactoring protocol-buffers protobuf-java protobuf-c protobuf-python


    【解决方案1】:

    这是一个有趣的问题,但我怀疑(!?)工具面临的挑战是很难(不可能?)确定原型的下游依赖关系。

    protobuf 源被编译为至少一种语言的源,然后这些源作为依赖项导入到代码中。此代码本身(通常)被编译和捆绑(例如,作为某处的容器映像)并部署到生产中。

    此外,原型通常通过定义软件接口的方式分发给其他人(其他团队、部门、组织等),并且这些实体中的每一个都创建相同的下游数字链。

    您可能希望通过注释掉消息或将 protos 移动到存档目录来进行正式的存档过程,而不是“删除”(擦除)。

    这些方法中的任何一种都应该允许您检测未来的编译错误并在必要时恢复消息。

    谨慎的做法可能是确保当消息变得冗余时,该过程包括上述归档机制作为正式的归档机制,而不是作为周期性的“让我们去寻找冗余”。 p>

    【讨论】:

    • 是的,好点。将其部署为依赖项肯定会使过程复杂化。目前,我们仍处于控制所有使用的情况,所以目前,我们仍然可以假设,没有其他团队/部门/组织在使用它们......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多