前言最近在自学DevOps的过程中,发现除了了解基本的CI/CD流程外,更重要的是了解有哪些工具可以辅助整个CI流程,今天给大家介绍一个好用的代码检测平台:SonarQube。虽然现在的开发经常使用codereview和各种linters来进行开发,但是总有一个秘密。这时候SonarQube可以帮助开发者排查一些潜在的bug。这些错误可能会在开发过程中被发现。linter没有报错,可能是codereview的时候不小心漏掉了。如果能在CI流程中加入SonarQube来扫描整个代码库,那么整个项目的代码就可以有更高的质量。什么是SonarQubeSonarQube是一个基于Java开发的代码检测和质量管理平台。由于这套工具是用Java开发的,所以大家一定要先记得安装**JavaDevelopmentKit(JDK)**,这样后续才能顺利启动SonarQube。SonarQube还提供了很多服务比如:网页运行支持多种编程语言的分析检测,提供代码重复、潜在bug、测试覆盖率等相关报告,提供自动化分析,结合主流CI工具提供代码改进,推荐集成JIRA、Mantis、LDAP、Fortify等外部工具,为后续跟踪提供历史记录。由于SonarQube提供的服务太多了,这里只列出一些我认为最值得与大家分享的。感兴趣的读者可以自行前往官网阅读相关信息。启动SonarQube由于本人使用的是mac系统,这里介绍下mac的操作方法。首先,可以在终端进入/bin/macosx-unversal-64文件夹,使用命令./sonar.sh启动SonarQube的服务。启动服务后,在浏览器中输入localhost:9000即可打开SonarQube网页。默认账号和密码都是admin。进入后,就可以在本地开始使用SonarQube提供的检测服务了。SonarQube操作说明登录后即可开始创建工程。这里的项目主要是为了方便开发者控制项目的质量。只有在项目创建之后,您才能开始测试您要测试的存储库。我们还可以看到,SonarQube集成了很多主流的用于创建项目的工具,比如GitHub、Jira等,如果读者自己也在使用这些工具进行项目管理,也可以直接集成已有的架构,这里为了方便介绍所以选择手动创建Project。项目建立后,可以看到SonarQube也支持很多主流平台的CI机制。这里也是为了方便介绍,所以选择手动测试本地仓库。在分析和测试之前,需要生成一组私有令牌。使用这组token,我们可以保证后面进行测试时,测试的结果会放在这个项目中。之后,您可以选择要检测的代码属于哪种语言以及当前计算机操作系统。选择好之后,就可以去官网下载最重要的分析工具SonarScanner了。这套扫描仪是负责检测代码的工具。下载后,您可以复制下面的指令来测试代码!通过以上步骤检测到SonarScanner检测结果后,我们可以回到SonarQube平台,可以看到我们刚刚创建的项目已经有了初步的检测报告。如果代码中没有潜在的问题,我们可以看到报告将是绿色的Passed状态。但如果代码中存在潜在问题,报告将显示红色Failed并指示出现了多个错误。然后点击issues选项卡,查看当前潜在bug的哪一行是从哪个文件生成的。点进去后会看到潜在bug的错误信息。我们可以发现数组的长度一定是大于等于0,但是我这里写的是小于0,所以这个if判断条件是永远不会通过的。但是当我们回过头来看代码的时候,我们会发现即使安装了linter,我们也不会去检查这种看似有问题的写法,因为linter一般都是在检查语法错误。这个时候,SonarScanner就可以帮助我们进行修正。深入检查。SonarScanner配置事实上,SonarScanner也可以进行一些自定义配置。这时候需要创建一个名为sonar-project.properties的文件。在这个文件中可以设置一些SonarScanner提供的分析参数,因为配置参数太多了。现在,所以我不会在这里一一介绍它们。有兴趣的读者可以参考官网,里面有对所有参数的详细介绍。一个前端工程师,所以我只使用ESLint或TSLint来输入代码,但是代码中仍然存在一些潜在的错误,这些linters可能无法检查出来。这时候SonarQube就起到了很大的作用,可以帮助我们进行更深入的分析。如果读者以后要做一些CI流程,不妨考虑一下SonarQube。作者:陈安迪%A2%BC%E5%93%81%E8%B3%AA%E4%B9%9F%E5%8F%AF%E4%BB%A5%E8%A2%AB%E6%AA%A2%E6%B8%AC-%E5%88%9D%E6%8E%A2-sonarqube-14e99687806e
