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