-
全面 支持Java/C++/JavaScript/Go/Python/C#/TypeScript/
CSS /HTML/PHP/LUA/RUST/Shell/KOTLIN/SCALA/ArkTS/SQL/CANGJIE等多种主流开发语言。 支持代码规范检查、安全检查、代码重复率和圈复杂度检查。 兼容CWE/HUAWEI/OWASP TOP 10/ISO 5055/SANS TOP 25/CERT/MISRA/PCI DSS/AUTOSAR/GJB安全标准。
-
支持代码安全检查 支持场景 软件开发阶段对代码质量和安全问题进行自动化检查,支持内置安全规范、要求到软件生产作业流,帮助企业软件生产安全。 提供深度代码安全检查能力,帮助政务云运营者和大企业管控ISV软件安全质量,构建供应链安全体系。 能力说明 提供跨函数、跨文件检查能力,提供污点分析检查能力。 支持注入类、信息泄露类(AccessKey)等TOP安全漏洞检查。 支持华为云编程规范,兼容支持CWE/HUAWEI/OWASP TOP 10/ISO 5055/SANS TOP 25/CERT/MISRA检查。
-
CodeArts Check IDE插件介绍 CodeArts Check IDE插件致力于守护开发人员代码质量,成为开发人员的助手和利器。 本IDE插件秉承极简、极速、即时看护的理念,提供业界规范(含华为云)检查、代码风格一键格式化及代码自动修复功能。 打造了代码检查“快车道”,实现精准、快速检查前移,与Check云端服务共同构筑了三层代码防护体系。 内置的轻量级扫描规则作为云端规则的子集,可以在云端查看到所有IDE端规则,实现安全扫描左移,并且覆盖了30多种缺陷分类。 当前CodeArts Check IDE插件支持Java、C、C++、Python,并已上线4个主流IDE平台:VSCode IDE、Intellij IDEA、CodeArts IDE、Cloud IDE。
-
代码安全检查增强包介绍 华为代码安全检查增强包里安全检查能力作为深度价值特性,能深度识别代码中安全风险和漏洞,提供了套餐包内规则不覆盖的安全类场景,比如数值错误、加密问题、数据验证问题等。针对业界的安全漏洞检测项提供了更深入的分析能力,比如,跨函数、跨文件、污点分析、语义分析等。 当前代码安全检查增强包一共有284条规则,涵盖Java语言61个, C++ 语言199个, Go语言8个, Python语言16个。 代码安全检查增强包里安全检查能力支持的检查项如下: 覆盖符合污点分析传播模型的漏洞检查,如命令注入、SQL注入、路径遍历、信息泄露等。 覆盖业界常见的安全漏洞检测项,如命令注入、LDAP注入、SQL注入、开放重定向漏洞、数值处理、信息泄露等。 支持密码、API秘钥和访问令牌硬编码检查能力。 支持AcessKey泄露检查。 如果某租户购买了1个增强包,该租户账号及其所有
IAM 账号均可使用所有增强包相关的规则。 代码安全检查增强包对于扫描次数和扫描的代码行数没有任何限制,仅对代码检查任务并发数有限制,即,买1个增强包代表该租户账号可以扫描1个安全增强特性包规则的代码检查任务,其余任务需要排队等待;买2个增强包表示可同时扫描2个代码检查任务 ……买n个增强包表示可同时扫描n个代码检查任务。当前最多可以买100个。购买方法可参考购买增值特性。 增强包不可单独购买,需要在购买了专业版或企业版CodeArts之后才会生效,如果购买的CodeArts套餐过期,代码检查特性增强包会失效。
-
云服务代码检查功能列表 表1 云服务代码检查功能列表 功能 描述 编码问题检查 用编码问题检查规则集,对自己的代码进行编码问题缺陷检查。 代码安全检查 用代码安全检查规则集,对自己的代码进行代码安全风险和缺陷检查。 代码风格检查 用代码风格检查规则集,检查自己的代码是否匹配选定风格。 代码健康度评分 一个综合性统一指标,与告警影响度、告警数量、代码量都有关系。自动计算代码健康度分数。 问题管理 通过问题管理中的问题描述、问题状态、检查规则、文件路径、源码以及修改建议等,对检查出来的问题进行处理。 代码圈复杂度 通过代码圈复杂度报表评估代码质量风险。 NBNC代码行 代码检查支持扫描的文件代码行,不包括空行和注释行。 代码重复率 通过代码重复率报表评估代码质量风险。 定时执行检查 提供每周、每日定时检查代码功能,让用户休息编译两不误。 检查结果通知 检查完成后,通过邮件通知和
消息通知 相关人员检查结果,便于进行及时处理。 多种语言的代码检查 包括Java/C++/JavaScript/Go/Python/C#/TypeScript/
CS S/HTML/PHP/LUA/RUST/Shell/KOTLIN/SCALA/ArkTS/SQL/CANGJIE。
-
基本概念 表1 代码检查服务基本概念 词汇 定义 重复率 重复行数是指涉及至少一次重复的代码行数;重复块是指包含重复行的代码块(最小重复块定义:Java语言连续10行重复,其它语言10行中连续100个字符重复算一个重复块);重复率=重复行/代码总行数(不包含空行与注释)*100%。 规则 应用于检查某类代码问题。提供规则说明,如代码缺陷影响、修改建议。 规则集 针对具体语言而定义的检查规则集合,提高用户代码质量。 圈复杂度 圈复杂度是一种代码复杂度的衡量标准,与其可维护性和可测试性之间存在相关性,这意味着在圈复杂度较高的文件中,重构代码出错的概率较高。代码平均圈复杂度 = 总圈复杂度/函数数。具体风险评估建议如下: 1~5:极低风险 6~10:低风险 11~20:中风险 21~50:高风险 51+:极高风险 NA:CodeArts Check不支持检查该语言 SDLC 软件开发生命周期(Software Development Life Cycle)。 问题展示 准确定位到问题所在代码行,用户可以在线查看并分析代码问题。 延迟上线 在工具版本升级后,由于代码检查服务检查引擎的能力提升,可能会出现新的缺陷。但新检查出来的缺陷,不会计算到正式缺陷中,开发者拥有60天的缓冲周期对代码进行修改,周期内没有修改或者屏蔽的缺陷,在周期结束后后会计算到正式缺陷中。 执行计划 定义代码检查任务自动触发的方式。通过触发器,使代码检查的自动化执行更加灵活易用。
-
支持主流开发语言,内置9000+检查规则,便于用户开箱即用 代码检查服务支持Java/C++/JavaScript/Go/Python/C#/TypeScript/CSS/HTML/PHP/LUA/RUST/Shell/KOTLIN/SCALA/ArkTS/SQL/CANGJIE等10+常见开发语言,满足嵌入式、WEB应用、移动应用等多种开发场景所需。 内置多款的开源工具与自研引擎一起提供丰富的检查规则(9000+)。 梳理各类场景需要,内置全面检查规则集、关键检查规则集、移动领域规则集、华为编程规范规则集等50+规则集,便于用户开箱即用。更多规则集详情,请参见代码检查规则集列表。 用户也可基于规则库定制满足场景专项需求的检查规则集 。
-
支持自定义规则,灵活匹配用户场景 在软件开发实践中,代码质量管控面临着多样化的现实挑战:例如,不同团队的编码规范存在差异(如特定命名规则、注释格式),复杂业务场景需要定制化逻辑校验,新兴技术框架的最佳实践需要强制落地,通用代码检查工具的内置规则往往聚焦于语法合规、空指针风险等基础问题,难以覆盖行业特性、业务逻辑或团队定制化要求。 基于以上行业背景,华为云CodeArts Check服务提供了自定义规则的能力,可灵活匹配用户的使用场景。 自定义检查规则DSL( Domain Specific Language )位于代码检查全流程的“规则管理” 阶段,客户根据需要检查的问题开发对应的规则,然后上传到自定义规则集并启用该规则,DSL引擎工作原理如图1。 图1 DSL引擎工作原理
-
处理方法 访问实际使用的代码仓。 在“package.json”文件中删除“"type":"module"”。 在代码仓根目录下新建名为“sonar-project.properties”的文件。 将以下代码输入至“sonar-project.properties”文件中。 sonar.working.directory=projectdir
#projectdir为项目代码的相对目录,同时需要确保package.json不在projectdir目录下。
-
处理方法 减少单个代码检查任务的代码扫描量,可通过以下3种方式。 将报错的代码检查任务拆分多个任务,并在拆分的任务中分别设置不同语言的规则集。设置规则集可参考设置规则集。 例如:报错的代码检查任务A中有多种语言的代码,Java、C、C#,则可以将任务A拆分为任务A1、任务A2和任务A3,其中A1使用Java语言的规则集扫描,A2使用C语言的规则扫描,A3使用C#语言的规则集扫描。 将报错的代码检查任务拆分多个任务,并在拆分的任务中,分别排除部分文件后进行扫描。设置排除文件可参考设置检查模式。 例如:将报错的代码检查任务A拆分为任务A1、任务A2和任务A3,其中A1扫描第1个文件,排除第2个和第3个文件,A2扫描第2个文件,排除第1个和第3个文件,A3扫描第3个文件,排除第1个和第2个文件。 将报错的代码检查任务使用的代码仓拆分成多个子仓分别创建代码检查任务进行扫描。
-
处理方法 原因一: 减少单个代码检查任务的代码扫描量,可通过以下3种方式。 将报错的代码检查任务拆分多个任务,并在拆分的任务中分别设置不同语言的规则集。设置规则集可参考设置规则集。 例如:报错的代码检查任务A中有多种语言的代码,Java、C、C#,则可以将任务A拆分为任务A1、任务A2和任务A3,其中A1使用Java语言的规则集扫描,A2使用C语言的规则扫描,A3使用C#语言的规则集扫描。 将报错的代码检查任务拆分多个任务,并在拆分的任务中,分别排除部分文件后进行扫描。设置排除文件可参考设置检查模式。 例如:将报错的代码检查任务A拆分为任务A1、任务A2和任务A3,其中A1扫描第1个文件,排除第2个和第3个文件,A2扫描第2个文件,排除第1个和第3个文件,A3扫描第3个文件,排除第1个和第2个文件。 将报错的代码检查任务使用的代码仓拆分成多个子仓分别创建代码检查任务进行扫描。 原因二: 请联系技术支持,使用更大规格的执行机。
-
预置任务简介 样例项目中预置了以下4个代码检查任务。 表1 预置任务 预置任务 任务说明 phoenix-codecheck-worker 检查Worker功能对应代码的任务。 phoenix-codecheck-result 检查Result功能对应代码的任务。 phoenix-codecheck-vote 检查Vote功能对应代码的任务。 phoenix-sample-javas 检查整个代码仓库对应的JavaScript代码的任务。 本章节以任务“phoenix-codecheck-worker”为例进行讲解。
-
配置规则集执行检查任务 由于在创建代码仓时,已选择自动创建代码检查任务,因此在代码检查任务列表页,已展示对应的代码检查任务。在代码检查任务列表页单击代码检查任务名称,进入代码检查任务详情页。 单击“设置”。 单击“规则集”,在右侧区域单击选择“华为Java增强编程规则集”。 图1 选择规则集 单击“编译配置”,将“编译工具选项”开关设置为状态,“编译工具”选择“maven”。其他参数保持默认即可,然后单击“确定”。 图2 编译配置 单击右上角“开始检查”。
-
应用场景 随着现在项目的代码量越来越大,以及现有开发框架的增加,静态分析所需要覆盖的场景也日益增多,存在的问题如下: 传统静态分析引擎靠工具提供通用规则来对常见安全,风格和质量场景下的编码问题进行扫描分析,难以实时覆盖不同用户特定场景下的代码问题。 用户往往不熟悉工具提供的通用规则所能覆盖的全部场景。在为新开发的业务场景寻找适用的规则时需要耗费大量的时间,增加开发成本。 不同用户之间的代码差异大,研发无法实时掌握不同用户的具体需求,在开发规则过程中难以针对不同用户的业务代码场景来制定全面有效的工具规则。 本示例为您介绍如何使用自定义规则检查代码中存在调试代码的问题。
-
创建代码检查任务 在代码检查任务列表页,单击“新建任务”,按照如下表格配置参数。 表3 代码检查任务参数说明 参数 说明 归属项目 创建代码检查任务所属项目中创建的项目名称“Scrum01”。默认填写,无需配置。 代码源 选择需要检查的代码来源。选择“Repo”。 任务名称 代码检查任务名称,可自定义。例如:CheckTask01。 仓库 选择创建CodeArts Repo代码仓中创建的代码仓“Repo01”。 分支 保持默认“master”即可。 检查语言 选择“Java”。 单击“确定”,完成代码检查任务的创建。