• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.hichecker (检测模式)
2
3<!--Kit: Performance Analysis Kit-->
4<!--Subsystem: HiviewDFX-->
5<!--Owner: @lu-tao-->
6<!--Designer: @martin-duan-->
7<!--Tester: @gcw_KuLfPSbe-->
8<!--Adviser: @foryourself-->
9
10HiChecker可以作为应用开发阶段使用的检测工具,用于检测代码运行过程中部分易忽略的问题,如应用线程出现耗时调用、应用进程中Ability资源泄露等问题。开发者可以通过日志记录或进程crash等形式查看具体问题并进行修改,提升应用的使用体验。
11
12> **说明:**
13>
14> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
15
16## 导入模块
17
18```ts
19import { hichecker } from '@kit.PerformanceAnalysisKit';
20```
21
22
23## 常量
24
25提供了所有规则类型的常量。
26
27**系统能力**:SystemCapability.HiviewDFX.HiChecker
28
29| 名称                                             | 类型      | 值         | 说明                                                   |
30| ------------------------------------------------ | -------- | -----------| ------------------------------------------------------ |
31| RULE_CAUTION_PRINT_LOG                           | bigint   | 1ULL << 63 | 告警规则,当有告警时记录日志。                            |
32| RULE_CAUTION_TRIGGER_CRASH                       | bigint   | 1ULL << 62 | 告警规则,当有告警时让应用退出。                          |
33| RULE_THREAD_CHECK_SLOW_PROCESS                   | bigint   | 1ULL       | 检测规则,检测是否有耗时函数被调用。                      |
34| RULE_CHECK_ABILITY_CONNECTION_LEAK               | bigint   | 1ULL << 33 | 检测规则,检测是否发生ability泄露。                      |
35| RULE_CHECK_ARKUI_PERFORMANCE<sup>11+</sup>       | bigint   | 1ULL << 34 | 检测规则,检测arkui性能。                               |
36
37## hichecker.addCheckRule<sup>9+</sup>
38
39addCheckRule(rule: bigint): void
40
41添加一条或多条规则到系统,系统根据添加的规则进行检测或反馈,当有相应规则触发时可在hilog中grep HiChecker查看运行信息。
42
43**系统能力**:SystemCapability.HiviewDFX.HiChecker
44
45**参数:**
46
47| 参数名 | 类型   | 必填 | 说明             |
48| ------ | ------ | ---- | ---------------- |
49| rule   | bigint | 是   | 需要添加的规则。 |
50
51**错误码:**
52
53| 错误码ID | 错误信息 |
54| ------- | ----------------------------------------------------------------- |
55| 401 | the parameter check failed, only one bigint type parameter is needed  |
56
57**示例:**
58
59```ts
60import { BusinessError } from '@kit.BasicServicesKit';
61
62try {
63    // 添加一条规则
64    hichecker.addCheckRule(hichecker.RULE_CAUTION_PRINT_LOG);
65    // 添加多条规则
66    // hichecker.addCheckRule(
67    //     hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
68} catch (err) {
69    console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`);
70}
71```
72
73## hichecker.removeCheckRule<sup>9+</sup>
74
75removeCheckRule(rule: bigint): void
76
77删除一条或多条规则,删除的规则后续将不再生效。
78
79**系统能力**:SystemCapability.HiviewDFX.HiChecker
80
81**参数:**
82
83| 参数名 | 类型   | 必填 | 说明             |
84| ------ | ------ | ---- | ---------------- |
85| rule   | bigint | 是   | 需要删除的规则。 |
86
87**错误码:**
88
89| 错误码ID | 错误信息 |
90| ------- | ----------------------------------------------------------------- |
91| 401 | the parameter check failed, only one bigint type parameter is needed  |
92
93**示例:**
94
95```ts
96import { BusinessError } from '@kit.BasicServicesKit';
97
98try {
99    // 删除一条规则
100    hichecker.removeCheckRule(hichecker.RULE_CAUTION_PRINT_LOG);
101    // 删除多条规则
102    // hichecker.removeCheckRule(
103    //     hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
104} catch (err) {
105    console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`);
106}
107```
108
109## hichecker.containsCheckRule<sup>9+</sup>
110
111containsCheckRule(rule: bigint): boolean
112
113当前已添加的规则集中是否包含了某一个特定的规则。如果传入的规则级别为线程级别,则仅在当前线程中进行查询。
114
115**系统能力**:SystemCapability.HiviewDFX.HiChecker
116
117**参数:**
118
119| 参数名 | 类型   | 必填 | 说明             |
120| ------ | ------ | ---- | ---------------- |
121| rule   | bigint | 是   | 需要查询的规则。 |
122
123**返回值:**
124
125| 类型    | 说明                                                       |
126| ------- | ---------------------------------------------------------- |
127| boolean | 查询结果。true 表示规则已添加;false 表示规则未添加。 |
128
129**错误码:**
130
131| 错误码ID | 错误信息 |
132| ------- | ----------------------------------------------------------------- |
133| 401 | the parameter check failed, only one bigint type parameter is needed  |
134
135**示例:**
136
137```ts
138import { BusinessError } from '@kit.BasicServicesKit';
139
140try {
141    // 添加一条规则
142    hichecker.addCheckRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS);
143
144    // 查询是否包含
145    hichecker.containsCheckRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); // return true;
146    hichecker.containsCheckRule(hichecker.RULE_CAUTION_PRINT_LOG); // return false;
147} catch (err) {
148    console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`);
149}
150```
151
152## hichecker.addRule<sup>(deprecated)</sup>
153
154addRule(rule: bigint): void
155
156> **说明:**
157>
158> 从 API Version 9 开始废弃,建议使用[hichecker.addCheckRule](#hicheckeraddcheckrule9)替代。
159
160添加一条或多条规则到系统,系统根据添加的规则进行检测或反馈。
161
162**系统能力**:SystemCapability.HiviewDFX.HiChecker
163
164**参数:**
165
166| 参数名 | 类型   | 必填 | 说明             |
167| ------ | ------ | ---- | ---------------- |
168| rule   | bigint | 是   | 需要添加的规则。 |
169
170**示例:**
171
172```ts
173// 添加一条规则
174hichecker.addRule(hichecker.RULE_CAUTION_PRINT_LOG);
175
176// 添加多条规则
177hichecker.addRule(
178          hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
179```
180
181## hichecker.removeRule<sup>(deprecated)</sup>
182
183removeRule(rule: bigint): void
184
185> **说明:**
186>
187> 从 API Version 9 开始废弃,建议使用[hichecker.removeCheckRule](#hicheckerremovecheckrule9)替代。
188
189删除一条或多条规则,删除的规则后续将不再生效。
190
191**系统能力**:SystemCapability.HiviewDFX.HiChecker
192
193**参数:**
194
195| 参数名 | 类型   | 必填 | 说明             |
196| ------ | ------ | ---- | ---------------- |
197| rule   | bigint | 是   | 需要删除的规则。 |
198
199**示例:**
200
201```ts
202// 删除一条规则
203hichecker.removeRule(hichecker.RULE_CAUTION_PRINT_LOG);
204
205// 删除多条规则
206hichecker.removeRule(
207          hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
208```
209
210## hichecker.getRule
211
212getRule(): bigint
213
214获取当前线程规则、进程规则、告警规则的合集。
215
216**系统能力**:SystemCapability.HiviewDFX.HiChecker
217
218**返回值:**
219
220| 类型   | 说明                   |
221| ------ | ---------------------- |
222| bigint | 当前系统中添加的规则。 |
223
224**示例:**
225
226```ts
227// 添加一条规则
228hichecker.addCheckRule(hichecker.RULE_CAUTION_PRINT_LOG);
229
230// 获取已添加的规则
231hichecker.getRule();   // return 1n;
232```
233
234## hichecker.contains<sup>(deprecated)</sup>
235
236contains(rule: bigint): boolean
237
238> **说明:**
239>
240> 从 API Version 9 开始废弃,建议使用[hichecker.containsCheckRule](#hicheckercontainscheckrule9)替代。
241
242当前已添加的规则集中是否包含了某一个特定的规则。如果传入的规则级别为线程级别,则仅在当前线程中进行查询。
243
244**系统能力**:SystemCapability.HiviewDFX.HiChecker
245
246**参数:**
247
248| 参数名 | 类型   | 必填 | 说明             |
249| ------ | ------ | ---- | ---------------- |
250| rule   | bigint | 是   | 需要查询的规则。 |
251
252**返回值:**
253
254| 类型    | 说明                                                       |
255| ------- | ---------------------------------------------------------- |
256| boolean | 查询结果。true 表示规则已添加;false 表示规则未添加。 |
257
258**示例:**
259
260```ts
261// 添加一条规则
262hichecker.addRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS);
263
264// 查询是否包含
265hichecker.contains(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); // return true;
266hichecker.contains(hichecker.RULE_CAUTION_PRINT_LOG); // return false;
267```
268