V2EX 首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Sponsored by
二向箔安全
​一对一的线上 web 安全培训服务
咨询微信:twosecurityrefer
Promoted by 二向箔安全
V2EX  ›  分享创造

运行一个脚本,检查项目的代码质量 v0.3.0

  •  
  •   xcatliu · 78 天前 · 1141 次点击
    这是一个创建于 78 天前的主题,其中的信息可能已经有所发展或是发生改变。

    GitHub: https://github.com/xcatliu/cqc


    之前做了个工具可以检查源代码行数,代码重复率和圈复杂度。收到很多好评

    前帖: https://www.v2ex.com/t/392337

    这次版本更新,添加了很多新功能,也可以方便的添加进 git hooks 或者构建程序中啦!

    简单介绍

    cqc ( Code Quality Checker )是一个代码质量检查工具,可以通过运行一个脚本来获取项目的源代码行数,代码重复率和圈复杂度。目前支持的文件类型有 js, jsx, css, less, scss, sass, styl

    # 安装
    npm i cqc -g
    
    # 运行
    cqc src/**/*.js
    
    # 输出
    Number of files:        10
    Source lines of code:   647
    Duplicate rate:         3.46%
    High complexity rate:   0.00%
    Max complexity:         10
    

    更新内容

    增加或重写了很多选项

    • 文件选项
      • --ignore-path 设置 ignore 文件,比如 .gitignore, .eslintignore
      • --ignore-pattern 设置 ignore pattern,即忽略的文件
      • --filter-pattern 仍然检查所有输入的文件,但是在详细输出中,只会输出与 filterPattern 相关的文件
    • 检查选项
      • --jscpd-min-lines 即 jscpd 的 min-lines 选项,设置重复度检查的最小行数
      • --jscpd-min-tokens 即 jscpd 的 min-tokens 选项,设置重复度检查的最小 token 数
      • --complexity-max 设置识别为高复杂度的条件
    • 禁用选项
      • --disable-base 禁用基本检查
      • --disable-sloc 禁用源代码行数检查
      • --disable-jscpd 禁用 jscpd 检查
      • --disable-complexity 禁用 complexity 检查
    • 输出选项
      • -f, --format 设置输出格式,可选为 json
      • --verbose 显示输出详细内容
      • --threshold-jscpd 设置重复度百分比阈值,若超过阈值则会警告并退出程序
      • --threshold-complexity 设置复杂度百分比阈值,若超过阈值则会警告并退出程序

    允许使用 API 调用

    例如:

    const CodeQualityChecker = require('cqc');
    const codeQualityChecker = new CodeQualityChecker();
    
    // This will return a checkerResult object which include the check result
    const cqcResult = codeQualityChecker.check([
        'src/**/*.js',
        'src/**/*.jsx'
    ], {
        ignorePath: '.gitignore,.eslintignore',
        ignorePattern: 'src/vendor/**/*.js,src/third-party/**/*.js',
        filterPattern: 'src/path/to/filterPattern',
    
        jscpdMinLines: 5,
        jspcdMinTokens: 70,
        complexityMax: 10,
    
        disableBase: false,
        disableSloc: false,
        disableJscpd: false,
        disableComplexity: false,
    
        format: undefined,
        verbose: true,
        thresholdJscpd: 3,
        thresholdComplexity: 10
    });
    
    // Calling report function will console.log result like cli did
    cqcResult.report({
        format: undefined,
        verbose: true,
        thresholdJscpd: 3,
        thresholdComplexity: 10
    });
    

    增加了测试

    没有测试真是太难开发了,添加了测试之后增加了很多开发效率,也增加了很大的安全感。 现在的测试覆盖率有 94% 了。

    8 回复  |  直到 2017-10-01 22:55:09 +08:00
        1
    GPIO   78 天前
    有计划支持 C、Python 吗?
        2
    xcatliu   78 天前
    @GPIO python 目前可以计算出代码重复度,还没有计划做复杂度的检查。
        3
    dyxang   78 天前 via Android
    小工具






    mobi.css 的中文……
        4
    xcatliu   78 天前
    @dyxang 是在求中文文档吗?
        5
    dyxang   78 天前 via Android
    @xcatliu 😣是的
        6
    xcatliu   78 天前
    @dyxang 现在的精力实在有限了😢翻译的优先级还是排在很后面的。。。
        7
    dyxang   76 天前 via Android
    @xcatliu 没事,能有这个就已经很好了😁
    这个是对电脑也适配的吧?
        8
    xcatliu   76 天前 via iPhone
    @dyxang 嗯,对主流浏览器和 ie10 以上都支持
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   1181 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.0 · 35ms · UTC 16:52 · PVG 00:52 · LAX 08:52 · JFK 11:52
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1