跳到主要内容

recommended推荐规则清单

通用规则推荐规则集@typescript-eslint/recommended

@typescript-eslint/await-thenable不允许对不是“Thenable”对象的值使用await关键字(“Thenable”表示某个对象拥有“then”方法,比如Promise)。
@typescript-eslint/consistent-type-imports强制使用一致的类型导入风格。
@typescript-eslint/explicit-function-return-type函数和类方法需要显式的定义返回类型。
@typescript-eslint/explicit-module-boundary-types导出到外部的函数和公共类方法,需要显式的定义返回类型和参数类型。
@typescript-eslint/no-dynamic-delete不允许在computed key表达式上使用“delete”运算符。
@typescript-eslint/no-explicit-any不允许使用“any”类型。
@typescript-eslint/no-for-in-array禁止使用 for-in 循环来遍历数组元素。
@typescript-eslint/no-this-alias禁止将“this”赋值给一个变量。
@typescript-eslint/no-unnecessary-type-constraint不允许在泛型中使用不必要的约束条件。
@typescript-eslint/no-unsafe-argument不允许将any类型的值作为函数的参数传入。
@typescript-eslint/no-unsafe-assignment禁止将“any”类型的值赋值给变量和属性。
@typescript-eslint/no-unsafe-call禁止调用“any”类型的表达式。
@typescript-eslint/no-unsafe-member-access禁止成员访问“any”类型的值。
@typescript-eslint/no-unsafe-return函数禁止返回类型为“any”的值。
@typescript-eslint/prefer-literal-enum-member要求所有枚举成员都定义为字面量值。

安全规则推荐规则集@security/recommended

@security/no-commented-code不使用的代码段建议直接删除,不允许通过注释的方式保留。
@security/no-unsafe-aes该规则禁止在AES加密算法中使用不安全的ECB加密模式。
@security/no-unsafe-dh该规则禁止使用不安全的DH密钥协商算法。
@security/no-unsafe-dh-key该规则禁止使用不安全的DH密钥。
@security/no-unsafe-dsa该规则禁止使用不安全的DSA签名算法。
@security/no-unsafe-dsa-key该规则禁止使用不安全的DSA密钥。
@security/no-unsafe-ecdsa该规则禁止在ECDSA签名算法中使用不安全的SHA1摘要算法。
@security/no-unsafe-hash该规则使用禁止不安全的哈希算法。
@security/no-unsafe-mac该规则禁止在MAC消息认证算法中使用不安全的哈希算法。
@security/no-unsafe-rsa-encrypt该规则禁止使用不安全的RSA非对称加密算法。
@security/no-unsafe-rsa-key该规则禁止使用不安全的RSA密钥。
@security/no-unsafe-rsa-sign该规则禁止不安全的RSA签名算法。
@security/no-unsafe-3des该规则禁止使用不安全的3DES加密模式。

性能规则推荐规则集@performance/recommended

@performance/foreach-args-check建议在ForEach参数中设置keyGenerator。
@performance/high-frequency-log-check不建议在高频函数中使用Hilog。
@performance/hp-arkts-no-use-any-export-current避免使用export * 导出当前module中定义的类型和数据。
@performance/hp-arkts-no-use-any-export-other避免使用export * 导出其他module中定义的类型和数据。
@performance/hp-arkui-avoid-update-auto-state-var-in-aboutToReuse避免在aboutToReuse中对自动更新值的状态变量进行更新。
@performance/hp-arkui-combine-same-arg-animateto建议动画参数相同时使用同一个animateTo。
@performance/hp-arkui-load-on-demand建议使用按需加载。
@performance/hp-arkui-no-func-as-arg-for-reusable-component避免使用函数作为复用的自定义组件创建时的入参。
@performance/hp-arkui-no-state-var-access-in-loop避免在for、while等循环逻辑中频繁读取状态变量。
@performance/hp-arkui-no-stringify-in-lazyforeach-key-generator在使用LazyForEach进行组件复用的key生成器函数里,不要使用stringify。
@performance/hp-arkui-replace-nested-reusable-component-by-builder建议使用@Builder替代嵌套的自定义组件。
@performance/hp-arkui-set-cache-count-for-lazyforeach-grid建议在Grid下使用LazyForEach时设置合理的cacheCount。
@performance/hp-arkui-suggest-cache-avplayer建议缓存AVPlayer实例减少起播时延。
@performance/hp-arkui-suggest-reuseid-for-if-else-reusable-component建议使用reuseId标记不同结构的组件构成。
@performance/hp-arkui-suggest-use-effectkit-blur建议使用effectKit.createEffect实现模糊效果。
@performance/hp-arkui-use-grid-layout-options建议在指定位置时使用GridLayoutOptions提升Grid性能。
@performance/hp-arkui-use-local-var-to-replace-state-var建议使用临时变量替换状态变量。
@performance/hp-arkui-use-object-link-to-replace-prop建议使用@ObjectLink代替@Prop减少不必要的深拷贝。
@performance/hp-arkui-use-onAnimationStart-for-swiper-preload建议Swiper预加载机制搭配 OnAnimationStart 接口回调使用。
@performance/hp-arkui-use-reusable-component建议复杂组件的定义,尽量使用组件复用。
@performance/hp-arkui-use-scale-to-replace-attr-animateto建议组件布局改动时使用图形变换属性动画。
@performance/hp-arkui-use-transition-to-replace-animateto建议组件转场动画使用transition。
@performance/hp-ffrt-no-use-std禁止在FFRT worker中使用std::xxx等同步接口。
@performance/no-high-loaded-frame-rate-range不允许锁定最高帧率运行。
@performance/start-window-icon-check启动页图标分辨率建议不超过256 * 256。
@performance/waterflow-data-preload-check建议对waterflow子组件进行数据预加载。
@performance/web-on-active-check使用了Web预渲染技术的应用,建议在预渲染完成后(onFirstMeaningfulPaint),调用停止渲染接口(onInactive)。
@performance/gif-hardware-decoding-check在使用@ohos/gif-drawable库解码gif图片时,建议开启硬解码,提升gif加载性能。
@performance/no-use-any-import使用import的方式引入对应的模块时,建议按需引用使用到的变量代替“import *”的方式,以减少 .ets文件的执行耗时和文件中所有export变量的初始化过程。
@performance/avoid-overusing-custom-component-check当在应用中使用自定义组件时,可以优先使用@Builder函数代替自定义组件,@Builder函数不会在后端FrameNode节点树上创建一个新的树节点,有助于缩短页面的加载和渲染时长。
@performance/bad-deep-clone-check避免使用不合理深拷贝,如JSON.parse(JSON.stringify(foo))和_.cloneDeep(foo)。
@performance/reuse-date-instances-check用于检测在循环或调用频繁的方法中重复创建Date对象,建议开发者重用现有实例或使用时间戳进行计算,减少创建Date成本。
@performance/crypto-replacement-check对于三方库@ohos/crypto-js所提供的大部分接口,SDK(@ohos.security.cryptoFramework)中有对应的系统原生实现。建议使用系统原生接口。
@performance/monitor-invisible-area-in-image-animation使用ImageAnimation实现帧动画时,建议显式调用monitorInvisibleArea接口。在动画组件不可见时,会停止动画播放,减少无效的冗余动画带来的负载恶化。
@performance/datashare-query-unrelease-check建议使用DataShareHelper的query接口查询数据得到结果后,应及时关闭,避免造成内存泄露。
@performance/update-state-var-between-animatetos-check如果多个animateTo之间存在状态更新,会导致执行下一个animateTo之前又存在需要更新的脏节点,可能造成冗余更新。因此不建议在两次animateTo之间进行状态变量更新。

预览规则集@previewer/recommended

@previewer/mandatory-default-value-for-local-initialization如果组件的属性支持本地初始化,需要设置一个合法的不依赖运行时的默认值。
@previewer/no-page-method-on-preview-component禁止在非路由组件上实例化onPageShow、onPageHide、onBackPress等页面级方法。
@previewer/no-unallowed-decorator-on-root-component对于@Entry组件,不允许使用@Consume、@Link、@ObjectLink、@Prop注解;对于@Preview组件,建议使用一个定义了完整的、合法的、不依赖运行时的默认值的父组件作为预览该组件的容器。

一次开发多端部署规则推荐规则集@cross-device-app-dev/recommended

@cross-device-app-dev/color-contrast文本和背景之间的颜色对比度至少为4.5:1以确保可读性。
@cross-device-app-dev/color-value颜色值应当使用“$r”从color.json中引用,以适配不同的系统颜色模式,禁止使用固定的值。
@cross-device-app-dev/font-size字体大小要求至少为8fp以便于阅读。
@cross-device-app-dev/font-size-unit字体大小单位建议使用fp,以适配系统字体设置。
@cross-device-app-dev/grid-columns-span不推荐开发者将栅格中所有的GridCol子组件只设置span属性,且值与父组件的columns属性相等。
@cross-device-app-dev/grid-span-value在栅格布局组件GridCol中,span和offset不建议使用小数。
@cross-device-app-dev/sidebar-navigation对于2in1和tablet设备,应将Tabs组件设置为侧边导航栏。
@cross-device-app-dev/size-unit组件通用属性width、height和size,应当使用vp作为单位,以适配不同设备屏幕宽度。
@cross-device-app-dev/touch-target-size组件通用属性responseRegion点击热区需满足最小尺寸要求。
@cross-device-app-dev/one-multi-breakpoint-check一多特性必须使用系统断点判断是否开启,不能通过设备类型、设备方向或是否可折叠等属性来判断。

ArkTS代码风格规则推荐规则集@hw-stylistic/recommended

@hw-stylistic/array-bracket-spacing强制数组“[”之后和“]”之前加空格。该规则仅检查.ets文件类型。
@hw-stylistic/brace-style强制大括号和语句位于同一行。该规则仅检查.ets文件类型。
@hw-stylistic/comma-spacing强制数组元素和函数中多个参数之间的逗号后面加空格,逗号前不加空格。该规则仅检查.ets文件类型。
@hw-stylistic/curly条件语句和循环语句的逻辑代码必须写在大括号中。该规则仅检查.ets文件类型。
@hw-stylistic/file-naming-convention强制代码文件和资源文件保持一致的命名风格。
@hw-stylistic/indent强制switch语句中的case和default缩进一层。该规则仅检查.ets文件类型。
@hw-stylistic/keyword-spacing在关键字前后强制加空格。该规则仅检查.ets文件类型。
@hw-stylistic/max-len强制代码行最大长度为120个字符。该规则仅检查.ets文件类型。
@hw-stylistic/no-multi-spaces不允许出现连续多个空格,除非是换行。该规则仅检查.ets文件类型。
@hw-stylistic/no-tabs禁止使用tab作为缩进,推荐使用空格。该规则仅检查.ets文件类型。
@hw-stylistic/object-property-newline强制对象属性换行。
@hw-stylistic/one-var-declaration-per-line变量声明时,要求一次仅声明一个变量。该规则仅检查.ets文件类型。
@hw-stylistic/operator-linebreak强制运算符位于代码行末。
@hw-stylistic/quotes强制字符串使用单引号。
@hw-stylistic/semi-spacing强制分号之前不加空格。
@hw-stylistic/space-before-blocks强制在“{”之前加空格。
@hw-stylistic/space-before-function-paren在函数名和“(”之间强制不加空格。该规则仅检查.ets文件类型。
@hw-stylistic/space-infix-ops强制运算符前后都加空格。