1e41f4b71Sopenharmony_ci# @ohos.hichecker (HiChecker) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ciThe HiChecker module allows you to check issues that may be easily ignored during development of applications (including system-built and third-party applications). Such issues include calling of time-consuming functions by key application threads, event distribution and execution timeout in application processes, and ability resource leakage in application processes. The issues are recorded in logs or lead to process crashes explicitly so that you can find and rectify them. 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **NOTE** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version. 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci## Modules to Import 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci```ts 12e41f4b71Sopenharmony_ciimport { hichecker } from '@kit.PerformanceAnalysisKit'; 13e41f4b71Sopenharmony_ci``` 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci## Constants 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ciProvides the constants of all rule types. 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci**System capability**: SystemCapability.HiviewDFX.HiChecker 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci| Name | Type | Description | 23e41f4b71Sopenharmony_ci| ---------------------------------- | -------- | ------------------------------------------------------ | 24e41f4b71Sopenharmony_ci| RULE_CAUTION_PRINT_LOG | bigint | Alarm rule, which is programmed to print a log when an alarm is generated. | 25e41f4b71Sopenharmony_ci| RULE_CAUTION_TRIGGER_CRASH | bigint | Alarm rule, which is programmed to force the application to exit when an alarm is generated. | 26e41f4b71Sopenharmony_ci| RULE_THREAD_CHECK_SLOW_PROCESS | bigint | Caution rule, which is programmed to detect whether any time-consuming function is invoked. | 27e41f4b71Sopenharmony_ci| RULE_CHECK_ABILITY_CONNECTION_LEAK | bigint | Caution rule, which is programmed to detect whether ability leakage has occurred. | 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci## hichecker.addCheckRule<sup>9+</sup> 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ciaddCheckRule(rule: bigint): void 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ciAdds one or more check rules. HiChecker detects unexpected operations or gives feedback based on the added rules. You can use **grep HiChecker** to check for the application running information in the hilog. 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci**System capability**: SystemCapability.HiviewDFX.HiChecker 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci**Parameters** 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 40e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------- | 41e41f4b71Sopenharmony_ci| rule | bigint | Yes | Rule to be added. | 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci**Error codes** 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci| ID | Error Message | 46e41f4b71Sopenharmony_ci| ------- | ----------------------------------------------------------------- | 47e41f4b71Sopenharmony_ci| 401 | the parameter check failed, only one bigint type parameter is needed | 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci**Example** 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci```ts 52e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 53e41f4b71Sopenharmony_ci 54e41f4b71Sopenharmony_citry { 55e41f4b71Sopenharmony_ci // Add a rule. 56e41f4b71Sopenharmony_ci hichecker.addCheckRule(hichecker.RULE_CAUTION_PRINT_LOG); 57e41f4b71Sopenharmony_ci // Add multiple rules. 58e41f4b71Sopenharmony_ci // hichecker.addCheckRule( 59e41f4b71Sopenharmony_ci // hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH); 60e41f4b71Sopenharmony_ci} catch (err) { 61e41f4b71Sopenharmony_ci console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`); 62e41f4b71Sopenharmony_ci} 63e41f4b71Sopenharmony_ci``` 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci## hichecker.removeCheckRule<sup>9+</sup> 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ciremoveCheckRule(rule: bigint): void 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ciRemoves one or more rules. The removed rules will become ineffective. 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci**System capability**: SystemCapability.HiviewDFX.HiChecker 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci**Parameters** 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 76e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------- | 77e41f4b71Sopenharmony_ci| rule | bigint | Yes | Rule to be removed. | 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ci**Error codes** 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ci| ID | Error Message | 82e41f4b71Sopenharmony_ci| ------- | ----------------------------------------------------------------- | 83e41f4b71Sopenharmony_ci| 401 | the parameter check failed, only one bigint type parameter is needed | 84e41f4b71Sopenharmony_ci 85e41f4b71Sopenharmony_ci**Example** 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci```ts 88e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_citry { 91e41f4b71Sopenharmony_ci // Remove a rule. 92e41f4b71Sopenharmony_ci hichecker.removeCheckRule(hichecker.RULE_CAUTION_PRINT_LOG); 93e41f4b71Sopenharmony_ci // Remove multiple rules. 94e41f4b71Sopenharmony_ci // hichecker.removeCheckRule( 95e41f4b71Sopenharmony_ci // hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH); 96e41f4b71Sopenharmony_ci} catch (err) { 97e41f4b71Sopenharmony_ci console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`); 98e41f4b71Sopenharmony_ci} 99e41f4b71Sopenharmony_ci``` 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci## hichecker.containsCheckRule<sup>9+</sup> 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_cicontainsCheckRule(rule: bigint): boolean 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ciChecks whether the specified rule exists in the collection of added rules. If the rule is of the thread level, this operation is performed only on the current thread. 106e41f4b71Sopenharmony_ci 107e41f4b71Sopenharmony_ci**System capability**: SystemCapability.HiviewDFX.HiChecker 108e41f4b71Sopenharmony_ci 109e41f4b71Sopenharmony_ci**Parameters** 110e41f4b71Sopenharmony_ci 111e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 112e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------- | 113e41f4b71Sopenharmony_ci| rule | bigint | Yes | Rule to be checked. | 114e41f4b71Sopenharmony_ci 115e41f4b71Sopenharmony_ci**Return value** 116e41f4b71Sopenharmony_ci 117e41f4b71Sopenharmony_ci| Type | Description | 118e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------- | 119e41f4b71Sopenharmony_ci| boolean | Returns **true** if the rule exists in the collection of added rules; returns **false** otherwise. | 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci**Error codes** 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci| ID | Error Message | 124e41f4b71Sopenharmony_ci| ------- | ----------------------------------------------------------------- | 125e41f4b71Sopenharmony_ci| 401 | the parameter check failed, only one bigint type parameter is needed | 126e41f4b71Sopenharmony_ci 127e41f4b71Sopenharmony_ci**Example** 128e41f4b71Sopenharmony_ci 129e41f4b71Sopenharmony_ci```ts 130e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 131e41f4b71Sopenharmony_ci 132e41f4b71Sopenharmony_citry { 133e41f4b71Sopenharmony_ci // Add a rule. 134e41f4b71Sopenharmony_ci hichecker.addCheckRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); 135e41f4b71Sopenharmony_ci 136e41f4b71Sopenharmony_ci // Check whether the added rule exists in the collection of added rules. 137e41f4b71Sopenharmony_ci hichecker.containsCheckRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); // return true; 138e41f4b71Sopenharmony_ci hichecker.containsCheckRule(hichecker.RULE_CAUTION_PRINT_LOG); // return false; 139e41f4b71Sopenharmony_ci} catch (err) { 140e41f4b71Sopenharmony_ci console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`); 141e41f4b71Sopenharmony_ci} 142e41f4b71Sopenharmony_ci``` 143e41f4b71Sopenharmony_ci 144e41f4b71Sopenharmony_ci## hichecker.addRule<sup>(deprecated)</sup> 145e41f4b71Sopenharmony_ci 146e41f4b71Sopenharmony_ciaddRule(rule: bigint): void 147e41f4b71Sopenharmony_ci 148e41f4b71Sopenharmony_ci> **NOTE** 149e41f4b71Sopenharmony_ci> 150e41f4b71Sopenharmony_ci> This API is deprecated since API version 9. You are advised to use [hichecker.addCheckRule](#hicheckeraddcheckrule9). 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_ciAdds one or more rules. HiChecker detects unexpected operations or gives feedback based on the added rules. 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci**System capability**: SystemCapability.HiviewDFX.HiChecker 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci**Parameters** 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 159e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------- | 160e41f4b71Sopenharmony_ci| rule | bigint | Yes | Rule to be added. | 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci**Example** 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci```ts 165e41f4b71Sopenharmony_ci// Add a rule. 166e41f4b71Sopenharmony_cihichecker.addRule(hichecker.RULE_CAUTION_PRINT_LOG); 167e41f4b71Sopenharmony_ci 168e41f4b71Sopenharmony_ci// Add multiple rules. 169e41f4b71Sopenharmony_cihichecker.addRule( 170e41f4b71Sopenharmony_ci hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH); 171e41f4b71Sopenharmony_ci``` 172e41f4b71Sopenharmony_ci 173e41f4b71Sopenharmony_ci## hichecker.removeRule<sup>(deprecated)</sup> 174e41f4b71Sopenharmony_ci 175e41f4b71Sopenharmony_ciremoveRule(rule: bigint): void 176e41f4b71Sopenharmony_ci 177e41f4b71Sopenharmony_ci> **NOTE** 178e41f4b71Sopenharmony_ci> 179e41f4b71Sopenharmony_ci> This API is deprecated since API version 9. You are advised to use [hichecker.removeCheckRule](#hicheckerremovecheckrule9). 180e41f4b71Sopenharmony_ci 181e41f4b71Sopenharmony_ciRemoves one or more rules. The removed rules will become ineffective. 182e41f4b71Sopenharmony_ci 183e41f4b71Sopenharmony_ci**System capability**: SystemCapability.HiviewDFX.HiChecker 184e41f4b71Sopenharmony_ci 185e41f4b71Sopenharmony_ci**Parameters** 186e41f4b71Sopenharmony_ci 187e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 188e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------- | 189e41f4b71Sopenharmony_ci| rule | bigint | Yes | Rule to be removed. | 190e41f4b71Sopenharmony_ci 191e41f4b71Sopenharmony_ci**Example** 192e41f4b71Sopenharmony_ci 193e41f4b71Sopenharmony_ci```ts 194e41f4b71Sopenharmony_ci// Remove a rule. 195e41f4b71Sopenharmony_cihichecker.removeRule(hichecker.RULE_CAUTION_PRINT_LOG); 196e41f4b71Sopenharmony_ci 197e41f4b71Sopenharmony_ci// Remove multiple rules. 198e41f4b71Sopenharmony_cihichecker.removeRule( 199e41f4b71Sopenharmony_ci hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH); 200e41f4b71Sopenharmony_ci``` 201e41f4b71Sopenharmony_ci 202e41f4b71Sopenharmony_ci## hichecker.getRule 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_cigetRule(): bigint 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ciObtains a collection of thread, process, and alarm rules that have been added. 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci**System capability**: SystemCapability.HiviewDFX.HiChecker 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci**Return value** 211e41f4b71Sopenharmony_ci 212e41f4b71Sopenharmony_ci| Type | Description | 213e41f4b71Sopenharmony_ci| ------ | ---------------------- | 214e41f4b71Sopenharmony_ci| bigint | Collection of added rules. | 215e41f4b71Sopenharmony_ci 216e41f4b71Sopenharmony_ci**Example** 217e41f4b71Sopenharmony_ci 218e41f4b71Sopenharmony_ci```ts 219e41f4b71Sopenharmony_ci// Add a rule. 220e41f4b71Sopenharmony_cihichecker.addRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); 221e41f4b71Sopenharmony_ci 222e41f4b71Sopenharmony_ci// Obtain the collection of added rules. 223e41f4b71Sopenharmony_cihichecker.getRule(); // return 1n; 224e41f4b71Sopenharmony_ci``` 225e41f4b71Sopenharmony_ci 226e41f4b71Sopenharmony_ci## hichecker.contains<sup>(deprecated)</sup> 227e41f4b71Sopenharmony_ci 228e41f4b71Sopenharmony_cicontains(rule: bigint): boolean 229e41f4b71Sopenharmony_ci 230e41f4b71Sopenharmony_ci> **NOTE** 231e41f4b71Sopenharmony_ci> 232e41f4b71Sopenharmony_ci> This API is deprecated since API version 9. You are advised to use [hichecker.containsCheckRule](#hicheckercontainscheckrule9). 233e41f4b71Sopenharmony_ci 234e41f4b71Sopenharmony_ciChecks whether the specified rule exists in the collection of added rules. If the rule is of the thread level, this operation is performed only on the current thread. 235e41f4b71Sopenharmony_ci 236e41f4b71Sopenharmony_ci**System capability**: SystemCapability.HiviewDFX.HiChecker 237e41f4b71Sopenharmony_ci 238e41f4b71Sopenharmony_ci**Parameters** 239e41f4b71Sopenharmony_ci 240e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 241e41f4b71Sopenharmony_ci| ------ | ------ | ---- | ---------------- | 242e41f4b71Sopenharmony_ci| rule | bigint | Yes | Rule to be checked. | 243e41f4b71Sopenharmony_ci 244e41f4b71Sopenharmony_ci**Return value** 245e41f4b71Sopenharmony_ci 246e41f4b71Sopenharmony_ci| Type | Description | 247e41f4b71Sopenharmony_ci| ------- | ---------------------------------------------------------- | 248e41f4b71Sopenharmony_ci| boolean | Returns **true** if the rule exists in the collection of added rules; returns **false** otherwise. | 249e41f4b71Sopenharmony_ci 250e41f4b71Sopenharmony_ci**Example** 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ci```ts 253e41f4b71Sopenharmony_ci// Add a rule. 254e41f4b71Sopenharmony_cihichecker.addRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); 255e41f4b71Sopenharmony_ci 256e41f4b71Sopenharmony_ci// Check whether the added rule exists in the collection of added rules. 257e41f4b71Sopenharmony_cihichecker.contains(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); // return true; 258e41f4b71Sopenharmony_cihichecker.contains(hichecker.RULE_CAUTION_PRINT_LOG); // return false; 259e41f4b71Sopenharmony_ci``` 260