目录

跨语言代码检查工具(codescanner)

简介

从26.0.1版本开始,Command Line Tools集成codescanner工具,用于检查整个项目的资源泄漏问题。开发者可根据扫描结果中的告警提示,手动修复代码缺陷,在代码开发阶段,确保代码质量。

codescanner命令行格式为:

codescanner [options] [projectPath]

options:可选,命令行的配置参数,具体请参考表1 codescanner命令行配置。

projectPath:可选,待检查的工程根目录,支持绝对路径和相对路径。默认为当前所在目录。

表1 codescanner命令行配置参数

参数

说明

-h, --help

查看codescanner命令行工具帮助信息。

-v, --version

查看codescanner命令行工具的版本。

-s, --sdkPath

可选,ArkTS规则检查时,指定HarmonyOS SDK路径。

HarmonyOS SDK加载优先级如下:命令指定的sdk路径 > Command Line Tools工具自带的sdk路径 > 环境变量`DEVECO_SDK_HOME`与`DEVECO_PATH/sdk/default`路径。

默认为Command Line Tools自带的HarmonyOS SDK。

-o, --output

可选,指定检查报告的输出位置。

默认输出到当前目录下的output文件夹中。

-f, --format

可选,指定检查报告的输出格式,包括sarif、html。默认为sarif。

-l, --logPath

可选,指定运行日志的输出位置。

默认输出到当前目录下的scanner文件夹中。

-c, --config

可选,指定codescanner检查规则配置文件的位置,工具按照配置文件进行检查。

默认执行ArkTS和CPP的所有规则。

--compileCommandsDir

CPP规则检查时必选,用于指定compile_commands.json(编译数据库文件)所在文件夹位置。

  • 若使用DevEco Studio开发应用,compile_commands.json文件所在位置为:项目/.idea/.deveco/cxx。
  • 若未使用DevEco Studio开发应用,compile_commands.json文件所在位置为:项目根目录/模块/.cxx/default/default/debug/计算机环境(如arm_x86)/。

--no-cpp

可选,禁止执行CPP检查规则。

--no-arkts

可选,禁止执行ArkTS检查规则。

codescanner检查规则配置文件

规则配置文件是开发者手动创建的.json格式文件,包含的配置字段和说明如下:

示例:

// 规则配置文件:xxxxxx.json
{
  "rules": {  // 规则总结构
    "cpp": {      // CPP检查规则 
      "ResourceLeak": [  // 规则集
        {
          "ruleId": "FileHandleNotClosed",        // 规则名称
          "severity": "warning/error/fatal",   // 规则告警级别
          "skip": false                           // 是否跳过该检查规则  
        },
        {
          "ruleId": "MemoryNotFreed",             // 规则名称
          "severity": "warning/error/fatal",   // 规则告警级别
          "skip": false                           // 是否跳过该检查规则  
        }
      ]
    },
    "arkts": {     // ArkTS检查规则 
      "ResourceLeak": [        // 规则集
        {
          "ruleId": "MediaResourceNotReleased",    // 规则名称
          "severity": "warning/error/fatal",    // 规则告警级别
          "skip": false                            // 是否跳过该检查规则 
        },
        {
          "ruleId": "FileDescriptorNotClosed",    // 规则名称
          "severity": "warning/error/fatal",    // 规则告警级别
          "skip": false                            // 是否跳过该检查规则 
        }
      ]
    }
  }
}

约束与限制

该工具功能仅支持中国境内(香港特别行政区、澳门特别行政区、中国台湾除外)。

使用示例