最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

Google SoC 系列:dcov——Ruby 文档覆盖度分析器

  • 2007-06-26
  • 本文字数:1038 字

    阅读完需:约 3 分钟

静态分析工具对于保证代码质量来说非常有用,特别是如果这些工具被统一在一个可以自动构建过程中时。比如说 rcov 项目,可以帮助开发者检查 Ruby 测试代码的覆盖情况。在Google SoC 的支持下,一个名叫 dcov 的新项目已可以帮助开发者分析 Ruby 代码的文档覆盖情况。

项目的开发者 Jeremy McAnally 就此解释道:

Dcov 分析项目中的文档,提供(类似于 rcov 的)文档覆盖程度评价,并且(最终会)提供文档覆盖质量的评价。(分析将会)涉及各个功能部件:类、方法和模块。

覆盖质量分析将会使得 dcov 项目更为有趣:

目前这只是“代码中是否存在注释?”的问题,当质量分析开始应用时,那么事情将会变得越来越有趣。

检查功能部件是否存在注释是很有用的功能,但是这是否会导致开发者向代码中添加无用注释,目的仅是为了从 dcov 中得到更好的评级。决定注释是否有用将是相对困难的工作,所以 Jeremy 将这项功能作为 dcov 的一个可选择插件部分:

实际上我今天刚重构了代码,让分析器变成独立的、可热插拔的类,这样用户可以随意的选择启用或放弃这个功能模块。我希望我们可以有精通语言分析的志愿者加入进来,帮助我们制定衡量注释质量的标准。

dcov 项目的文档输出也将基于现有的 Ruby 工具实现:

我正在试图为项目代码添加 Ruby Reports(Ruport)的支持,这意味着,随着 Ruport 团队不断发布的新的文档输出格式,我们就可以使用这些不同的格式来输出文档报告。

Ruport 是一个可拓展的报表系统,可以获得各种输入源的数据,包括(CSV、ActiveRecord models 等)之后生成不同格式的报表(包括 PDF、HTML 等)。

既然 dcov 可以分析 Ruby 代码,那么再了解一下 Jeremy 为其使用何种工具也将十分有趣:

所有代码都通过 RDoc 的“parse_files”方法解析,之后我们得到一个经解析的数据结构并进行分析。开始的时候,我试图找到一个可以手工解析(或是使用类似于parse_tree来解析的方法),这会使结构更为明晰,但是我后来发现使用 RDoc 是个更好的选择:一来 RDoc 的实现更为简洁;二来 RDoc 是 Ruby 标准发布版中的一个部分,所有使用 Ruby 的人都会安装有 RDoc 类库。

RDoc 通过 Code Objects 系列对象提供了访问 Ruby 代码及其相应注释的方法,Code Objects 被用来表示类、方法等等,以及它们相应的注释。

目前 dcov 项目建立在RubyForge 之上,并且Jeremy拥有一个Blog 站点。同时Jeremy 还在InfoQ 上撰写有一本电子书“ Mr. Neighborly’s Humble Little Ruby Book ”。

查看英文原文: Google SoC Series: dcov - Ruby documentation coverage analyzer

2007-06-26 05:301039
用户头像

发布了 74 篇内容, 共 11.6 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

服务器是什么?其作用及有哪些分类?

德胜网络-阳

服务器

百度官方论文复现营!顶会审稿人28天手把手带你复现顶会论文

百度大脑

人工智能 百度 AI GAN 视频分类

week8 学习总结

Geek_2e7dd7

程序员的晚餐 | 7 月 27 日 美味鲫鱼豆腐汤

清远

美食

区块链的现象级应用应该什么样子

CECBC

产业落地 政策扶持 区块链革命 价值传递

week 8

Geek_2e7dd7

数据结构、网络、数据库总结

周冬辉

数据库 网络 数据结构与算法

拒绝贴标签的懒惰

zhoo299

随笔杂谈

JVM系列之:String.intern的性能

程序那些事

性能 JVM string GC

HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第2章HTML基础知识

Geek_8dbdc1

CSS html

两个单向链表的合并判断

任小龙

week8 学习总结

任小龙

极客大学架构师训练营 - 本周总结

Geek_zhangjian

第八周架构师训练营学习心得

子豪sirius

应用开发基础之-数据结构与算法

superman

一文带你学习DWS数据库用户权限设计与管理

华为云开发者联盟

数据库 数据 用户权限 数据安全 华为云

判断两个链表是否合并

Z冰红茶

河南省区块链产业联盟成立暨可信区块链技术创新大会启幕

CECBC

可信区块链 提升核心技术 产业联盟 产学研用

IT世界里的《三十而已》:不比包包的男士们在比什么?

脑极体

算法题:链表的第一个合并节点

破晓_dawn

极客大学

极客大学架构师训练营-单向链表相交问题

Geek_zhangjian

NameNode架构图解

我是个bug

Java 大数据 hadoop

判断两个链表是否重合

LEAF

判断字链表伪代码

Mr.Monkey

影响地图:业务敏捷中你需要掌握的可视化力量

华为云开发者联盟

敏捷 敏捷开发 业务线 需求 华为云

应用研发之基础知识-计算机硬件基础

superman

LeetCode题解:142. 环形链表 II,JavaScript,HashMap,详细注释

Lee Chen

大前端 LeetCode

HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第一章前言

Geek_8dbdc1

CSS html 大前端

第八周架构师训练营作业

子豪sirius

2020掠夺者刀锋500搭载英特尔十代酷睿处理器硬核上阵

最新动态

区块链在公益慈善行业的应用研究

CECBC

区块链技术 公益组织 治理 数据透明

Google SoC系列:dcov——Ruby文档覆盖度分析器_Ruby_Werner Schuster_InfoQ精选文章