js-apis-hichecker.md 7.0 KB
Newer Older
1
# @ohos.hichecker (检测模式)
L
lutao 已提交
2

3 4
HiChecker可以作为应用开发阶段使用的检测工具,用于检测代码运行过程中部分易忽略的问题,如应用线程出现耗时调用、应用进程中Ability资源泄露等问题。开发者可以通过日志记录或进程crash等形式查看具体问题并进行修改,提升应用的使用体验。

L
lutao 已提交
5
> **说明:**
6
> 
L
lutao 已提交
7 8 9 10
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

## 导入模块

11
```ts
L
lutao 已提交
12 13 14
import hichecker from '@ohos.hichecker';
```

Z
zengyawen 已提交
15
## 常量
L
lutao 已提交
16 17 18

提供了所有规则类型的常量。

19
**系统能力:** SystemCapability.HiviewDFX.HiChecker
Z
zengyawen 已提交
20

21 22 23 24 25 26
| 名称                                 | 参数类型   | 说明                    |
| ---------------------------------- | ------ | --------------------- |
| RULE_CAUTION_PRINT_LOG             | bigint | 告警规则,当有告警时记录日志。       |
| RULE_CAUTION_TRIGGER_CRASH         | bigint | 告警规则,当有告警时让应用推出。      |
| RULE_THREAD_CHECK_SLOW_PROCESS     | bigint | 检测规则,检测是否有耗时函数被调用。    |
| RULE_CHECK_ABILITY_CONNECTION_LEAK | bigint | 检测规则,检测是否发生ability泄露。 |
L
lutao 已提交
27

卢韬 已提交
28
## hichecker.addCheckRule<sup>9+</sup>
L
lutao 已提交
29

卢韬 已提交
30
addCheckRule(rule: bigint): void
卢韬 已提交
31

L
lutao 已提交
32 33
添加一条或多条规则到系统,系统根据添加的规则进行检测或反馈。

Z
zengyawen 已提交
34 35
**系统能力:** SystemCapability.HiviewDFX.HiChecker

Z
zengyawen 已提交
36
**参数:**
L
lutao 已提交
37

38 39 40
| 参数名  | 类型     | 必填  | 说明       |
| ---- | ------ | --- | -------- |
| rule | bigint | 是   | 需要添加的规则。 |
L
lutao 已提交
41

Z
zengyawen 已提交
42
**示例:**
L
lutao 已提交
43

44 45 46 47
```ts
import hichecker from '@ohos.hichecker';
import { BusinessError } from '@ohos.base';

卢韬 已提交
48 49
try {
    // 添加一条规则
50
    hichecker.addCheckRule(hichecker.RULE_CAUTION_PRINT_LOG);
卢韬 已提交
51
    // 添加多条规则
52 53 54
    // hichecker.addCheckRule(
    //     hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
} catch (err) {
55
    console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`);
卢韬 已提交
56
}
Z
zengyawen 已提交
57
```
L
lutao 已提交
58

卢韬 已提交
59
## hichecker.removeCheckRule<sup>9+</sup>
L
lutao 已提交
60

卢韬 已提交
61
removeCheckRule(rule: bigint): void
卢韬 已提交
62

L
lutao 已提交
63 64
删除一条或多条规则,删除的规则后续将不再生效。

Z
zengyawen 已提交
65 66
**系统能力:** SystemCapability.HiviewDFX.HiChecker

Z
zengyawen 已提交
67
**参数:**
L
lutao 已提交
68

69 70 71
| 参数名  | 类型     | 必填  | 说明       |
| ---- | ------ | --- | -------- |
| rule | bigint | 是   | 需要删除的规则。 |
L
lutao 已提交
72

Z
zengyawen 已提交
73
**示例:**
L
lutao 已提交
74

75 76 77 78
```ts
import hichecker from '@ohos.hichecker';
import { BusinessError } from '@ohos.base'

卢韬 已提交
79 80
try {
    // 删除一条规则
卢韬 已提交
81
    hichecker.removeCheckRule(hichecker.RULE_CAUTION_PRINT_LOG);
卢韬 已提交
82
    // 删除多条规则
83 84 85
    // hichecker.removeCheckRule(
    //     hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
} catch (err) {
86
    console.error(`code: ${(err as BusinessError).code}, message: ${(err as BusinessError).message}`);
卢韬 已提交
87
}
Z
zengyawen 已提交
88
```
L
lutao 已提交
89

卢韬 已提交
90
## hichecker.containsCheckRule<sup>9+</sup>
L
lutao 已提交
91

卢韬 已提交
92
containsCheckRule(rule: bigint): boolean
卢韬 已提交
93

L
lutao 已提交
94
当前已添加的规则集中是否包含了某一个特定的规则,如果传入的规则级别为线程级别,则仅在当前线程中进行查询。
L
lutao 已提交
95

Z
zengyawen 已提交
96 97
**系统能力:** SystemCapability.HiviewDFX.HiChecker

Z
zengyawen 已提交
98
**参数:**
L
lutao 已提交
99

100 101 102
| 参数名  | 类型     | 必填  | 说明       |
| ---- | ------ | --- | -------- |
| rule | bigint | 是   | 需要查询的规则。 |
L
lutao 已提交
103

Z
zengyawen 已提交
104
**返回值:**
L
lutao 已提交
105

106 107
| 类型      | 说明                                    |
| ------- | ------------------------------------- |
Z
zengyawen 已提交
108
| boolean | 查询结果,true&nbsp;表示规则已添加,false 表示规则未添加。 |
L
lutao 已提交
109

Z
zengyawen 已提交
110 111
**示例:**

112 113 114 115
```ts
import hichecker from '@ohos.hichecker';
import { BusinessError } from '@ohos.base'

卢韬 已提交
116 117
try {
    // 添加一条规则
卢韬 已提交
118
    hichecker.addCheckRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS);
L
lutao 已提交
119

卢韬 已提交
120
    // 查询是否包含
卢韬 已提交
121 122
    hichecker.containsCheckRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); // return true;
    hichecker.containsCheckRule(hichecker.RULE_CAUTION_PRINT_LOG); // return false;
123
} catch (err) {
卢韬 已提交
124 125
    console.error(`code: ${err.code}, message: ${err.message}`);
}
卢韬 已提交
126 127
```

卢韬 已提交
128 129 130 131
## hichecker.addRule<sup>(deprecated)</sup>

addRule(rule: bigint): void

Z
zengyawen 已提交
132
> **说明:**
133
> 
Z
zengyawen 已提交
134
> 从 API Version 9 开始废弃,建议使用[hichecker.addCheckRule](#hicheckeraddcheckrule9)替代。
卢韬 已提交
135 136 137 138 139 140 141

添加一条或多条规则到系统,系统根据添加的规则进行检测或反馈。

**系统能力:** SystemCapability.HiviewDFX.HiChecker

**参数:**

142 143 144
| 参数名  | 类型     | 必填  | 说明       |
| ---- | ------ | --- | -------- |
| rule | bigint | 是   | 需要添加的规则。 |
卢韬 已提交
145 146 147

**示例:**

148
```ts
卢韬 已提交
149 150 151 152 153 154
// 添加一条规则
hichecker.addRule(hichecker.RULE_CAUTION_PRINT_LOG);

// 添加多条规则
hichecker.addRule(
          hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
卢韬 已提交
155 156
```

卢韬 已提交
157
## hichecker.removeRule<sup>(deprecated)</sup>
卢韬 已提交
158

卢韬 已提交
159 160
removeRule(rule: bigint): void

Z
zengyawen 已提交
161
> **说明:**
162
> 
Z
zengyawen 已提交
163
> 从 API Version 9 开始废弃,建议使用[hichecker.removeCheckRule](#hicheckerremovecheckrule9)替代。
卢韬 已提交
164 165 166 167 168 169 170

删除一条或多条规则,删除的规则后续将不再生效。

**系统能力:** SystemCapability.HiviewDFX.HiChecker

**参数:**

171 172 173
| 参数名  | 类型     | 必填  | 说明       |
| ---- | ------ | --- | -------- |
| rule | bigint | 是   | 需要删除的规则。 |
卢韬 已提交
174

卢韬 已提交
175 176
**示例:**

177
```ts
卢韬 已提交
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
// 删除一条规则
hichecker.removeRule(hichecker.RULE_CAUTION_PRINT_LOG);

// 删除多条规则
hichecker.removeRule(
          hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
```

## hichecker.getRule

getRule(): bigint 

获取当前线程规则、进程规则、告警规则的合集。

**系统能力:** SystemCapability.HiviewDFX.HiChecker
卢韬 已提交
193

卢韬 已提交
194 195
**返回值:**

196 197
| 类型     | 说明          |
| ------ | ----------- |
卢韬 已提交
198
| bigint | 当前系统中添加的规则。 |
卢韬 已提交
199 200 201

**示例:**

202
```ts
卢韬 已提交
203 204 205 206 207
// 添加一条规则
hichecker.addRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS);

// 获取已添加的规则
hichecker.getRule();   // return 1n;
卢韬 已提交
208 209
```

卢韬 已提交
210
## hichecker.contains<sup>(deprecated)</sup>
卢韬 已提交
211

卢韬 已提交
212 213
contains(rule: bigint): boolean

Z
zengyawen 已提交
214
> **说明:**
215
> 
Z
zengyawen 已提交
216
> 从 API Version 9 开始废弃,建议使用[hichecker.containsCheckRule](#hicheckercontainscheckrule9)替代。
卢韬 已提交
217 218 219 220 221 222 223

当前已添加的规则集中是否包含了某一个特定的规则,如果传入的规则级别为线程级别,则仅在当前线程中进行查询。

**系统能力:** SystemCapability.HiviewDFX.HiChecker

**参数:**

224 225 226
| 参数名  | 类型     | 必填  | 说明       |
| ---- | ------ | --- | -------- |
| rule | bigint | 是   | 需要查询的规则。 |
卢韬 已提交
227 228 229

**返回值:**

230 231
| 类型      | 说明                                    |
| ------- | ------------------------------------- |
卢韬 已提交
232 233 234 235
| boolean | 查询结果,true&nbsp;表示规则已添加,false 表示规则未添加。 |

**示例:**

236
```ts
卢韬 已提交
237 238
// 添加一条规则
hichecker.addRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS);
卢韬 已提交
239

卢韬 已提交
240 241 242
// 查询是否包含
hichecker.contains(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); // return true;
hichecker.contains(hichecker.RULE_CAUTION_PRINT_LOG); // return false;
243
```