CICD 基础
代码测试覆盖率
最近在负责相关插件的集成,今天第一次接触到“代码覆盖率”这个概念,那么,就做些简单的笔记吧。
好文
- 如何提高一个研发团队的“代码速度”?
- 代碼覆蓋率-wiki
- 如何测试代码覆盖率:coverage.py简介
- 浅谈代码覆盖率
- 代码覆盖率浅谈
- 实际软件工程中是否真的需要100%代码覆盖率(code coverage)?
- 用 Python 编写干净、可测试、高质量的代码
- 代码覆盖率工具 Istanbul 入门教程
nosetests
nosetests --with-coverage --cover-html --cover-erase --with-xunit --exe project_name\test\
代码质量好文
代码质量控制,常规三板斧:
- 静态检查
- 代码review
- 单元测试
静态检查工具
sonarqube
- Jenkins+SonarQube 代码质量检查自动化
- SonarQube 的安装、配置及 Maven 项目的使用
- [Jenkins + Maven + SonarQube 构建代码质量检测平台](Jenkins + Maven + SonarQube 构建代码质量检测平台)
代码质量平台
- 代码质量检测平台架构设计
- COMPREHENSIVE GUIDE TO CODE QUALITY: BEST PRACTICES AND TOOLS
- PMD、FindBug、checkstyle、sonar这些代码检查工具的区别?各自的侧重点是什么?
- codacy-平台官网
Python代码质量
pylint
coverage
python检查好文
Java代码质量
- Checkstyle
- FindBugs
- PMD
- Jtest
| Java静态分析工具 | 分析对象 | 应用技术 |
|---|---|---|
| Checkstyle | Java 源文件 | 缺陷模式匹配 |
| FindBugs | 字节码 | 缺陷模式匹配;数据流分析 |
| PMD | Java 源代码 | 缺陷模式匹配 |
| Jtest | Java 源代码 | 缺陷模式匹配;数据流分析 |
内置编程规范
Checkstyle:
- Javadoc 注释:检查类及方法的 Javadoc 注释
- 命名约定:检查命名是否符合命名规范
- 标题:检查文件是否以某些行开头
- Import 语句:检查 Import 语句是否符合定义规范
- 代码块大小,即检查类、方法等代码块的行数
- 空白:检查空白符,如 tab,回车符等
- 修饰符:修饰符号的检查,如修饰符的定义顺序
- 块:检查是否有空块或无效块
- 代码问题:检查重复代码,条件判断,魔数等问题
- 类设计:检查类的定义是否符合规范,如构造函数的定义等问题
FindBugs
- Bad practice 坏的实践:常见代码错误,用于静态代码检查时进行缺陷模式匹配
- Correctness 可能导致错误的代码,如空指针引用等
- 国际化相关问题:如错误的字符串转换
- 可能受到的恶意攻击,如访问权限修饰符的定义等
- 多线程的正确性:如多线程编程时常见的同步,线程调度问题。
- 运行时性能问题:如由变量定义,方法调用导致的代码低效问题。
PMD:
- 可能的 Bugs:检查潜在代码错误,如空 try/catch/finally/switch 语句
- 未使用代码(Dead code):检查未使用的变量,参数,方法
- 复杂的表达式:检查不必要的 if 语句,可被 while 替代的 for 循环
- 重复的代码:检查重复的代码
- 循环体创建新对象:检查在循环体内实例化新对象
- 资源关闭:检查 Connect,Result,Statement 等资源使用之后是否被关闭掉
Jtest
- 可能的错误:如内存破坏、内存泄露、指针错误、库错误、逻辑错误和算法错误等
- 未使用代码:检查未使用的变量,参数,方法
- 初始化错误:内存分配错误、变量初始化错误、变量定义冲突
- 命名约定:检查命名是否符合命名规范
- Javadoc 注释:检查类及方法的 Javadoc 注释
- 线程和同步:检验多线程编程时常见的同步,线程调度问题
- 国际化问题:
- 垃圾回收:检查变量及 JDBC 资源是否存在内存泄露隐患
Java静态检查参考
Python代码圈复杂度检查
基础知识
radon
radon cc --total-average -s -o SCORE -j all\ > r.json
-s 显示复杂度
-a 显示平均值,受-n -m影响
-j 结果转换为json
-o --order
- SCORE: order by cyclomatic complexity (descending):
- LINES: order by line numbers;
-i 指定忽略文件夹
json2html
from json2html import *
import json
with open('r.json','r') as f:
array = json.load(f)
print(array)
randon_html=json2html.convert(array)
with open("index.html","wr") as f:
f.write(randon_html)
业界 CI
工具链
工具链好文
- 懒羊羊大哥-常用工具集 懒羊羊大哥
CICD 基础的更多相关文章
- CICD基础概念
windows下搭建jenkins:安装方法一:1.安装JDK,配置好环境变量2.下载安装最新版本Jenkins:登陆 http://mirrors.jenkins-ci.org/ 下载windows ...
- 如何保障Go语言基础代码质量?
为什么要谈这个topic? 实践中,质量保障体系的建设,主要针对两个目标: 一是不断提高目标业务测试覆盖率,保障面向客户的产品质量:二就是尽可能的提高人效,增强迭代效率.而构建全链路质量卡点就是整个体 ...
- [Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)
[Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)开学典礼](https://ke.qq.com/course/453802)**测试交流群:549376944**0 ...
- GitOps:Kubernetes多集群环境下的高效CICD实践
为了解决传统应用升级缓慢.架构臃肿.不能快速迭代.故障不能快速定位.问题无法快速解决等问题,云原生这一概念横空出世.云原生可以改进应用开发的效率,改变企业的组织结构,甚至会在文化层面上直接影响一个公司 ...
- CICD | Jenkins & Gitlab集成:WebHook触发构建
在上一篇博客中,我们学习了Jenkins的搭建和插件+流水线的基本使用方法,Jenkins极大地提升了部署效率. 最近想学习一下如何集成GitLab webhook,实现进一步解放双手,目标: 推送( ...
- 基于Jenkins+Maven+Gitea+Nexus从0到1搭建CICD环境
在传统的单体软件架构中,软件开发.测试.运维都是以单个进程为单位. 当拆分成微服务之后,单个应用可以被拆分成多个微服务,比如用户系统,可以拆分成基本信息管理.积分管理.订单管理.用户信息管理.合同管理 ...
- 9.Jenkins进阶之流水线pipeline基础使用实践(2)
目录一览: 0x01 基础实践 0x02 进阶实践 (1) Sonarqube 代码质量检测之 Pipeline Script from SCM (2) Gitlab 自动触发构建之 Pipeline ...
- 8.Jenkins进阶之流水线pipeline基础使用实践(1)
目录一览: 0x01 基础实践 (1) Maven 构建之 Pipeline Script (2) Maven 构建之 Pipeline Script from SCM (3) Jenkins pi ...
- 2022年字节跳动基础架构前端实习生凉经(4轮技术面+hr面)
技术一面 原文链接:https://juejin.cn/post/7120516854203809829 因为我之前的项目经验有开发小程序的,所以一开始就问了小程序的问题 1.小程序onload和on ...
随机推荐
- SQL中的replace函数
REPLACE 用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式. 语法 REPLACE ( 'string_expression1' , 'string_expression2 ...
- IntelliJ IDEA总是提示Cannot resolve symbol的解决方案
- 加快cin读取速度
cin在读取大量数据时会比C里的scanf慢很多,但这并不是cin"无能",而是C++为了兼容C,对cin做了scanf的同步,只要关闭这个同步,cin就会有不弱于scanf的速度 ...
- <6>Cocos Creator调试
高手在于调试,下面来谈Cocos Creator调试! 1. 网页平台调试 调试常见的三种形式为调试打印.运行时报错与断点调试,这里主要利用编辑器"VS Code"与"C ...
- Vue系列之 => 结合ajax完成列表增删查
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- linux环境下安装qt过程
linux(虚拟机fedora9)环境下安装qt的过程主要是按照下面几网页上的教程完成的. http://mobile.51cto.com/symbian-272869.htm http://www. ...
- BP神经网络的直观推导与Java实现
人工神经网络模拟人体对于外界刺激的反应.某种刺激经过人体多层神经细胞传递后,可以触发人脑中特定的区域做出反应.人体神经网络的作用就是把某种刺激与大脑中的特定区域关联起来了,这样我们对于不同的刺激就可以 ...
- nodejs typescript怎么发送get、post请求,如何获取网易云通信token
nodejs typescript怎么发送get.post请求,如何获取网易云通信token yarn add jshashesyarn add superagent检查语法yarn lint==== ...
- 前端 html css
HTML 一个完整的网页是由html(超文本标记语言),css(层叠样式表)JavaScript(动态脚本语言)三部分组成 一.html 概念:超文本标记语言,“超文本”就是指页面内可以包含图片.链接 ...
- eclipse格式化代码样式
1.Window->Preferences //Java 格式化 2.Java->Code Style->Formatter->New->Edit->Line Wr ...