代码测试覆盖率

最近在负责相关插件的集成,今天第一次接触到“代码覆盖率”这个概念,那么,就做些简单的笔记吧。

好文

nosetests

nosetests --with-coverage --cover-html --cover-erase --with-xunit --exe project_name\test\

代码质量好文

代码质量控制,常规三板斧:

  • 静态检查
  • 代码review
  • 单元测试

静态检查工具

sonarqube

代码质量平台

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 基础的更多相关文章

  1. CICD基础概念

    windows下搭建jenkins:安装方法一:1.安装JDK,配置好环境变量2.下载安装最新版本Jenkins:登陆 http://mirrors.jenkins-ci.org/ 下载windows ...

  2. 如何保障Go语言基础代码质量?

    为什么要谈这个topic? 实践中,质量保障体系的建设,主要针对两个目标: 一是不断提高目标业务测试覆盖率,保障面向客户的产品质量:二就是尽可能的提高人效,增强迭代效率.而构建全链路质量卡点就是整个体 ...

  3. [Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)

    [Python+Java双语版自动化测试(接口测试+Web+App+性能+CICD)开学典礼](https://ke.qq.com/course/453802)**测试交流群:549376944**0 ...

  4. GitOps:Kubernetes多集群环境下的高效CICD实践

    为了解决传统应用升级缓慢.架构臃肿.不能快速迭代.故障不能快速定位.问题无法快速解决等问题,云原生这一概念横空出世.云原生可以改进应用开发的效率,改变企业的组织结构,甚至会在文化层面上直接影响一个公司 ...

  5. CICD | Jenkins & Gitlab集成:WebHook触发构建

    在上一篇博客中,我们学习了Jenkins的搭建和插件+流水线的基本使用方法,Jenkins极大地提升了部署效率. 最近想学习一下如何集成GitLab webhook,实现进一步解放双手,目标: 推送( ...

  6. 基于Jenkins+Maven+Gitea+Nexus从0到1搭建CICD环境

    在传统的单体软件架构中,软件开发.测试.运维都是以单个进程为单位. 当拆分成微服务之后,单个应用可以被拆分成多个微服务,比如用户系统,可以拆分成基本信息管理.积分管理.订单管理.用户信息管理.合同管理 ...

  7. 9.Jenkins进阶之流水线pipeline基础使用实践(2)

    目录一览: 0x01 基础实践 0x02 进阶实践 (1) Sonarqube 代码质量检测之 Pipeline Script from SCM (2) Gitlab 自动触发构建之 Pipeline ...

  8. 8.Jenkins进阶之流水线pipeline基础使用实践(1)

    ​目录一览: 0x01 基础实践 (1) Maven 构建之 Pipeline Script (2) Maven 构建之 Pipeline Script from SCM (3) Jenkins pi ...

  9. 2022年字节跳动基础架构前端实习生凉经(4轮技术面+hr面)

    技术一面 原文链接:https://juejin.cn/post/7120516854203809829 因为我之前的项目经验有开发小程序的,所以一开始就问了小程序的问题 1.小程序onload和on ...

随机推荐

  1. oracle数据库数值类型

    ---恢复内容开始--- 内容摘自网络 Oracle的数值类型有int,number,float,decimal,numberic等. NUMBER类型   定义   定义格式NUMBER (prec ...

  2. sqlserver Distributed Transaction 分布式事务

    在webapi+ef+sqlserver开发项目时,利用transcope实现应用层级的事务时,偶尔会报分布式事务错误,而且很而复现,特别蛋疼.现将自己的解决方法初步整理下. 分析原因:搭建repos ...

  3. 通过改hosts访问wikipedia

    能访问https://www.wikipedia.org 大部分时候我们是可以访问的wikipedia的主页或是英文首页的,但中文页面却经常被墙,这时候你可以通过在命令行下ping www.wikip ...

  4. 基于word2vec训练词向量(二)

    转自:http://www.tensorflownews.com/2018/04/19/word2vec2/ 一.基于Hierarchical Softmax的word2vec模型的缺点 上篇说了Hi ...

  5. tft屏图像显示也成功完成

    2010-04-30 14:18:00 tft屏图像显示也成功完成. 其实有了刷屏的经验,图像显示就很简单. void address_set(uint x1,uint y1,uint x2,uint ...

  6. make: *** /lib/modules/3.10.0-327.el7.x86_64/build: 没有那个文件或目录。 停止。

    1.问题: [root@localhost]# make make -C /lib/modules/-.el7.x86_64/build M=/home/csri/poc/adore modules ...

  7. 问题 1084: 用筛法求之N内的素数。

    #include <iostream> #include <cstdio> #include <cstring> #include <string> # ...

  8. windows无法远程连接linux

    网络模式 修改对应的NAT模式,子网地址的前三位要与window,internet协议版本里的IP地址的前三位一致.

  9. java中BufferedImage类的用法

    1. BufferedImage是Image的一个子类,Image和BufferedImage的主要作用就是将一副图片加载到内存中. BufferedImage生成的图片在内存里有一个图像缓冲区,利用 ...

  10. Django高级

    一 登录装饰器 def login_required(view_func): '''登录判断装饰器''' def wrapper(request, *view_args, **view_kwargs) ...