2013-04-30 49 views
0

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

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

# method by RacerX 
def a_useful_method 
    . . . 
end 

# method by MysteryProgrammer123 
def another_useful_method 
    . . . 
end 

# action by MysteryProgrammer123 
def new 
    . . . 
end 

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

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

+4

你如何计算一个人编写的方法并被另一个人修改?我会尝试挖掘git blame的输出,而不是依靠人们来注释他们写的代码 – 2013-04-30 20:18:55

+0

这是一个超级糟糕的主意。制定一个关于自己的指标是完全错误的。使用Git或任何其他VCS并抛出元代码和注释标记。 – meagar 2013-04-30 20:59:18

回答

3

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

识别视图应该很容易,它们在视图目录中。通常可以使用正则表达式/\bdef\s+(?:\w+\.)?(\w+)\b/找到静态方法定义。区分“操作”与其他方法可能涉及过滤方法名称与通用操作名称以及通过检查路由发现的其他名称。

+0

非常好。这大大简化了事情。 – nullnullnull 2013-04-30 21:13:45

1

而不是重新发明轮子,使用现成的工具。如果它没有想到如何实现这样的代码,那么你可能无法编写这样的代码。文档工具(如YARD)可能会有用。这种方法的作用是在方法定义之前添加解释作为注释。通常这是为了编写供用户阅读的文档,但是你可以偏离它的预期用途并写出诸如程序员名字或任何你喜欢的其他信息。

+1

谢谢你让我知道关于YARD。我将在这一个上面用'git blame',但YARD将来会成为一个方便的工具。 – nullnullnull 2013-04-30 21:12:47

+0

对。这就是你应该去的方式。 – sawa 2013-04-30 21:17:29