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