modulelint

Check the module

npm install modulelint
12 downloads in the last week
12 downloads in the last month

modulelint

Module Lint是一款检测模块各种素质的工具。面向Node模块开发人员。

初步思路

  • 检查模块的目录是否符合CommonJS包规范,每符合一样加10分
    • [✓]lib
    • [✓]doc
    • [✓]test
    • package.json
  • [✓]检查README文件的内容,去掉空格后1000字10分。上限30分
  • 检查License文件。具备License文件的项目加10分。检查文件名包含License与否。
  • 检查测试用例数量。每个case加2分
  • 检查测试覆盖率。覆盖率从50%开始,每覆盖5%加5分。高于95%加10分
  • 检查Coding Style, 每个文件不超过3个问题的,加2分。没有问题的加5分
  • [✓]模块名字少于10个字母的,加5分
  • API注释,每个完整的注释加5分
  • [✓]文档。doc目录下每个文档加5分。每个文档去空格后,不应少于500字。
  • Change log的检查,具备Change log的加5分。通常是History.md文件
  • [✓]项目协作。通过'git summary',查看contributor的数量,从2个开始,每多一个贡献者,加10分
  • [✓]通过npm info或registry.npm.org/module接口检查当前模块是否发布,已发布则加5分
  • [✓]travis-ci加10分。passing状态加5分,反之扣5分
  • [✓]文件utf-8 without BOM检测。查出非utf8 without BOM,每个文件扣5分

求你帮实现

上面罗列了一些初步的检测项,您也看到了,这是一件复杂的事情。每一项都要去寻找对应的工具来进行分析。所求代码贡献,每成功提交和合并一个检查器,赠送图灵社区图书一本。

代码提交指南

目录结构的组织如下

├── README.md
├── bin
│   └── modulelint
├── index.js
├── lib
│   ├── checklist // 该目录存放所有的检查项
│   │   └── folder.js // 检查项,必须导出check方法和rule描述。
│   └── modulelint.js
└── package.json

每个提交的检查相都应该存放在checklist目录下。每个检查相都应该导出rule描述和check方法

/**
 * 规则描述
 */
exports.rule = "当前规则";
/**
 * 检查项
 * @param {String} source 检查的目录
 * @param {Function} callback 返回数据的回调函数
 */
exports.check = function (source, callback) {
  // 你的实现
  // 不对你用同步或异步方法做任何限制,但是为了兼容两种情况,结果请用callback传递返回
  if (err) {
    callback(err);
  } else {
    // 返回的结果包含两个属性。分数和纠错信息
    // result = {score: 10, info: somereason};
    callback(null, result);
  }
};

目标

每个开发者在完成他的模块之后,并不知道他做得好不好。排除掉模块的功能和接口是否优秀和令人感兴趣,至少我们可以从基本功上看开发者是否努力。 高分值也可以让模块开发者得到一点点成就感。
希望这个指标可以略微量化下开源开发者做出的努力和收获,在推动标准化和提高基本要求方面出一点力。

不算指导的指导

优秀的JavaScript模块是怎样炼成的

如何调用?

安装为命令行工具

npm install modulelint -g

自检一下试试看:

modulelint -i ~/git/modulelint

结果:

modulelint jacksontian $modulelint -i .
项目路径:/Users/jacksontian/git/modulelint
总得分数为:10
==============
检查项:folder
得分:10
1. folder `doc` is missing
2. folder `test` is missing

根据指导信息添加doctest目录后:

modulelint jacksontian $modulelint -i .
项目路径:/Users/jacksontian/git/modulelint
总得分数为:30
==============
检查项:folder
得分:30

值得致谢的贡献者们

以下数据通过git-summary于2012-11-26生成。


 project  : modulelint
 repo age : 5 weeks
 active   : 20 days
 commits  : 60
 files    : 14
 authors  : 
    33    Jackson Tian            55.0%
    15    XiNGRZ                  25.0%
     6    tianqi                  10.0%
     5    Hyvi                    8.3%
     1    Will Wen Gunn           1.7%
npm loves you