鴻蒙高質量程式碼靜態檢測200條一

龙儿筝發表於2024-11-12
  1. @typescript-eslint/adjacent-overload-signatures
  • 建議函式過載的簽名保持連續
  1. @typescript-eslint/await-thenable
  • 不允許對不是“Thenable”物件的值使用await關鍵字,相反對“Thenable”物件必須使用await,例如對Promise物件。
  1. @typescript-eslint/array-type
  • 定義陣列時,使用統一的樣式,如都使用T[]或都使用Array
"@typescript-eslint/array-type": [
  "error",
  {
    //      array | array-simple | generic
    "default": "array"
  }
]
  • default的值設定為array時,統一使用T[];設定generic時,統一使用Array,設定為array-simple時,簡單型別使用T[],其它型別使用Array
  1. @typescript-eslint/ban-ts-comment
  • 不允許使用@ts-<directional>格式的註釋,或要求在註釋後進行補充說明
  1. @typescript-eslint/ban-tslint-comment
  • 不允許使用//tslint:<rule-flag>格式的註釋
  1. @typescript-eslint/ban-types
  • 不允許使用某些型別,例如型別小寫保持一致,使用string,boolean,number等等,而不是String,Boolean,Number。
  1. @typescript-eslint/brace-style
  • 要求程式碼塊的左大括號與其對應的語句或宣告位於同一行。
  1. @typescript-eslint/class-literal-property-style
  • 建議類中的字面量屬性對外暴露時,保持一致的風格
  1. @typescript-eslint/comma-dangle
  • 允許或禁止使用尾隨逗號,類的最後一個屬性或者陣列最後一個元素禁止尾隨逗號
"@typescript-eslint/comma-dangle": [
  "error",
  {
    //      never | always
    "arrays": "never",
    "objects": "never",
    "imports": "never",
    "exports": "never",
    "functions": "never"
  }
]
  • 共有陣列arrays,物件objects,匯入imports,匯出exports和函式functions五各型別支援配置,值設定為never則是禁止尾隨逗號,設定為always則是允許尾隨逗號。
  1. @typescript-eslint/comma-spacing
  • 強制逗號前後的空格風格保持一致,例如強制要求逗號前不加空格,逗號後必須新增空格
"@typescript-eslint/comma-spacing": [
  "error",
  {
    "before": false,
    "after": true
  }
]
  1. @typescript-eslint/consistent-type-assertions
  • 強制使用一致的型別斷言
  1. @typescript-eslint/default-param-last
  • 強制預設引數位於引數列表的最後一個
  1. @typescript-eslint/explicit-member-accessibility
  • 在類屬性和方法上需要顯式定義訪問修飾符
  1. @typescript-eslint/func-call-spacing
  • 禁止或者要求函式名與函式名後面的括號之間加空格
"@typescript-eslint/func-call-spacing": [
  "error",
  "never"
]
  • 設定為never時,函式名後面禁止新增空格,設定為always時,函式名後面允許新增空格
  1. @typescript-eslint/init-declarations
  • 禁止或者要求在變數宣告中進行初始化
"@typescript-eslint/init-declarations": [
  "error",
  "always"
]
  • 設定為always時,宣告變數必須初始化,設定為never時,宣告變數可以不初始化。
  1. @typescript-eslint/keyword-spacing
  • 強制在關鍵字之前和關鍵字之後保持一致的空格風格,例如在關鍵字前後都新增空格
"@typescript-eslint/keyword-spacing": [
  "error",
  {
    "before": true,
    "after": true
  }
]
  1. @typescript-eslint/lines-between-class-members
  • 禁止或者要求類成員之間有空行分隔,always為允許有空行,never為不允許有空行,如下設定空行後不加空行,屬性和方法之前新增空行。
"@typescript-eslint/lines-between-class-members": [
  "error",
  {
    enforce: [
      {
        blankLine: "never",
        prev: "field",
        next: "method"
      }
    ]
  }
]
  1. @typescript-eslint/member-delimiter-style
  • 要求介面和型別別名中的成員之間使用特定的分隔符,支援定義的分隔符有三種:分號、逗號、無分隔符
  1. @typescript-eslint/member-ordering
  • 要求類、介面和型別字面量中成員的排序方式保持一致的風格
  1. @typescript-eslint/naming-convention
  • 強制識別符號使用一致的命名風格。例如類名使用大駝峰,函式使用小駝峰。
  1. @typescript-eslint/no-array-constructor
  • 不允許使用“Array”建構函式。
  1. @typescript-eslint/no-base-to-string
  • 要求當一個物件在字串化時提供了有用的資訊,才能呼叫“toString()”方法
  1. @typescript-eslint/no-confusing-non-null-assertion
  • 不允許在可能產生混淆的位置使用非空斷言
  1. @typescript-eslint/no-confusing-void-expression
  • 要求void型別的表示式出現在合適的位置
  1. @typescript-eslint/no-dupe-class-members
  • 不允許重複的類成員,即已經宣告的成員屬性,不允許重複再宣告一次。
  1. @typescript-eslint/no-duplicate-imports
  • 禁止重複的模組匯入,即已經匯入的模組,不允許再再次匯入。
  1. @typescript-eslint/no-empty-function
  • 不允許使用空函式,支援的白名單配置包括函式,箭頭函式,方法,構造方法等等,配置如下
"@typescript-eslint/no-empty-function": [
  "error",
  {
    "allow": [
      "functions",
      "arrowFunctions",
      "generatorFunctions",
      "methods",
      "generatorMethods",
      "getters",
      "setters",
      "constructors",
      "asyncFunctions",
      "asyncMethods"
    ]
  }
]
  1. @typescript-eslint/no-empty-interface
  • 不允許宣告空介面
  1. @typescript-eslint/no-extraneous-class
  • 不允許將類用作名稱空間
  1. @typescript-eslint/no-extra-non-null-assertion
  • 不允許多餘的非空斷言
  1. @typescript-eslint/no-extra-parens
  • 禁止使用不必要的括號
  1. @typescript-eslint/no-extra-semi
  • 禁止使用不必要的分號
  1. @typescript-eslint/no-floating-promises
  • 要求正確處理Promise表示式,例如Promise一定要處理異常情況
  1. @typescript-eslint/no-implied-eval
  • 禁止使用類似“eval()”的方法
  1. @typescript-eslint/no-inferrable-types
  • 不允許對初始化為數字、字串或布林值的變數或引數進行顯式型別宣告
  1. @typescript-eslint/no-invalid-this
  • 禁止在this的值為undefined的上下文中使用this
  1. @typescript-eslint/no-invalid-void-type
  • 禁止在返回型別或者泛型型別之外使用void
  1. @typescript-eslint/no-loss-of-precision
  • 禁止使用失去精度的字面數字
  1. @typescript-eslint/no-magic-numbers
  • 禁止使用魔法數字。但有些情況下我們又需要直接使用數字,例如定義列舉時,在陣列中根據索引取資料時,或者直接定義某些值不是魔法數字,示例如下
"@typescript-eslint/no-magic-numbers": [
  "off",
  {
    "ignoreEnums": true,
    "ignoreArrayIndexes": true,
    "ignoreNumericLiteralTypes": true,
    "ignore": [
      -1,
      0,
      1
    ]
  }
]
  1. @typescript-eslint/no-misused-new
  • 要求正確地定義“new”和“constructor”
  1. @typescript-eslint/no-misused-promises
  • 禁止在不正確的位置使用Promise
  1. @typescript-eslint/no-non-null-asserted-optional-chain
  • 禁止在可選連結串列達式之後使用非空斷言
  1. @typescript-eslint/no-non-null-assertion
  • 禁止以感嘆號作為字尾的方式使用非空斷言
  1. @typescript-eslint/no-redeclare
  • 禁止變數重複宣告,即前面宣告過的變數,不允許再次宣告。
  1. @typescript-eslint/no-require-imports
  • 禁止使用“require()”語法匯入依賴
  1. @typescript-eslint/no-restricted-syntax
  • 不允許使用指定的(即使用者在規則中定義的)語法。例如不允許直接使用console.log列印日誌,而是使用我們封裝好的LogUtil列印日誌
"@typescript-eslint/no-restricted-syntax": [
  "error",
  {
    "selector": "CallExpression[callee.name='console.log']",
    "message": "不要直接使用console列印日誌,請使用LogUtil"
  }
]
  1. @typescript-eslint/no-shadow
  • 禁止宣告與外部作用域變數同名的變數
  1. @typescript-eslint/no-throw-literal
  • 禁止將字面量作為異常丟擲
  1. @typescript-eslint/no-unnecessary-boolean-literal-compare"
  • 禁止將布林值和布林字面量直接進行比較
  1. @typescript-eslint/no-unnecessary-condition
  • 不允許使用型別始終為真或始終為假的表示式作為判斷條件
  1. @typescript-eslint/no-unnecessary-qualifier
  • 禁止不必要的名稱空間限定符

相關文章