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