文档管理中心
工具开发工具DevEco Studio(Windows/macOS版)编写与调试应用代码编辑代码检查Code Linter代码检查规则兼容性规则@compatibility@compatibility/api-compatibility-check

@compatibility/api-compatibility-check

从DevEco Studio 6.0.1 Beta1开始,Code Linter新增版本兼容性规则扫描。

工程代码中调用的API版本比工程配置中的compatibleSdkVersion版本高,可能会导致兼容性问题。建议添加代码报错措施,消除兼容性问题。

规则配置

收起
自动换行
深色代码主题
复制
  1. // code-linter.json5
  2. {
  3. "rules": {
  4. "@compatibility/api-compatibility-check": "warn"
  5. }
  6. }

选项

该规则无需配置选项。

正例

示例一:API调用前,增加SDK版本判断。

收起
自动换行
深色代码主题
复制
  1. import { dataUriUtils } from '@kit.AbilityKit';
  2. import { deviceInfo } from '@kit.BasicServicesKit';
  3. @Component
  4. struct Test {
  5. build() {
  6. Text('hello').onClick(() => {
  7. // 使用接口前增加SDK版本的判断,SDK版本计算方式具体请参考应用升级targetSDKVersion兼容低版本指导
  8. if (deviceInfo.distributionOSApiVersion >= 60000) {
  9. dataUriUtils.getId('');
  10. }
  11. // 使用接口前增加SDK版本的判断
  12. if (deviceInfo.sdkApiVersion >= 20) {
  13. dataUriUtils.getId('');
  14. }
  15. })
  16. }
  17. }

示例二:API调用前,增加判空。

收起
自动换行
深色代码主题
复制
  1. import { dataUriUtils } from '@kit.AbilityKit';
  2. @Component
  3. struct Test {
  4. build() {
  5. Text("hello").onClick(() => {
  6. // 判空
  7. if (dataUriUtils.getId !== undefined) {
  8. dataUriUtils.getId('');
  9. }
  10. })
  11. }
  12. }

示例三:API调用前,使用try-catch异常处理。

收起
自动换行
深色代码主题
复制
  1. import { dataUriUtils } from '@kit.AbilityKit'
  2. @Component
  3. struct Test {
  4. build() {
  5. Text('hello').onClick(() => {
  6. // 使用try-catch语法
  7. try {
  8. dataUriUtils.getId('');
  9. } catch (error) {
  10. // 异常处理
  11. }
  12. })
  13. }
  14. }

反例

收起
自动换行
深色代码主题
复制
  1. // 工程中compatibleSdkVersion配置为5.0.5(17)
  2. import { ScrollEffectType } from '@kit.UIDesignKit';
  3. @Component
  4. struct Test {
  5. build() {
  6. Text('hello').onClick(() => {
  7. // ScrollEffectType.COMMON_BLUR从5.1.0(18)开始支持,不可直接调用
  8. const value = ScrollEffectType.COMMON_BLUR
  9. console.info(value.toString())
  10. })
  11. }
  12. }

规则集

收起
自动换行
深色代码主题
复制
  1. plugin:@compatibility/all

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