当前位置:  开发笔记 > 后端 > 正文

我在哪里可以找到一个积极开发的Ruby工具?

如何解决《我在哪里可以找到一个积极开发的Ruby工具?》经验,为你挑选了5个好方法。

我编写的大多数代码都是在Ruby中,每隔一段时间,我会做一些错字,只会在一段时间后被捕获.当我的脚本运行很长的任务时,这很烦人,并返回发现我有一个错字.

是否有一个积极开发的Ruby工具lint工具可以帮助我克服这个问题?是否可以在一个使用大量源文件的系统中使用它,其中一些是动态加载的?

以此片段为例:

a = 20
b = 30
puts c

要获得赏金,请告诉我一个工具,它将检测c变量为未创建/未定义.



1> Avdi..:

ruby -c myfile.rb 将检查正确的Ruby语法.

Reek检查Ruby代码以查找常见的代码味道.

Roodi检查Ruby代码以解决常见的面向对象设计问题.

Flog可以警告您异常复杂的代码.

[Plug]如果您的项目位于公共Github存储库中,则每次提交时,Caliper都可以在您的代码上运行后三个工具和其他工具.(免责声明:我在Caliper工作)


为了进一步解释,那时的`c`可能是指局部变量; 在封闭的词法范围中定义的变量; 实例方法; 单身方法; 在超类或模块中定义的方法...等等.工具无法确定`c`是无效的,因此在没有实际运行代码的情况下输入错误 - 这会让我们回到单元测试.
欢迎来到动态语言世界.您获得了极大的灵活性,但是您失去了对代码进行静态断言的能力,例如"我引用的所有符号在运行时都有效".这是一个权衡.也就是说,我认为最近的一些IDE尝试识别这样的错误.您可以查看RubyMine或Netbeans.就个人而言,我同意以前的评论者,你最好的选择是单元测试.如果您希望快速收到错误通知,请使用Autotest之类的东西来不断运行测试.

2> akuhn..:

您可以尝试使用Diamondback Ruby.它执行Ruby代码的静态类型检查,因此会责怪您使用未定义的变量.

虽然DRuby是一个正在进行的研究项目,但它已经适用于小型,自包含的Ruby脚本.目前,它无法分析大量的Ruby标准库"开箱即用".目前他们正在努力键入Ruby on Rails(参见他们最近的论文).


看起来Diamondback Ruby自2009年以来一直没有更新.:(

3> btelles..:

RubyMine(http://www.jetbrains.com/ruby)可以解决这个问题:

alt text http://img707.imageshack.us/img707/5688/31911448.png

以下所有内容都不会完成RubyMine的所有分析.

NetBeans Ruby包

Aptana RadRails

gVIM(通过scrooloose合成插件)

这些中的每一个都有能力识别语法错误,例如错误的括号,太多的defs,end,braces等.但是没有人会像RubyMine那样识别无效的方法调用.

原因如下:这很难.

由于Ruby非常动态(像'c'这样的方法可以很容易地生成),任何试图识别不存在的变量/方法的编辑器都需要加载整个环境的大部分和多个程序流路径经过不断测试,以获得准确的"有效性"结果.这比几乎所有编程都是静态的Java要困难得多(至少在我放弃那个帽子的时候).

这种轻松生成方法的能力是社区对这种高度尊重进行测试的原因之一.我确实建议您尝试测试.



4> Bozhidar Bat..:

看看RuboCop.它是一个基于Ruby样式指南的Ruby代码样式检查器.它非常积极地维护并支持所有主要的Ruby实现.它适用于Ruby 1.9和2.0,并且具有出色的Emacs集成.



5> DigitalRoss..:

是. Test::Unit

好吧,我知道你已经知道了这一点,从某种意义上来说这是一个无用的答案,但是你确实提出了鸭子打字的负面后果,那就是(此时)还没有办法只是写更多的测试比Java可能需要的东西.

因此,有关记录,请参阅Test::UnitRuby标准库或其他测试框架之一.

拥有可以运行和重新运行的单元测试是捕获错误的最佳方法,并且在Ruby等动态语言中确实需要更多(测试,而不是错误:-) ...


想象一下复杂软件系统的生命周期.最终,一些重要的东西会被重构.使用Java,可以放心地完成.在流程结束时,每个人都期待他们将实际获得的类型.在Ruby中,可能会有任意数量的意外类型等待动态传递,即使根本没有任何重构.这是传统智慧和支持静态类型的通常论据.
推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有