静态代码检查完成代码分析和SonarQuber的初探

静态代码检查就是静态测试的一种,因此我们先说说静态测试和动态测试都是什么,然后我们再来聊一聊静态代码检查。

先搞清动静的区别

静态测试是指不运行被测程序本身,通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。而动态测试是通过运行被测程序来检查运行结果与预期结果的差异,并分析运行效率和健壮性等指标。

静态测试被测对象是各种与软件相关的有必要进行测试的产物,是对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态测试可以手工进行,充分发挥人的思维的优势,并且不需要特别的条件,容易展开,但是静态测试对测试人员的要求较高,至少测试人员需要具有编程经验。

静态测试主要包括各阶段的评审、代码检查、程序分析、软件质量度量等,用于对被测程序进行特性分析。其中评审通常有人来执行;代码检查程序分析、软件质量度量等即可人工完成,也可用工具来完成,但工具的作用和效果相对更大更好一些。

从上面我们可以了解到代码检查是静态测试中的关键一步,那么代码检查到底是个什么工作内容吗?

代码检查

代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。

从代码检查的定义中我们可以看出代码检查不需要自动任何服务就可以通过代码扫描完成,全部过程都是按照预定义好的规则完成的,只要针对不同的编程语言设计好不同的规则就可以对其进行代码扫描,完成代码检查任务了。如果能将其放到一个工具中完成,那么人工可以完全不参与,是一个完全自动化的流程。这也就导致了通过代码扫描完成的代码检查工作只是一个代码预定规则的检查,并不能保障其编写逻辑符合预期设计,同时如果预定规则不合理那么代码扫描的结果的偏差就会很大。

从上面的内容可以看出,代码扫描虽然尤其优越性也有其弊端,但是如果有很好的开放性的工具完成,通过修订并选取合适的规则是可以达到质量保障的预期的。在代码扫描的工具上选择并不多,如果站在平台化、服务化的角度,并且兼顾CI流水线的需求,首当其冲的就是SonarQube。

SonarQuber和Intelij IDEA

Sonar是一个用于代码质量管理的开源平台。通过插件机制,Sonar 可以集成不同的IDE、CI系统、测试工具中,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。 目前Sonar的规则覆盖了绝大部分的主流的编程语言,这位测试左移提供了有效的方法。

我们都知道测试越早开始,修复问题的成本越低,那么如果我们能将代码扫描引入到RD的IDE中,这无疑是测试左移的一个很好的实践落地。同时,在RD开发代码的过程中就提供了不断地扫描,不断地反馈的方式和手段。通过测试左移可以有效的提升质量效能,从而可以影响工程效能的提升。

Intelij IDEA添加sonar的plugin

通过将Sonar引入到开发的IDE中,我们从最早的检测手段上就提供了持续反馈,从而逐渐的在后续各个执行环节都有持续反馈,这样就可以建立一个不断地反馈、不断地优化制品过程的一个良性的循环。那么如何将Sonar引入到Intelij IDEA(以下简称IDEA)中呢?

首先打开Inteij IDEA的setting菜单,进入插件管理:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kiwcmdm1-1592981161528)(https://i.loli.net/2019/09/19/nKv6xJUylgApYDV.png)]

进入marketplace,在插件搜索框中输入sonar后,选择sonarlint插件安装:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KtUn5EEG-1592981161530)(https://i.loli.net/2019/09/19/dc1FBgiXmGZsx6R.png)]

重启IDE后,你就有了接入sonar的最原始手段了

sonarlint插件配置

那么下面我们进入配置一下你自己的私有sonar就可使用你的规则检测你的代码了,再次进入Setting,点击other Settings下的SonarLint General settings:

在 sonarqube /soanrcloud connections里面添加私有化的sonar服务:

配置本地sonar后,点击下一步:

然后选择对应的登录认证方式(token或者用户名密码),输入后点击下一步后点击完成:

再次进入setting下的other settings,选择SonarLint project settings:

然后作如下设置,在project中后的search in list中选择一个你自己的项目后点击OK。

IDEA中如何使用

进入IDEA的项目页面,在下面可以看到sonarlint的窗口:

打开一个代码,点击sonarlint视图中的run按钮,就可以进行扫描了:

静态代码检查完成代码分析和SonarQuber的初探相关推荐

  1. 静态代码检查完成代码分析

    静态代码检查完成代码分析 静态代码检查就是静态测试的一种,因此我们先说说静态测试和动态测试都是什么,然后我们再来聊一聊静态代码检查. 先搞清动静的区别 静态测试是指不运行被测程序本身,通过分析或检查源 ...

  2. 【开发技术】java中代码检查checkStyle结果分析

    编写Javadoc代码 在Java代码的类.函数.数据成员前中输入/**回车,Eclipse能够自动生成相应的Javadoc代码.可以在后面添加相关的文字说明. 1Type is missing a ...

  3. Android 静态代码检查

    文章目录 背景 项目当前代码质量问题例子 重复类问题 Java 代码问题 Kotlin 代码问题 预期收益 技术方案 技术调研 技术实施 总体流程 技术细节 CPD 重复代码检查 PMD Java 代 ...

  4. Gitlab CI集成sonarqube实现静态代码检查

    其他博文连接 Ubuntu Server 16.04LTS 搭建GitLab服务器 ubuntu server 16.04 使用docker搭建jenkins和sonarqube Gitlab配置Gi ...

  5. 美团外卖Android Lint代码检查实践

    概述 Lint是Google提供的Android静态代码检查工具,可以扫描并发现代码中潜在的问题,提醒开发人员及早修正,提高代码质量.除了Android原生提供的几百个Lint规则,还可以开发自定义L ...

  6. 华为软开云5--玩转代码检查

    5.玩转代码检查 提供示例和修复建议,精准定位代码缺陷 1.如何新建代码检查任务以及代码检查支持的语言类型 2.代码检查的多维度报表和代码问题的处理 3.问题管理.圈复杂度.代码重复率以及任务配置功能 ...

  7. 敏捷开发“松结对编程”实践之五:代码检查篇(大型研发团队,学习型团队,139团队,师徒制度,代码审查)...

    本文是"松结对编程"系列的第五篇.(之一,之二,之三,之四,之五,之六,之七,之八) 松结对和紧结对不一样,两个人不是总坐在一起随时发现问题解决问题,而是很短时间地坐在一起.其中在 ...

  8. 静态代码检查工具简介

    静态代码检查工具简介 在 Java 软件开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷.传统的代码复审.同行评审,通过人工方式来检查缺陷仍然是一件耗时耗力的事情.Java 静态代码分 ...

  9. java lint_Android静态代码检查-Lint

    参考文章: Improving Your Code with lint lint 使用 lint 增强你的代码 Android Lint简介 gradle lint gradle中有lint任务,可以 ...

最新文章

  1. “cmake 点点”表示在上一级目录(CMakeLists.txt所在目录)编译
  2. Android 音视频开发学习思路
  3. 配置IIS Silverlight运行环境
  4. c#五子棋实验报告_C#课设报告书—游戏五子棋
  5. 【论文浅析】Semi-supervised sequence tagging with bidirectional lm
  6. 经典蓝牙和低功耗蓝牙(BLE)有什么区别?
  7. oracle连续状态相同,数据库共有三种状态:quiesce、resrict、suspend
  8. qc成果报告范例_QC推进这样做才是货真价值!| 看机电股份的QC报告
  9. MySQL+create+base,MySQL中CREATE DATABASE和CREATE SCHEMA的区别
  10. CVE-2020-16875:Microsoft Exchange RCE复现
  11. sql server中数据约束相关的查询
  12. 求求你,别再叫我 X 工了!!!
  13. 在 VSCode 中配置 PHP 开发环境
  14. 解二元一次方程组的c语言编程,如何利用C语言求二元一次方程的解
  15. C语言计算星历位置,GPS广播星历计算卫星位置和速度
  16. 50 行代码,实现中英文翻译
  17. 点击开始十秒倒计时html,十秒倒计时案例.html
  18. linux挂载百度云bos,百度云存储对象BOS挂载工具
  19. unity lookat导致物体颠倒怎么解决_在Unity 2D中如何用一行代码实现LookAt的效果,以及向量归一化小总结...
  20. VUE类似微信朋友圈查看图片组件

热门文章

  1. Python的判断语句
  2. 这个CDR插件让你让你工作飞起来,拒绝加班早日脱单
  3. cubieboard上通过U-boot点亮板载LED
  4. 【ubuntu安装winehq】
  5. Linux中用ALSA驱动声卡流程详解
  6. Windows XP 的 TCP/IP 和 NBT 配置参数
  7. 正则表达式 匹配两个以上空格
  8. c#控件弹幕效果_基于C#弹幕类射击游戏的实现——(六)爆炸效果
  9. 精灵混合加密系统_为什么要加密数据?
  10. 商城小程序买哪种服务器,小程序商城适合什么类型云服务器