代码质量缺陷审计

CodePrism

代码质量缺陷审计

        代码质量缺陷审计产品(CodePrism,简称CP),通过代码静态分析技术实现对源代码的质量缺陷扫描审计功能。主要提供:源代码高质量编程规范知识库、代码质量缺陷自动扫描、生成代码质量缺陷审计报告。CP产品主要为开发团队、开发质量管理团队、项目经理、开发工程师等提供代码的自动化质量缺陷审计功能。是开发团队提高代码质量,提高系统稳定运行的必备源代码分析工具。CP产品内置几千种专门的质量规范,集成了国内外航空、金融、汽车、大型企业、互联网等行业高质量编程的最佳实践规范。同时也纳入了CWE、OWASP、CERT等国际安全编码组织发布的代码质量规范。


CP产品主要功能特点

代码规则知识库

  • 内置多行业的国际标准开发指南规则
  • 规则丰富,达几千种编程规范
  • 规则分级管理,并支持用户自定义级别
  • 全中文规则说明
  • 提供正例、反例及解释
  • 可添加客户化规则
            ……
            质量缺陷分析

            • “服务器扫描+IDE插件”扫描两种模式
            • 可按项目审计需求,自定义审计规则集
            • 可对质量缺陷进行分级显示和管理
            • 支持对扫描结果按权限进行查看
            • 提供B/S、C/S方式查看扫描结果
            • 可设定扫描白名单
                      ……
                      • 可生成doc、execl、pdf等多种格式报告
                      • 按规则、按文件、按项目统计缺陷数量
                      • 支持多次扫描的质量缺陷趋势分析
                      • 提供规则说明及正反例
                      • 截取问题代码及相关上下文代码
                      • 格式、内容可自定义的审计报告
                      ……
                                质量审计报告

                                CP产品技术架构

                                CP内置丰富的高质量编程规范

                                        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常见的质量规则。


                                                CP产品技术特点

                                                · 增量扫描

                                                对一套代码多次变更的情况,实现增量扫描,大大缩短扫描分析时间。


                                                · 可对接版本管理服务器

                                                可直接对接大多数版本管理服务器,如SVN、CVS、GIT、FireFly等。在权限管理下,自动获取源代码。


                                                · 内置报表工具

                                                内置可自定义的报表工具,用户可以在不编写代码的情况下,定义自己所需的各类图表报告等。


                                                · 无需安装编译环境

                                                对任何语言进行分析时,无需专门安装编译环境。


                                                · 自动调度分析任务

                                                内置任务调度机制,允许用户根据情况设定代码分析任务的启动时间、结束时间、分析周期等。如:每周四23点开始分析。


                                                · 多线程设计

                                                支持多线程管理,可根据服务器硬件资源,由用户自己设定多任务并行分析模式,提高分析效率。


                                                · 提供API接口,可以与DevOps流程集成

                                                      ……