• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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