首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:检测生产中从未执行的代码

Python:检测生产中从未执行的代码
EN

Stack Overflow用户
提问于 2018-05-07 07:30:12
回答 3查看 621关注 0票数 9

我需要在一个庞大的遗留Python代码库中进行重构。

我常常认为“这些生产线不再在生产中被执行”。

但我不确定。

有一些测试能触及这些线。但是我不能确定在生产中是否真的没有使用。

在这种情况下我能做什么?

这个问题是关于生产系统的覆盖。此问题与测试/CI期间的覆盖率无关。

我不想评论这条线,因为我不想在生产系统中产生错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-14 13:18:40

通常的做法是在代码行中使用日志记录。你有一段你认为没有使用的代码。您可以在代码块的开头添加try catch块。在尝试捕获中,将行添加到与可疑代码块相同的特定json中。

代码语言:javascript
复制
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来记录代码。过一段时间,您将了解代码的工作频率以及它的功能。然后监视一段时间,如果一个月内什么都没有发生,就可以对这个块进行注释。

票数 3
EN

Stack Overflow用户

发布于 2018-05-19 04:59:59

生产系统是确定性的吗?是互动的吗?控制流是否依赖于输入数据?您可以访问所有可能的输入吗?这些测试的存在是有原因的还是仅仅是因为?

我会根据日志记录所需的内容仔细删除代码,除非我知道不存在很少发生的异常情况。

我将遵循常见的代码路径,试着逐段理解代码基,以便找出可以简化的内容。如果不了解你正在处理的系统,就很难给出更具体的建议。

票数 2
EN

Stack Overflow用户

发布于 2019-02-26 09:35:26

我们使用一个简单的模式来处理这个问题:looks_like_dead_code(my_string)

这是一个记录字符串"my_string“的方法。

示例用法:

代码语言:javascript
复制
    if ext == '.jpe':
        looks_like_dead_code('2018-11-30 tguettler: looks fixed in mime_type_to_extension')

不强制使用日期和开发人员登录,这只是最佳实践。

如果行被执行,负责检查日志的人将与开发人员交谈。

由于我们的生产环境大约每两周更新一次,所以您可以确保在过去的几个月中没有执行这一行。

我喜欢这个解决方案,因为在大多数情况下是这样的:

  1. 您希望修复bug或实现新功能。
  2. 看看代码,看到一些看起来像死代码的行。我指的是无用的代码,因为它不会再被执行了。
  3. 你没时间调查。您可以深入到您的模糊猜测,这是死代码。您希望完成实际工作(修复bug或实现新功能)。见Step1)
  4. looks_like_dead_code()方法为您提供了一种实际操作并为其他开发人员留下便条的方法。它只需要几秒钟就能改善目前的状况。
  5. 如果您有一个Tickler文件系统,您可以提醒自己在六个月内检查这段代码。至少在我的上下文中,如果这一行几个月没有执行,我可以非常肯定这是死代码。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50209123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档