js-apis-hichecker.md 7.5 KB
Newer Older
L
lutao 已提交
1 2
# 检测模式

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

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


## 导入模块

 
卢韬 已提交
11
```js
L
lutao 已提交
12 13 14 15
import hichecker from '@ohos.hichecker';
```


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

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

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

L
lutao 已提交
22 23
| 名称                               | 参数类型 | 说明                                                   |
| ---------------------------------- | -------- | ------------------------------------------------------ |
24 25 26 27
| 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 已提交
28 29


卢韬 已提交
30
## hichecker.addRule<sup>(deprecated)</sup>
L
lutao 已提交
31

32
addRule(rule: bigint): void
L
lutao 已提交
33

卢韬 已提交
34
> **说明:** 从 API Version 9 开始废弃,建议使用[hichecker.addCheckRule](#hicheckeraddcheckrule9)替代。
卢韬 已提交
35

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

Z
zengyawen 已提交
38 39
**系统能力:** SystemCapability.HiviewDFX.HiChecker

Z
zengyawen 已提交
40
**参数:**
L
lutao 已提交
41

Z
zengyawen 已提交
42 43
| 参数名 | 类型   | 必填 | 说明             |
| ------ | ------ | ---- | ---------------- |
44
| rule   | bigint | 是   | 需要添加的规则。 |
L
lutao 已提交
45

Z
zengyawen 已提交
46
**示例:**
L
lutao 已提交
47

 
卢韬 已提交
48
```js
Z
zengyawen 已提交
49 50 51 52 53 54 55
// 添加一条规则
hichecker.addRule(hichecker.RULE_CAUTION_PRINT_LOG);

// 添加多条规则
hichecker.addRule(
          hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
```
L
lutao 已提交
56

卢韬 已提交
57
## hichecker.removeRule<sup>(deprecated)</sup>
L
lutao 已提交
58

59
removeRule(rule: bigint): void
L
lutao 已提交
60

卢韬 已提交
61
> **说明:** 从 API Version 9 开始废弃,建议使用[hichecker.removeCheckRule](#hicheckerremovecheckrule9)替代。
卢韬 已提交
62

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

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

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

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

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

 
卢韬 已提交
75
```js
Z
zengyawen 已提交
76 77 78 79 80 81 82
// 删除一条规则
hichecker.removeRule(hichecker.RULE_CAUTION_PRINT_LOG);

// 删除多条规则
hichecker.removeRule(
          hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
```
L
lutao 已提交
83

Z
zengyawen 已提交
84
## hichecker.getRule
L
lutao 已提交
85

86
getRule(): bigint 
L
lutao 已提交
87 88 89

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

Z
zengyawen 已提交
90 91
**系统能力:** SystemCapability.HiviewDFX.HiChecker

Z
zengyawen 已提交
92
**返回值:**
L
lutao 已提交
93

Z
zengyawen 已提交
94 95
| 类型   | 说明                   |
| ------ | ---------------------- |
96
| bigint | 当前系统中添加的规则。 |
L
lutao 已提交
97

Z
zengyawen 已提交
98
**示例:**
L
lutao 已提交
99

 
卢韬 已提交
100
```js
Z
zengyawen 已提交
101 102 103 104 105 106
// 添加一条规则
hichecker.addRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS);

// 获取已添加的规则
hichecker.getRule();   // return 1n;
```
L
lutao 已提交
107

卢韬 已提交
108
## hichecker.contains<sup>(deprecated)</sup>
L
lutao 已提交
109

110
contains(rule: bigint): boolean
L
lutao 已提交
111

卢韬 已提交
112
> **说明:** 从 API Version 9 开始废弃,建议使用[hichecker.containsCheckRule](#hicheckercontainscheckrule9)替代。
卢韬 已提交
113

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

Z
zengyawen 已提交
116 117
**系统能力:** SystemCapability.HiviewDFX.HiChecker

Z
zengyawen 已提交
118
**参数:**
L
lutao 已提交
119

Z
zengyawen 已提交
120 121
| 参数名 | 类型   | 必填 | 说明             |
| ------ | ------ | ---- | ---------------- |
122
| rule   | bigint | 是   | 需要查询的规则。 |
L
lutao 已提交
123

Z
zengyawen 已提交
124
**返回值:**
L
lutao 已提交
125

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

Z
zengyawen 已提交
130 131
**示例:**

 
卢韬 已提交
132
```js
Z
zengyawen 已提交
133 134
// 添加一条规则
hichecker.addRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS);
L
lutao 已提交
135

Z
zengyawen 已提交
136 137 138
// 查询是否包含
hichecker.contains(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); // return true;
hichecker.contains(hichecker.RULE_CAUTION_PRINT_LOG); // return false;
卢韬 已提交
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246
```
## hichecker.addCheckRule<sup>9+</sup>

addCheckRule(rule: bigint): void

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

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

**参数:**

| 参数名 | 类型   | 必填 | 说明             |
| ------ | ------ | ---- | ---------------- |
| rule   | bigint | 是   | 需要添加的规则。 |

**错误码:**

| 错误码ID | 错误信息(此处仅提供错误抛出的关键信息) |
| -------- | ---------------------------------------- |
| 401      | Invalid input parameter!                 |

**示例:**

```js
try {
    // 添加一条规则
    hichecker.addCheckRule(hichecker.RULE_CAUTION_PRINT_LOG);}
    // 添加多条规则
    hichecker.addCheckRule(
        hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
catch (err) {
    console.error(`code: ${err.code}, message: ${err.message}`);
}
```

## hichecker.removeCheckRule<sup>9+</sup>

removeCheckRule(rule: bigint): void

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

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

**参数:**

| 参数名 | 类型   | 必填 | 说明             |
| ------ | ------ | ---- | ---------------- |
| rule   | bigint | 是   | 需要删除的规则。 |

**错误码:**

| 错误码ID | 错误信息(此处仅提供错误抛出的关键信息) |
| -------- | ---------------------------------------- |
| 401      | Invalid input parameter!                 |

**示例:**

```js
try {
    // 删除一条规则
    hichecker.removeRule(hichecker.RULE_CAUTION_PRINT_LOG);
    // 删除多条规则
    hichecker.removeRule(
        hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH);
catch (err) {
    console.error(`code: ${err.code}, message: ${err.message}`);
}
```

## hichecker.containsCheckRule<sup>9+</sup>

containsCheckRule(rule: bigint): boolean

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

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

**参数:**

| 参数名 | 类型   | 必填 | 说明             |
| ------ | ------ | ---- | ---------------- |
| rule   | bigint | 是   | 需要查询的规则。 |

**返回值:**

| 类型    | 说明                                                       |
| ------- | ---------------------------------------------------------- |
| boolean | 查询结果,true&nbsp;表示规则已添加,false 表示规则未添加。 |

**错误码:**

| 错误码ID | 错误信息(此处仅提供错误抛出的关键信息) |
| -------- | ---------------------------------------- |
| 401      | Invalid input parameter!                 |

**示例:**

```js
try {
    // 添加一条规则
    hichecker.addRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS);

    // 查询是否包含
    hichecker.contains(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); // return true;
    hichecker.contains(hichecker.RULE_CAUTION_PRINT_LOG); // return false;
catch (err) {
    console.error(`code: ${err.code}, message: ${err.message}`);
}
Z
zengyawen 已提交
247
```