静态代码检查新利器

简介: 静态代码检查新利器

静态代码检查


静态测试是指不运行被测程序本身,通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。而动态测试是通过运行被测程序来检查运行结果与预期结果的差异,并分析运行效率和健壮性等指标。静态测试被测对象是各种与软件相关的有必要进行测试的产物,是对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态测试可以手工进行,充分发挥人的思维的优势,并且不需要特别的条件,容易展开,但是静态测试对测试人员的要求较高,至少测试人员需要具有编程经验。静态测试主要包括各阶段的评审、代码检查、程序分析、软件质量度量等,用于对被测程序进行特性分析。其中评审通常有人来执行;代码检查程序分析、软件质量度量等即可人工完成,也可用工具来完成,但工具的作用和效果相对更大更好一些。


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


代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。从代码检查的定义中我们可以看出代码检查不需要自动任何服务就可以通过代码扫描完成,全部过程都是按照预定义好的规则完成的,只要针对不同的编程语言设计好不同的规则就可以对其进行代码扫描,完成代码检查任务了。如果能将其放到一个工具中完成,那么人工可以完全不参与,是一个完全自动化的流程。这也就导致了通过代码扫描完成的代码检查工作只是一个代码预定规则的检查,并不能保障其编写逻辑符合预期设计,同时如果预定规则不合理那么代码扫描的结果的偏差就会很大。


新工具Qodana


从上面的内容可以看出,代码扫描虽然尤其优越性也有其弊端,但是如果有很好的开放性的工具完成,通过修订并选取合适的规则是可以达到质量保障的预期的。在代码扫描的工具上选择并不多,如果站在平台化、服务化的角度,并且兼顾CI流水线的需求。每次说到静态代码扫描,相信所有人第一个想到的就是SonarQube,除了SonarQube我今天给你介绍一款JetBrains Qodana,Qobana 是 JetBrains 系列工具的新代码质量平台。官方地址如下:https://www.jetbrains.com/qodana

image.png


使用方法

Qodana提供了Docker的运行方式,那么我们仅需要拉取对应的docker image就可以在呢运行了,具体步骤如下:

- 1、 拉取Qodana的linter 镜像

docker pull jetbrains/qodana-<linter>

其中,Qodana的linter目前提供的种类如下:

image.png


具体可以进入官网自己查看。但运行pull命令后,如下:

image.png


- 2、当下载结束后,可以通过如下命令,进行扫描了。

docker run --rm -it -v <project-root-directory>/:/data/project/  -p 8080:8080 jetbrains/qodana-<linter> --show-report

image.png



- 3、当分析结束后,进入 http://localhost:8080,就可以看到结果了。


image.png


在第一次运行期间,Qodana仅使用重要检查指标来分析被测试项目。非重要检查和包含非重要代码的文件夹(如 Tests 文件夹)将被忽略。Qodana还报告了任何可能影响结果真实性或完整性的情况。例如,如果项目依赖于外部资源或生成的代码,而这些资源或生成的代码在分析过程中不可用,则最终结果可能会受到影响,Qodana会通知此类可疑结果。


Qodana提供了建立技术债的baseline的功能,这样我们就可以在baseline之上完成技术债的偿还。(Qodana将baseline存入qodana.sarif.json文件中)。下次一检测我们就可以基于这个baseline进行分析。

docker run -p 8080:8080 -v <project-root-directory>:/data/project jetbrains/qodana-<linter> --show-report --baseline=baseline.sarif.json


image.png


具体Qodana好不好用,你可以在自己的项目中试一下。


目录
相关文章
|
1天前
|
Web App开发 缓存 前端开发
【热门话题】实用Chrome命令:提升前端开发效率的利器
提升前端开发效率的Chrome命令详解:快速打开DevTools(F12或Ctrl+Shift+I/Cmd+Opt+I)、Console中直接运行JS、使用$和$$选择元素、监控事件、模拟设备、计算样式覆盖、网络请求过滤、性能分析、Sources面板调试与编辑、命令行快捷方式如chrome://flags。掌握这些技巧,加速开发流程。
13 3
|
11天前
|
缓存 移动开发 Android开发
安卓应用性能优化实践指南
【4月更文挑战第30天】在移动开发领域,一个流畅的用户体验是至关重要的。对于安卓开发者来说,理解并实施性能优化策略能够显著提升应用的响应速度和稳定性。本文将深入探讨针对安卓平台的性能瓶颈诊断、内存管理、UI渲染优化以及电池使用效率提升等方面的实用技巧,旨在帮助开发者构建更加高效、响应迅速的安卓应用。
|
12天前
|
开发框架 前端开发 持续交付
移动应用开发的未来之路:框架、工具与性能优化
【4月更文挑战第29天】 在数字化时代,移动应用已成为日常生活不可或缺的组成部分。随着技术的不断演进和用户需求的日益增长,移动应用开发正面临着前所未有的挑战与机遇。本文将探讨当前移动应用开发领域的最新趋势,包括跨平台开发框架的选择、开发工具的创新以及性能优化的策略。通过分析这些关键技术要素,我们旨在为开发者提供一个清晰的指南,帮助他们在竞争激烈的市场中保持领先。
|
10月前
|
缓存
提升直播软件源码开发平台性能关键利器功能
直播软件源码平台缓存功能的示例用法 cache = LiveStreamCache() cache.add_to_cache("stream1", "直播内容1") cache.add_to_cache("stream2", "直播内容2") content1 = cache.get_from_cache("stream1") print(content1) cache.remove_from_cache("stream2") content2 = cache.get_from_cache("stream2") print(content2)
|
7月前
|
人工智能 安全
编程利器Boit 使用详解
利用ai编程利器Boit 提高开发效率
57 0
|
安全 测试技术 API
Goby+Acunetix打造漏扫利器
Goby+Acunetix打造漏扫利器
776 0
|
人工智能 IDE JavaScript
效率工具 | 推荐一款提高Python编程效率的神器
"I really love the line-of-code completions in the new kite.com",Python之父Guido van Rossum这样评价这款工具。这是一款基于人工智能的Python编码自动补全工具,起初,我对这款工具并不看好,直到我使用一段时间之后,才不由得感叹--"这款工具太牛了",有了它,就可以摆脱繁琐的插件配置、摆脱臃肿的IDE。
效率工具 | 推荐一款提高Python编程效率的神器
|
JavaScript 前端开发 Java
Web开发利器推荐(一)
看到一个很棒的系列,介绍了很多对web开发很有帮助的利器,解决了很多开发中遇到的繁琐事,翻译来分享一下:
149 0
Web开发利器推荐(一)
|
Web App开发 前端开发 JavaScript
Web开发利器推荐(五)
它是一款很棒的Markdown编辑器。 基于PageDown开发而来,已经被 Stack Overflow 和其他 Stack Exchange 站点使用。 StackEdit 能实时预览文档,保存到云端或本地的local storage,导出 Markdown、HTML 或 PDF 格式,与GitHub、Gist、Google Drive、 Dropbox 或者任何 SSH 服务器。
116 0
Web开发利器推荐(五)
|
缓存 移动开发 前端开发
Web开发利器推荐(三)
看到一个很棒的系列,介绍了很多对web开发很有帮助的利器,解决了很多开发中遇到的繁琐事,翻译来分享一下:
130 0
Web开发利器推荐(三)