Java代码检测工具链选型
下方查看历史精选文章
重磅发布 - 自动化框架基础指南pdf v1.1大数据测试过程、策略及挑战
静态源代码扫描是近年被人提及较多的软件应用安全解决方案之一。它是指在软件工程中,程序员在写好源代码后,无需经过编译器编译,而直接使用一些扫描工具对其进行扫描,找出代码当中存在的一些语义缺陷、安全漏洞的解决方案。静态扫描技术已经从90年代时候的,编码规则匹配这种由编译技术拓展过来的分析技术向程序模拟全路径执行的方向发展,由此,这种模拟执行相对的执行路径比动态执行更多,能够发现很多动态测试难以发现的缺陷。
这里给出笔者在企业实践中所用到的工具链。
gitlab用于源码版本管理,实现代码版本管理、分支管理,及用于代码扫描过程中的分支基准。
Apache Maven是一个(特别是Java编程)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
JUnit 是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit 有它自己的 JUnit 扩展生态圈。多数Java的开发环境都已经集成了 JUnit 作为单元测试的工具。
maven-surefire-plugin,可以称之为测试运行器(Test Runner),它能很好地兼容JUnit 3JUnit4以及TestNG。
Jacoco是一个开源的覆盖率工具。Jacoco可以嵌入到Ant 、Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序。很多第三方的工具提供了对Jacoco的集成,如Jenkins。
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成
sonarqube社区版是免费开源的,所以不提供扫描项目切换分支的功能,但适合真正生产环境的项目会具有多个分支,只能扫描主分支的SonarQube社区版显然很不满足你的需求,而开发者版和企业版支持但是需要大量的¥。
s onarqube-community- branch-plugin插件, 插件市场提供了一款可以切换分支的插件,sonarqube-community-branch-plugin.
中文插件地址https://github.com/mc1arke/sonarqube-community-branch-plugin
后续逐步给出部署及配置实践。