前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DevOps 代码质量实战(Java 版)

DevOps 代码质量实战(Java 版)

原创
作者头像
可可爱爱没有脑袋
发布2020-10-16 15:32:10
8110
发布2020-10-16 15:32:10
举报
文章被收录于专栏:云+直播云+直播

查看完整直播回放:https://cloud.tencent.com/edu/learning/live-2859

杨周:连续创业者、DIY/Linux 玩家、知乎小 V,曾在创新工场、百度担任后端开发。十余年一线研发和带队经验,经历了 ToB、ToC、O2O、国内、出海各种项目,见证了云计算时代的诞生,擅长研发最佳实践:Code Review、DevOps、Git Workflow、敏捷开发、架构、极客办公硬件。

 Java 老项目常见质量问题

  • 问题一:把 Jar 包提交到了代码库
Jar 包等二进制文件无法进行文本对比,体积庞大,如果放在代码库中,导致拉取代码变慢,而且无法跟进包版本升级。所以应使用包管理工具进行网络安装。
但有的第三方包未发布到 Maven 仓库,或者公司的私有包,需要上传到私有仓库。无需搭建,使用 CODING 制品库即可。
  • 问题二:书写规范问题

比如魔法数字(magic number)、缩进等问题,可通过引入业界知名的代码规范,使用 Lint(代码静态扫码工具)进行检查。Java 常用的 Lint 工具是 Checkstyle,下载 Google Java Style 的 xml 文件,即可进行检查,包括很多规则,比如:

  • 每行代码最大长度 100 个字符
  • 缩进使用 2 个空格

老项目有成千上万的报错,一次难以清理干净,建议使用增量检查,具体请访问 CODING 帮助文档,搜索「增量检查」。

  • 问题三:使用落后的技术

比如落后的 Java 版本、maven,建议升级至 Gradle。

 Java 自动化测试

  • 自动化测试要点
可测性:不要在代码中使用系统时间、随机数、实例化对象,而应使用可被 mock 的时间库、依赖注入;
Fake:用于伪造测试数据,而不要在测试代码中写死 123、12:00:00,因为可能 999、00:00:00 时会报错。
Mock:模拟对象,常用于拦截第三方服务,比如拦截微信登录、支付,直接返回成功或失败,然后测试后续业务逻辑,而不可能每次测试时真的付款。

Java 自动化测试时,可使用 JaCoCo 生成测试覆盖率的 HTML 报告,可以看到哪一行代码没有覆盖。这种报告包含代码,所以需要私有访问,可使用 CODING 通用报告功能,在持续集成中自动上传即可。

  • Java 代码自动生成 API 文档

在项目开发中,最好让代码先行,在代码里写注释,这样可以保证注释与代码一起维护,然后在持续集成中执行命令自动生成文档,可上传到 CODING API 文档中,支持团队成员直接访问、加密分享。1

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Jar 包等二进制文件无法进行文本对比,体积庞大,如果放在代码库中,导致拉取代码变慢,而且无法跟进包版本升级。所以应使用包管理工具进行网络安装。
  • 但有的第三方包未发布到 Maven 仓库,或者公司的私有包,需要上传到私有仓库。无需搭建,使用 CODING 制品库即可。
  • 可测性:不要在代码中使用系统时间、随机数、实例化对象,而应使用可被 mock 的时间库、依赖注入;
  • Fake:用于伪造测试数据,而不要在测试代码中写死 123、12:00:00,因为可能 999、00:00:00 时会报错。
  • Mock:模拟对象,常用于拦截第三方服务,比如拦截微信登录、支付,直接返回成功或失败,然后测试后续业务逻辑,而不可能每次测试时真的付款。
相关产品与服务
CODING DevOps
CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档