
写完代码后,会经历单元测试、构建、测试。没有静态扫描,有些问题人工测试很难发现,用场景触发很难抓到问题。然而,这种问题可能会在产品推出或交付后造成致命打击。我以前遇到过这种问题。
首先,使用C/C++语言可能会有内存管理问题。内存指针或泄漏。另一方面,web应用程序可能隐藏安全风险,可能被攻击,或者有明文密码和缓慢的SQL查询。这些东西藏在代码里,不知道什么时候会跳出来,造成不可挽回的损失。
在软件开发过程中,有一个理论:发现问题节点越晚,成本会成倍增加而不是翻倍。其实很好理解。例如,当开发人员正在编写代码时,他可以立即纠正任何问题。纠正这个问题只需要几分钟,或者半个小时,或者一个小时。但是如果在施工过程中发现这个问题,施工部门的人已经参与进来了,发现编制问题,赶紧回去,一般需要两个多小时。如果到了测试阶段,可能很多人都要升级版本开始测试了。测试中途发现一些问题,然后返回修改版本。这样一折腾,三五天过去了,据说成本成倍增长。
静态扫描工具可以帮助你尽可能提前清理这些隐藏的、难以发现的问题。这项投资非常值得。
问:SonarQube这种静态的静态代码分析工具广泛应用于哪些行业?
答:Sonar Qube在互联网行业应用广泛,因为Sonar Qube支持多种语言,并且有开源版本——Sonar Qube社区版,已经有很多用户在使用。不过SonarQube的企业版会提供更多的功能。
在功能和性能上,企业版会比社区版更强大。企业版提供多达29种语言,包括最常见的C/C++等。另外,社区版没有一些安全扫描规则。还有一个关键点。企业版有助于提高分析的性能,因为它可以用于后台分析。在公司部署服务器的时候,会扫描很多项目。当并发发生时,社区版只能依次扫描。有时候一整天都扫不完。企业版最多可以有10个并发进程来处理分析结果。因为它支持多种语言,在开源社区有很好的口碑,所以更多的用于web应用。
问:声纳曲部提倡“边写边清理”。重新写代码清理问题会不会很麻烦?

答:“边写边清理”其实一点都不麻烦。边写边清理,就是比如今天一天工作结束后,主管会反馈今天哪一项没做好,这是反馈,是可控的。但如果说,我们工作两年,第二年年底的某一天,去年的每一天,做了很多错事,一三天之内改正,这个时候肯定会无所适从,不知道该怎么办,因为欠账太多了。
每天写的代码量是有限的,一年可能只有18000行。如果你每天专注于新写的代码,这是一个完全可以接受和可执行的工作。但是如果一个公司有很多遗留代码,需要接手前任留下的几十万或者几百万行代码,突然有一天会觉得这是一个不可能完成的任务,“边写边清理”就是这个意思。
问:这个产品的使用复杂吗?
答:这个产品的部署很简单,因为它的社区版有很好的群众基础。虽然很多客户会自己部署,但是作为SonarQube的授权合作伙伴,创世会提供专业详细的文档和远程知识。
问:它有什么独特之处,你的团队如何帮助客户正确使用它?
所有静态扫描工具的一个共同难点就是如何扫描。为什么?大多数静态扫描工具不需要编译,这是一个卖点,也是一个缺点。很多项目依赖于第三方库或者第三方编译指令,不编译就无法准确分析依赖关系和存在的问题。所以现在主流产品都需要编译,比如C/C++/C#/Java。四种语言都需要编译,有些脚本语言不需要。
但是,需要在各种意想不到的平台上编译这些。因为用户可能使用的平台不同,如果是嵌入式客户,全世界有几百个嵌入式编辑器,可能是一个全新的编辑器。如何帮助它运行是我们工作的重点。
帮助客户运行分析,分析项目的结果,分析问题是误报还是漏报,还有指标,复杂度,SonarQube提供什么产品,比如代码度量。这些都是我们工作的重点。
问:请介绍一下这次龙志推荐的另一个工具补。
答:Mend的老业务是SCA,正好补充了SonarQube。因为SonarQube是用来分析自己的代码的,Mend是用来分析别人的代码的。现在软件开发可能会引用很多第三方开源组件。客户可能没有足够的能力或时间来确保这些开源组件满足安全或功能需求,这是一个很大的风险。
如果企业有一定规模,不允许出现这种事故,就必须检查产品中包含的开源组件的安全性和法规。从这一点来说,两者是互补的。
问:它们各自的使用场景是什么,如何结合起来提高DevOps的安全性?
答:SonarQube和Mend都是连续检查的。因为代码总是在变,会出现新的问题,所以需要不断检查。但是SonarQube和Mend的连续检测不太一样。
总的来说有几个方面。一个是定期检查主分公司,这是必须的,也是公司的底线。要达到公司要求的合规性和安全性,需要定期检查出版分公司或管理分公司,这是公司指标的强制性要求。
此外,还有两个可选的检查方面,一个是客户端。比如一个追求的程序员,可能希望代码不要被别人说。此时,您可以在客户端上执行快速检查。无论是开源静态代码分析,还是静态扫描,都可以由公司统一的质量门来完成。
还有一个在CI/CD过程中。比如每次提交,如果你觉得每次提交的频率太高,不需要那么频繁,也可以每小时检查一次。一个小时内提交的变更,都是经过开源组件和认证代码的质量检查,是可行的。
问:对于企业来说,引入一个工具并不是一件简单的事情。这样做的必要性在哪里?
答:对于需要做这些事情的公司来说,这些软件是必须的,而不是可选的。不能理解为花钱的选项,因为这是给你省钱的选项。
为什么这么说?其实软件开发往往让人觉得表面上好像省了钱。比如使用劣质的机器或工具,可能会省下一笔钱,但损失的是劳动生产率。这将对业务造成长期损害,延误产品交付,最终导致基本面竞争力下降。所以我认为,一个成熟的,有一定规模的软件公司,必须要考虑这些事情。
例如,软件组件分析可以避免电子商务系统的停机,开源组件的引入导致的意外攻击,或诉讼,这些都会给公司带来严重的麻烦。
如果您需要了解DevSecOps行业的最新动态和新闻,请联系DevSecOps RD安全运营一体化解决方案供应商龙智:
Www.shdsd.com,官方网站
电话:400-666-7732
电子邮件:marketing@shdsd.com



