代码质量缺陷审计产品(CodePrism,简称CP),通过代码静态分析技术实现对源代码的质量缺陷扫描审计功能。主要提供:源代码高质量编程规范知识库、代码质量缺陷自动扫描、生成代码质量缺陷审计报告。CP产品主要为开发团队、开发质量管理团队、项目经理、开发工程师等提供代码的自动化质量缺陷审计功能。是开发团队提高代码质量,提高系统稳定运行的必备源代码分析工具。CP产品内置几千种专门的质量规范,集成了国内外航空、金融、汽车、大型企业、互联网等行业高质量编程的最佳实践规范。同时也纳入了CWE、OWASP、CERT等国际安全编码组织发布的代码质量规范。
CP内置丰富的高质量百年城规范,可对Java、JSP、ProC、C、C++ 、Object-C、JavaScript、ASP、VisualBasic、PHP、Android-Java、PL-SQL、C#等20多种语言进行质量缺陷分析。质量规则的定义及扫描引擎均与安全规则有所不同,CP内置质量规范常规按以下方式进行分类,也可由用户自定义分类。
运行时错误
可能发生潜在的运行时错误的相关规则。此类规则中重点偏向于代码在开发中产生的语法生成错误,语法使用错误等,以及在编写代码的时候所产生的一系列错误。
例如:禁止使用可变参数,不要对比NULL对象等。
死代码
在程序中的无意义的代码,未引用参数、函数等。
死代码可能在维护中造成混乱,漏洞修复时也可能出现异常。
性能
对系统执行性能产生影响的代码。应在在满足正确性、可靠性、健壮性、可读性等质量因素的前提下,设法提高程序的效率。
例如:禁止在For语句的条件上调用函数,在while语句不要使用sleep()方法等。
资源流失
DB,File 等各种资源释放相关规则。找到未及时释放资源的可疑代码,防止由代码编写不当引起的资源流失。
例如:检查是否释放file资源,检查DB资源的释放。
PMD
语言特有的质量规则。
例如:实现克隆、程序耦合度、 日志处理、 异常处理等等。
硬编码
硬编码IP地址、密码等,可能引发严重的安全和质量问题。
硬编码不仅向开发团队内的组员暴露重要信息,而且一旦提交程序后只能通过补丁才能弥补硬编码带来的信息泄露。
结构化
影响性能、可读性、可移植性、可维护性的代码。
给出代码结构性质量建议。
例如:FOR/WHILE循环语句中禁止使用EXIT/RETURN、存储过程禁止使用RETURN语句。
Default
CERT规则(计算机安全应急响应组(Computer Emergency Response Team)发布的规则。
直接引用的CWE常见的质量规则。
· 增量扫描
对一套代码多次变更的情况,实现增量扫描,大大缩短扫描分析时间。
· 可对接版本管理服务器
可直接对接大多数版本管理服务器,如SVN、CVS、GIT、FireFly等。在权限管理下,自动获取源代码。
· 内置报表工具
内置可自定义的报表工具,用户可以在不编写代码的情况下,定义自己所需的各类图表报告等。
· 无需安装编译环境
对任何语言进行分析时,无需专门安装编译环境。
· 自动调度分析任务
内置任务调度机制,允许用户根据情况设定代码分析任务的启动时间、结束时间、分析周期等。如:每周四23点开始分析。
· 多线程设计
支持多线程管理,可根据服务器硬件资源,由用户自己设定多任务并行分析模式,提高分析效率。
· 提供API接口,可以与DevOps流程集成
……