gpt4 book ai didi

ruby-on-rails - 有没有办法预处理 ruby​​ 代码并找到运行时会发生的错误?

转载 作者:数据小太阳 更新时间:2023-10-29 07:44:51 25 4
gpt4 key购买 nike

我们有庞大的代码库,我们正在生成一些问题,这些问题在类型语言(如 Java)中会在编译时被捕获,但我们直到在 Ruby 中运行时才捕获它们。这很糟糕,因为我们生成的 bug 大多数时候是打字错误或重构留下一些无效代码。

例子:

def mysuperfunc
# some code goes here

# this was a valid call but not anymore since enforcesecurity
# signature changed
@system.enforcesecurity
end

我的意思是,IDE 可以做到这一点,但有些人使用 ATOM 或 sublime,所以我们需要一些东西来“编译”并报告这类问题,这样他们就无法部署。你一直在用什么?

这会生成一小部分错误报告,但由于我们被迫以荒谬的速度生成,因此我们没有 100% 的代码覆盖率。如果没有工具提供帮助,我只会确保每个人都使用 IDE 并使用 Rubymine 等工具运行报告。

我们的堆栈包括 rspec、minitest、SimpleCov。我们强制执行代码审查、多堆栈部署(开发、质量检查、预生产、沙箱、生产)。还有一些问题达到了更高的水平,让我们程序员看起来很糟糕。我不是在寻找魔法,只是希望有一点自动化可能会有所帮助。

最佳答案

不幸的是,停机问题、赖斯定理以及所有其他不可判定性和不可计算性结果告诉我们,在一般情况下根本不可能静态地确定任何关于运行时行为的“有趣”属性的一个程序。我们甚至不能静态地确定像“它会不会停止”这样简单的事情,那么我们如何确定“没有错误”?

某些东西可以静态确定,并且有某些受限程序可以静态确定一些有趣的属性,但在很大程度上,这是不可能的.即使在很小的程度上它可能的,它通常也需要专门设计的语言以便于静态分析(Ruby 不是)。

也就是说,某些工具包含某些启发式 以指出可能 有问题的代码。某些编码标准可能有助于避免错误,并且有一些工具可以强制执行这些编码标准。要搜索的关键字是“代码质量工具”、“linter”、“静态分析器”等。您已经在其他答案和评论中给出了示例,并且根据这些示例和这些关键字,您可能会找到更多。

不过,我也想讨论一下你写的东西:

we are forced to produce at a ridiculous pace we don't have 100% code coverage

这是一个问题,必须从两个方面来解决:

  1. 练习,练习,再练习。您需要练习测试和编写高质量的代码,直到您如此自然而然地这样做实际上最终会变得更难和更慢。它应该成为您的第二天性,当您的大脑一片空白时,在压力下,您唯一知道的就是编写测试和编写设计良好、结构合理的高质量代码。注意:我说的是刻意练习,这意味着留出时间真正练习……练习就是练习,这不是工作,而是不好玩,这不是爱好,如果你在写完代码后不立即删除,你就不是在练习,而是在工作。
  2. 可持续的步伐。您永远不要开发速度超过您可以无限期维持的速度,同时仍能生产出经过良好测试、精心设计、结构合理的高质量代码,拥有充实的社交生活,没有压力,有很多空闲时间等。这是管理层必须支持和理解的事情。

关于ruby-on-rails - 有没有办法预处理 ruby​​ 代码并找到运行时会发生的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38270118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com