首先,感谢您抽出时间来贡献!
我们鼓励和重视各种类型的贡献。在贡献之前,请确保阅读相关部分。这将使我们这些维护者的工作变得更容易,也会让所有参与者的体验更加顺畅。社区期待您的贡献。
如果您喜欢这个项目,但没有时间贡献,那也没关系。还有其他简单的方式来支持该项目并表示您的赞赏,我们也会非常高兴:
- 给项目点个Star
- 在 社交媒体 上分享
- 在您项目的 readme 中引用该项目
- 推广该项目并告诉您的朋友/同事
自动记账是一个纯粹的自动化记账插件,采用GPLV3授权使用,禁止涉及政治、侵权等行为。
如果您想要提问,我们假设您已阅读了可用的文档。
本仓库不受理任何规则问题,规则问题请在这里提问:AutoAccountingOrg/AutoAccounting
我们鼓励您为自动记账规则贡献代码。这可能是您的第一个开源贡献,这是一个很好的开始。这是一些可以帮助您的指导:
自动记账规则采用javascript编写,使用rollup构建。如果您不熟悉这些工具,我们建议您先阅读相关文档。
为了提高代码兼容性使用jest作为测试框架,使用babel进行代码转换。
├── package.json
├── src 项目主目录
│ ├── category
│ │ ├── main.js 自动分类的主要文件(更新该文件)
│ │ └── main.test.js 测试文件
│ ├── category.js 自动分类调用入口
│ ├── rule 规则列表
│ │ │ ├── com.eg.android.AlipayGphone 支付宝包名 App规则
│ │ │ │ ├── app App规则
│ │ │ │ ├── 支付宝消息盒子 规则名称文件夹
│ │ │ │ │ ├── test 测试数据文件夹
│ │ │ │ │ │ ├──支付宝消费1.txt 测试数据
│ │ │ │ │ ├── main.js 规则文件
│ │ │ │ │ └── main.test.cjs 测试文件
│ │ │ │ ├── helper 无障碍规则
│ │ │ │ ├── notify 通知规则
│ ├── rule.js 自动记账识别规则调用入口
│ ├── test.cjs 自动记账测试调用入口
│ └── utils 工具类
│ ├── BillType.js 账单类型
│ ├── Currency.js 币种
│ ├── DataType.js 数据类型(标记是App还是短信)
│ ├── Html.js Html工具类
│ ├── AliTool.js 支付宝公共处理函数
│ ├── RuleObject.js 规则对象
│ └── Time.js 时间处理函数
└── yarn.lock
- 使用
eslint进行代码检查 - 使用
jest进行单元测试 - 使用
rollup进行构建 - 使用
yarn进行包管理 - 使用
git进行版本控制
Important
虽然自动记账使用的Rhino只支持ES5的语法规范,但是在写规则的时候可以使用ES6的语法规范,构建的时候会自动转换。 Rhino对一些比较新的正则支持比较差,请避免使用如下正则:
- 分组捕获
(?<name>...)
请务必保证所有的测试用例都通过,如果你新增了规则,请务必在main.test.cjs中编写测试用例,以保证规则的正确性。
测试用例编写规范:
testAnkioInit(
get, //导入main.js的get方法
__dirname,//当前文件路径
DataType.App,//这个规则类型
"com.tencent.mm" //这个规则对应的包名
)
test(
"收钱吧消费通知",//测试用例名称
() => testAnkio('收钱吧消费通知'//测试用例数据名称
,[//数组,如果是多个测试用例请直接补充到数组结尾
{
type: 0,
money: 2.00,
shopName: '三津汤包雅雀湖店',
shopItem: '门店收款',
accountNameFrom: '',
accountNameTo: '',
fee: 0,
currency: 'CNY',
time: '',
channel: '微信[收钱吧消费通知]'
}
]))测试用例数据的目录格式:
│ ├── test
│ │ ├── 收钱吧消费通知.txt
│ │ ├── 收钱吧消费通知2.txt
如果是多个测试数据,从第二个数据开始加上数字,数字从2开始,第一个不加。
我们推荐使用:gitmoji规范提交信息。 推荐使用AI-Git-Commit 自动生成提交信息(区域:美国),自定义提示词请使用根目录下
commit-prompt.txt文件内容。 如果无法使用AI-Git-Commit插件,也可以使用gitmoji-intellij-plugin来减少Emoji记忆。
commit格式采用: :[emoji]: [更改内容] #关联issue
例如修复issue(#1):
git commit -m ":bug: 修复xx问题 #1"注意:
- emoji与提交文本之间需要有一个空格
- 每条commit信息只允许包含一个关联issue
可参考以下emoji列表:
:art:: 改进代码结构/格式。:zap:: 提升性能。:fire:: 删除代码或文件。:bug:: 修复错误。:ambulance:: 关键热修复。:sparkles:: 引入新功能。:memo:: 添加或更新文档。:rocket:: 部署内容。:lipstick:: 添加或更新 UI 和样式文件。:tada:: 开始一个项目。:white_check_mark:: 添加、更新或通过测试。:lock:: 修复安全或隐私问题。:closed_lock_with_key:: 添加或更新秘密。:bookmark:: 发布/版本标签。:rotating_light:: 修复编译器/代码检查警告。:construction:: 进行中的工作。:green_heart:: 修复 CI 构建。:arrow_down:: 降级依赖。:arrow_up:: 升级依赖。:pushpin:: 将依赖固定到特定版本。:construction_worker:: 添加或更新 CI 构建系统。:chart_with_upwards_trend:: 添加或更新分析或跟踪代码。:recycle:: 重构代码。:heavy_plus_sign:: 添加依赖。:heavy_minus_sign:: 移除依赖。:wrench:: 添加或更新配置文件。:hammer:: 添加或更新开发脚本。:globe_with_meridians:: 国际化和本地化。:pencil2:: 修复拼写错误。:poop:: 编写需要改进的坏代码。:rewind:: 还原变更。:twisted_rightwards_arrows:: 合并分支。:package:: 添加或更新编译文件或包。:alien:: 更新因外部 API 变更的代码。:truck:: 移动或重命名资源(如文件、路径、路由)。:page_facing_up:: 添加或更新许可证。:boom:: 引入重大变更。:bento:: 添加或更新资产。:wheelchair:: 提升无障碍性。:bulb:: 在源代码中添加或更新注释。:beers:: 酒后编写代码。:speech_balloon:: 添加或更新文本和文字。:card_file_box:: 执行数据库相关更改。:loud_sound:: 添加或更新日志。:mute:: 移除日志。:busts_in_silhouette:: 添加或更新贡献者。:children_crossing:: 改善用户体验/可用性。:building_construction:: 进行架构变更。:iphone:: 从事响应式设计。:clown_face:: 模拟事物。:egg:: 添加或更新复活节彩蛋。:see_no_evil:: 添加或更新 .gitignore 文件。:camera_flash:: 添加或更新快照。:alembic:: 进行实验。:mag:: 提升 SEO。:label:: 添加或更新类型。:seedling:: 添加或更新种子文件。:triangular_flag_on_post:: 添加、更新或移除功能标志。:goal_net:: 捕获错误。:dizzy:: 添加或更新动画和过渡。:wastebasket:: 弃用需要清理的代码。:passport_control:: 处理与授权、角色和权限相关的代码。:adhesive_bandage:: 非关键问题的简单修复。:monocle_face:: 数据探索/检查。:coffin:: 删除无用代码。:test_tube:: 添加失败的测试。:necktie:: 添加或更新业务逻辑。:stethoscope:: 添加或更新健康检查。:bricks:: 基础设施相关变更。:technologist:: 改善开发者体验。:money_with_wings:: 添加赞助或资金相关的基础设施。:thread:: 添加或更新与多线程或并发相关的代码。:safety_vest:: 添加或更新验证相关的代码。