查找未使用的protobuf消息

问题描述

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

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

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

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

解决方法

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

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

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

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

这两种方法均应允许您检测将来的编译错误并在必要时恢复消息。

请谨慎考虑,以确保在消息变得多余时,该过程将上述存档机制作为作为正式存档机制,而不是将其作为定期的“让我们开始寻找冗余”。

>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...