1# @ohos.hichecker (检测模式) 2 3<!--Kit: Performance Analysis Kit--> 4<!--Subsystem: HiviewDFX--> 5<!--Owner: @lu-tao--> 6<!--Designer: @martin-duan--> 7<!--Tester: @gcw_KuLfPSbe--> 8<!--Adviser: @foryourself--> 9 10HiChecker可以作为应用开发阶段使用的检测工具,用于检测代码运行过程中部分易忽略的问题,如应用线程出现耗时调用、应用进程中Ability资源泄露等问题。开发者可以通过日志记录或进程crash等形式查看具体问题并进行修改,提升应用的使用体验。 11 12> **说明:** 13> 14> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 15 16## 导入模块 17 18```ts 19import { hichecker } from '@kit.PerformanceAnalysisKit'; 20``` 21 22 23## 常量 24 25提供了所有规则类型的常量。 26 27**系统能力**:SystemCapability.HiviewDFX.HiChecker 28 29| 名称 | 类型 | 值 | 说明 | 30| ------------------------------------------------ | -------- | -----------| ------------------------------------------------------ | 31| RULE_CAUTION_PRINT_LOG | bigint | 1ULL << 63 | 告警规则,当有告警时记录日志。 | 32| RULE_CAUTION_TRIGGER_CRASH | bigint | 1ULL << 62 | 告警规则,当有告警时让应用退出。 | 33| RULE_THREAD_CHECK_SLOW_PROCESS | bigint | 1ULL | 检测规则,检测是否有耗时函数被调用。 | 34| RULE_CHECK_ABILITY_CONNECTION_LEAK | bigint | 1ULL << 33 | 检测规则,检测是否发生ability泄露。 | 35| RULE_CHECK_ARKUI_PERFORMANCE<sup>11+</sup> | bigint | 1ULL << 34 | 检测规则,检测arkui性能。 | 36 37## hichecker.addCheckRule<sup>9+</sup> 38 39addCheckRule(rule: bigint): void 40 41添加一条或多条规则到系统,系统根据添加的规则进行检测或反馈,当有相应规则触发时可在hilog中grep HiChecker查看运行信息。 42 43**系统能力**:SystemCapability.HiviewDFX.HiChecker 44 45**参数:** 46 47| 参数名 | 类型 | 必填 | 说明 | 48| ------ | ------ | ---- | ---------------- | 49| rule | bigint | 是 | 需要添加的规则。 | 50 51**错误码:** 52 53| 错误码ID | 错误信息 | 54| ------- | ----------------------------------------------------------------- | 55| 401 | the parameter check failed, only one bigint type parameter is needed | 56 57**示例:** 58 59```ts 60import { BusinessError } from '@kit.BasicServicesKit'; 61 62try { 63 // 添加一条规则 64 hichecker.addCheckRule(hichecker.RULE_CAUTION_PRINT_LOG); 65 // 添加多条规则 66 // hichecker.addCheckRule( 67 // hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH); 68} catch (err) { 69 console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`); 70} 71``` 72 73## hichecker.removeCheckRule<sup>9+</sup> 74 75removeCheckRule(rule: bigint): void 76 77删除一条或多条规则,删除的规则后续将不再生效。 78 79**系统能力**:SystemCapability.HiviewDFX.HiChecker 80 81**参数:** 82 83| 参数名 | 类型 | 必填 | 说明 | 84| ------ | ------ | ---- | ---------------- | 85| rule | bigint | 是 | 需要删除的规则。 | 86 87**错误码:** 88 89| 错误码ID | 错误信息 | 90| ------- | ----------------------------------------------------------------- | 91| 401 | the parameter check failed, only one bigint type parameter is needed | 92 93**示例:** 94 95```ts 96import { BusinessError } from '@kit.BasicServicesKit'; 97 98try { 99 // 删除一条规则 100 hichecker.removeCheckRule(hichecker.RULE_CAUTION_PRINT_LOG); 101 // 删除多条规则 102 // hichecker.removeCheckRule( 103 // hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH); 104} catch (err) { 105 console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`); 106} 107``` 108 109## hichecker.containsCheckRule<sup>9+</sup> 110 111containsCheckRule(rule: bigint): boolean 112 113当前已添加的规则集中是否包含了某一个特定的规则。如果传入的规则级别为线程级别,则仅在当前线程中进行查询。 114 115**系统能力**:SystemCapability.HiviewDFX.HiChecker 116 117**参数:** 118 119| 参数名 | 类型 | 必填 | 说明 | 120| ------ | ------ | ---- | ---------------- | 121| rule | bigint | 是 | 需要查询的规则。 | 122 123**返回值:** 124 125| 类型 | 说明 | 126| ------- | ---------------------------------------------------------- | 127| boolean | 查询结果。true 表示规则已添加;false 表示规则未添加。 | 128 129**错误码:** 130 131| 错误码ID | 错误信息 | 132| ------- | ----------------------------------------------------------------- | 133| 401 | the parameter check failed, only one bigint type parameter is needed | 134 135**示例:** 136 137```ts 138import { BusinessError } from '@kit.BasicServicesKit'; 139 140try { 141 // 添加一条规则 142 hichecker.addCheckRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); 143 144 // 查询是否包含 145 hichecker.containsCheckRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); // return true; 146 hichecker.containsCheckRule(hichecker.RULE_CAUTION_PRINT_LOG); // return false; 147} catch (err) { 148 console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`); 149} 150``` 151 152## hichecker.addRule<sup>(deprecated)</sup> 153 154addRule(rule: bigint): void 155 156> **说明:** 157> 158> 从 API Version 9 开始废弃,建议使用[hichecker.addCheckRule](#hicheckeraddcheckrule9)替代。 159 160添加一条或多条规则到系统,系统根据添加的规则进行检测或反馈。 161 162**系统能力**:SystemCapability.HiviewDFX.HiChecker 163 164**参数:** 165 166| 参数名 | 类型 | 必填 | 说明 | 167| ------ | ------ | ---- | ---------------- | 168| rule | bigint | 是 | 需要添加的规则。 | 169 170**示例:** 171 172```ts 173// 添加一条规则 174hichecker.addRule(hichecker.RULE_CAUTION_PRINT_LOG); 175 176// 添加多条规则 177hichecker.addRule( 178 hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH); 179``` 180 181## hichecker.removeRule<sup>(deprecated)</sup> 182 183removeRule(rule: bigint): void 184 185> **说明:** 186> 187> 从 API Version 9 开始废弃,建议使用[hichecker.removeCheckRule](#hicheckerremovecheckrule9)替代。 188 189删除一条或多条规则,删除的规则后续将不再生效。 190 191**系统能力**:SystemCapability.HiviewDFX.HiChecker 192 193**参数:** 194 195| 参数名 | 类型 | 必填 | 说明 | 196| ------ | ------ | ---- | ---------------- | 197| rule | bigint | 是 | 需要删除的规则。 | 198 199**示例:** 200 201```ts 202// 删除一条规则 203hichecker.removeRule(hichecker.RULE_CAUTION_PRINT_LOG); 204 205// 删除多条规则 206hichecker.removeRule( 207 hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH); 208``` 209 210## hichecker.getRule 211 212getRule(): bigint 213 214获取当前线程规则、进程规则、告警规则的合集。 215 216**系统能力**:SystemCapability.HiviewDFX.HiChecker 217 218**返回值:** 219 220| 类型 | 说明 | 221| ------ | ---------------------- | 222| bigint | 当前系统中添加的规则。 | 223 224**示例:** 225 226```ts 227// 添加一条规则 228hichecker.addCheckRule(hichecker.RULE_CAUTION_PRINT_LOG); 229 230// 获取已添加的规则 231hichecker.getRule(); // return 1n; 232``` 233 234## hichecker.contains<sup>(deprecated)</sup> 235 236contains(rule: bigint): boolean 237 238> **说明:** 239> 240> 从 API Version 9 开始废弃,建议使用[hichecker.containsCheckRule](#hicheckercontainscheckrule9)替代。 241 242当前已添加的规则集中是否包含了某一个特定的规则。如果传入的规则级别为线程级别,则仅在当前线程中进行查询。 243 244**系统能力**:SystemCapability.HiviewDFX.HiChecker 245 246**参数:** 247 248| 参数名 | 类型 | 必填 | 说明 | 249| ------ | ------ | ---- | ---------------- | 250| rule | bigint | 是 | 需要查询的规则。 | 251 252**返回值:** 253 254| 类型 | 说明 | 255| ------- | ---------------------------------------------------------- | 256| boolean | 查询结果。true 表示规则已添加;false 表示规则未添加。 | 257 258**示例:** 259 260```ts 261// 添加一条规则 262hichecker.addRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); 263 264// 查询是否包含 265hichecker.contains(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); // return true; 266hichecker.contains(hichecker.RULE_CAUTION_PRINT_LOG); // return false; 267``` 268