Open sinkcup opened 3 years ago
Google 和 npm 搜索一下,看看是否有现成的:
https://github.com/codacy/coverage-parser https://www.npmjs.com/package/@connectis/coverage-parser
但都不维护了,而且用的解析器,只解析了文件,而没解析 行覆盖率……
JaCoCo:
const coverageParser = require('@connectis/coverage-parser');
coverageParser
.parseFile('../java-api/build/reports/jacoco/test/jacocoTestReport.xml', {
type: 'jacoco'
})
.then(results => console.log(results));
PHPUnit clover:
var clover = require("@cvrg-report/clover-json");
// Parse by file path
clover.parseFile("../test/data/phpunit/coverage.xml")
.then(function (result) {
console.log(JSON.stringify(result));
}).catch(function (err) {
console.error(err);
});
考虑到项目名称的准确性、传播效果,决定不叫「coverage parser」,而叫「coverage badge」。
主要目的是:生成徽标,当然也顺带可以输出文字。
TODO:能否在「生成徽标时」提示安装依赖 svg,而「输出文字」不依赖 svg?
做了第一个功能:解析 jacoco 覆盖率 #2
发布时报错:
$ npm publish
npm ERR! package.json requires a valid "version" field
真奇怪,npm 竟然要求 hard code 版本号,而不是像 composer 那样用 git tag.
加了 version 以后,报错 403
打开发现有一个古老的包占用了这个名字 https://www.npmjs.com/package/coverage-badge
造个词 coverbadge,也被占用了 https://www.npmjs.com/package/coverbadge
难道要用个人冠名的包?比如 sinkcup/coverage-badge,和 composer 一样,也算合理。但我的 npm 账号 sinkcup 登不上了,找回密码也不知道发到了哪个邮箱(从产品角度说,这时候显示邮箱,进行部分隐藏,是个好体验)。给官方发了邮件,等结果。
等不急了,改名:https://www.npmjs.com/package/coverage-badge-cli
发布了 beta
现在做生成图片的功能 #3
能否直接使用刚才发现的那个包? https://www.npmjs.com/package/coverage-badge
无法安装, 8 年没维护了,而且排列方式是:数字在左,和目前主流的「数字在右」不一样。
不过这倒启发了我:图片可以内置,但也允许用户自定义。
还有:可选输出 svg 或 png
做好了图片功能,想到一个问题:npm package 不能叫 xxx-cli 因为包是可以被两种方式使用的:import 或 cli 所以改名叫做 https://www.npmjs.com/package/test-coverage-badge
偶然发现 codecov 的不同覆盖率徽标颜色不一样,优先级不高,有时间可以做 #4
优先做 PHPUnit 格式解析 #5
发现图片尺寸调整导致的 bug:实际宽度没变,而是透明了。#8
决定先暂停需求开发,引入 代码规范 #9 、单元测试 #10 ,走合并请求,要不然有辱「敏捷开发者」名誉。
装了下 eslint,发现错误数量惊人……修了一部分,还剩几个,js 真是不熟啊……叫人!
在修复 eslint 的过程中,查了下 CommonJS 和 ES6 的区别 https://zhuanlan.zhihu.com/p/113009496
2019.11.21 Node.js v13.2 默认打开了 ES6 Module 的支持。
也就意味着:之前看的那篇开发命令行的文章过时了,仔细一看是 2019-3 的文章
https://www.twilio.com/blog/how-to-build-a-cli-with-node-js
所以现在需要声明依赖的 node 版本、移除 CommonJS 的写法
按说声明 node >= 13.2 即可,但看了下官方版本列表,13 已废弃,所以决定依赖 >=14
用 ES6 重构完毕,需要发布新版本,偶然发现 npm version 官方命令,很有意思:
自动生成的 git tag 带 v,而 package.json
里面自动+1 不带 v
搜了下,早有讨论:https://github.com/semver/semver/issues/204
我一直是用「不带 v」的,现在看来,npm 包和官方保持一致比较好。
npm install -save-dev remark-cli remark-preset-lint-recommended
npx remark -f docs/
加上了 test,生成的是 clover 格式,决定立即做一个新功能:#5,而且带着测试一起提交。
做完加 codecov 时,发现它有个 bug:明明是 main 分支,链接却是 master 分支,导致图片打不开。
今天搞定了#7 帮助提示,解决了依赖注入,补上了测试。截图:
偶然发现 shell 命令报错好像有标准格式:
查到了 https://superuser.com/a/1334906/305460
fprintf (stderr, "%s: Couldn't open file %s; %s\n",
program_invocation_short_name, name, strerror (errno));
exit (EXIT_FAILURE);
需要调整一下现在的代码 #17
用户故事:作为 CODING.net 用户,由于 codecov.io 不支持, 需要一个测试覆盖率徽标生成器,自行生成徽标, 才能在 README 里展示。
本来想和之前的项目一样用 shell 写:https://github.com/sinkcup/magic-version 但 shell 包仓库属于非主流,不如 npm、pip,也不如 apt、brew 所以在 npm、pip 中挑一个,那还是 npm 吧,毕竟 nodejs 还可以做前端,对我更实用。