跳到主要内容

@security/specified-interface-call-chain-check

该规则旨在标识指定接口的调用链,方便接口管理,调用链最大数量为5000。

code-linter.json5配置文件中的overrides字段对该规则不生效。

规则配置

// code-linter.json5
{
"rules": {
"@security/specified-interface-call-chain-check": [
"suggestion",
{
"outputDirPath": "", // 配置输出结果的文件目录,填写文件夹绝对路径,目录不存在则新建,输出文件名为specified-interface-call-chain-check_result.txt。
"callChainMaxLen": 0, // 调用链最大长度,默认为0(表示不限制)
},
{
"selector": "", // 枚举:namespace/class/function/property/type(function包括函数和类方法,class包括类class、接口interface、枚举enum和结构体struct)
"filePath": "", // 目标文件的绝对路径
"namespace": [], // 命名空间的名字数组,表示定义在namespace里或者检查namespace本身,嵌套则按顺序填写
"class": "", // 类名,表示定义在class里边或者是检查的class本身
"function": "", // 函数名
"property": "", // 类属性名
"type": "", // 类型别名
},
{
"selector": "", // 枚举:namespace/class/function/property/type(function包括函数类方法)
"filePath": "", // 目标文件的绝对路径
"namespace": [], // 命名空间的名字数组,表示定义在namespace里或者检查namespace本身,嵌套则按顺序填写
"class": "", // 类名,表示定义在class里边或者是检查的class本身
"function": "", // 函数名
"property": "", // 类属性名
"type": "", // 类型别名
},
],
}
}

选项

该规则无需配置额外选项。

正例

下文中Absolute-Path1.ets为依赖代码:

// Absolute-Path1.ets

export class Cls1 {
public func1() {
console.log('This is func1 in cls1.');
}
public func2() {
console.log('This is func2 in cls1.');
}
}

下文中Correct.ets为正例测试代码,依赖上文中Absolute-Path1.ets:

// Correct.ets

import { Cls1 } from './Absolute-Path1';
let testClass = new Cls1();
testClass.func2();

反例

下文中absolute-path-1.ets为依赖代码:

// absolute-path-1.ets

export class cls1 {
public func1() {
console.log('This is func1 in cls1.');
}
public func2() {
console.log('This is func2 in cls1.');
}
}

下文中incorrect.ets为反例测试代码,依赖上文中absolute-path-1.ets:

// incorrect.ets

import { cls1 } from './absolute-path-1';
let testClass = new cls1();
testClass.func1();

规则集

plugin:@security/all

Code Linter代码检查规则的配置指导请参考Code Linter代码检查