Rails:可以扫描Ruby代码的Ruby代码

时间:2013-04-30 20:11:46

标签: ruby-on-rails ruby metaprogramming collaboration

我正在与几个贡献者开始一个项目。我们想要跟踪谁编写了什么代码,以及计算贡献者编写的方法,控制器操作和视图的数量。这需要我们都不熟悉的元编程水平。

到目前为止,我们提出的最好的想法是在每个代码片段之前添加一条评论,其中包含贡献者的用户名和短的,一致的短语。例如:

# method by RacerX
def a_useful_method
  . . .
end

# method by MysteryProgrammer123
def another_useful_method
  . . .
end

# action by MysteryProgrammer123
def new
  . . .
end

然后我们运行一个方法来计算每个用户在整个项目中编写的action bymethod by以及view by的所有实例。不幸的是,我们不知道如何编写可以检查其他Ruby代码的Ruby代码。它甚至可能是不可能的。但是,如果有可能,它是如何完成的?

或者,我们可能没有考虑更好的方法。

2 个答案:

答案 0 :(得分:3)

您应该更喜欢源控制系统来跟踪谁写了什么。例如,git blame可以生成一个带注释的列表,显示作者和源代码行。

识别视图应该很简单,它们位于视图目录中。通常可以使用regexp /\bdef\s+(?:\w+\.)?(\w+)\b/找到静态方法定义。区分“动作”与其他方法可能涉及根据常见动作名称和通过检查路线发现的其他名称过滤方法名称。

答案 1 :(得分:1)

使用现成的工具,而不是重新发明轮子。如果你不知道如何实现这样的代码,那么你可能无法编写这样的代码。诸如YARD之类的文档工具可能很有用。这种方法的工作方式是在方法定义之前添加解释作为注释。通常这是用于编写要由用户阅读的文档,但是您可以偏离其预期用途并编写程序员名称或您喜欢的任何其他信息。