我需要在一个庞大的遗留Python代码库中进行重构。
我常常认为“这些生产线不再在生产中被执行”。
但我不确定。
有一些测试能触及这些线。但是我不能确定在生产中是否真的没有使用。
在这种情况下我能做什么?
这个问题是关于生产系统的覆盖。此问题与测试/CI期间的覆盖率无关。
我不想评论这条线,因为我不想在生产系统中产生错误。
发布于 2018-05-14 13:18:40
通常的做法是在代码行中使用日志记录。你有一段你认为没有使用的代码。您可以在代码块的开头添加try catch块。在尝试捕获中,将行添加到与可疑代码块相同的特定json中。
try:
with open("block1.dat", "rb") as file:
activity = pickle.load(file)
curtime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
currentact = "dt = {}; code done that: var1 = {},
var2 = {}".format(curdate, var1, var2)
activity.append(currentact)
file = open("block1.dat", "ab")
pickle.dump(activity, file)
file.close()
except Exception: pass您可以使用电报api来记录代码。过一段时间,您将了解代码的工作频率以及它的功能。然后监视一段时间,如果一个月内什么都没有发生,就可以对这个块进行注释。
发布于 2018-05-19 04:59:59
生产系统是确定性的吗?是互动的吗?控制流是否依赖于输入数据?您可以访问所有可能的输入吗?这些测试的存在是有原因的还是仅仅是因为?
我会根据日志记录所需的内容仔细删除代码,除非我知道不存在很少发生的异常情况。
我将遵循常见的代码路径,试着逐段理解代码基,以便找出可以简化的内容。如果不了解你正在处理的系统,就很难给出更具体的建议。
发布于 2019-02-26 09:35:26
我们使用一个简单的模式来处理这个问题:looks_like_dead_code(my_string)
这是一个记录字符串"my_string“的方法。
示例用法:
if ext == '.jpe':
looks_like_dead_code('2018-11-30 tguettler: looks fixed in mime_type_to_extension')不强制使用日期和开发人员登录,这只是最佳实践。
如果行被执行,负责检查日志的人将与开发人员交谈。
由于我们的生产环境大约每两周更新一次,所以您可以确保在过去的几个月中没有执行这一行。
我喜欢这个解决方案,因为在大多数情况下是这样的:
https://stackoverflow.com/questions/50209123
复制相似问题