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