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