日々精進

新しく学んだことを書き留めていきます

tslintの各オプションの意味一覧

項目が多かったので疲れた。。どの項目を有効にしたのかも記載した。 以下の項目はよく分かりませんでした。。

  • label-position
  • label-undefined
  • no-any

Lintオプションの意味

  • align 縦方向の揃え方
    • "parameters" 関数定義の仮引数の開始位置が揃っていること → 無効

      ```
      // これはNG
        export function createPostSettings(url: string, urlParameters: any, query: any,
          dataParams: any, options: JQueryAjaxSettings): JQueryAjaxSettings {
      ```
      
      ```
      // これはOK
      export function createPostSettings(url:string,
                                         urlParameters:any,
                                         query:any,
                                         dataParams:any,
                                         options:JQueryAjaxSettings):JQueryAjaxSettings {
      ```
      
    • "arguments" 関数呼び出しの引数を複数行にした場合引数の開始位置が揃っていること → 無効

      ```
      // これはNG
      var ajaxCallTimeout = setTimeout(() => {
           ...
      }, settings.API_TIMEOUT);
      ```
      
      ```
      // これはOK
      var ajaxCallTimeout = setTimeout(
         () => {
           ...
      }, settings.API_TIMEOUT);
      ```
      
    • "statements" 文の開始位置がブロック内で揃っていること → 有効
  • ban 指定した名前のオブジェクトの指定したメソッドが呼ばれていないこと → 無効

    // 設定方法の例 "ban": [true, ["_", "extend"], ["_", "isNull"], ["_", "isDefined"] ],

  • class-name クラス名とインターフェース名にパスカルケースを使用していること → 有効
  • comment-format 1行コメントのフォーマット
    • "check-space" コメントの//の後にスペースか/が来ていること → 有効
    • "check-lowercase" コメントの文章の最初の一文字が小文字であること → 無効
    • "check-uppercase" コメントの文章の最初の一文字が大文字であること → 無効
  • curly if/for/do/whileを波括弧で囲んでいること → 有効
  • eofline ファイルの最後に空行があること → 無効
  • forin for-inループ内では、ifステートメントを使用していること(prototype chainから来た不要なプロパティを除外するため) → 有効
  • indent インデント
    • "tabs" すべてタブでインデントされていること → 無効
    • "spaces" すべてスペースでインデントされていること → 有効
  • interface-name インターフェース名がIで始まること → 無効
  • jsdoc-format jsdocのフォーマットが以下のフォーマットになっていること → 有効
    各行に「*」があり、その位置が揃っていること
    「*」の後にはスペースか改行が来ること(先頭行と最後の行は除く)
    「*」より左にスペース以外の文字が無いこと 「/** 」で始まること
  • label-position  → 有効
  • label-undefined  → 有効
  • max-file-line-count 1ファイル当たりの行数が最大値を超えていないこと → 有効。最大300行
  • member-access public, protected, privateのいずれかがメンバに付いていること → 有効
  • member-ordering クラスメンバの順序
    • public-before-private public→private の順で並んでいること → 有効
    • static-before-instance static→staticでない の順で並んでいること → 有効
    • variables-before-functions メンバ変数→メンバ関数 の順で並んでいること → 有効
  • no-any  → 有効
  • no-arg arguments.calleeを使用していないこと → 有効
  • no-bitwise ビット演算子を使用していないこと → 有効
  • no-conditional-assignment do-while, for, if, whileの条件部で代入していないこと → 有効
  • no-console consoleの指定したメソッドを呼んでいないこと。banのconsole限定版 → 無効

    // 設定方法の例 "no-console": [ true, "debug", "info", "time", "timeEnd", "trace" ],

  • no-consecutive-blank-lines 空行が2行以上続かないこと → 有効
  • no-construct String, Number, Booleanのコンストラクタを呼んでいないこと → 有効
  • no-constructor-vars コンストラクタの仮引数にpublic, privateが付いていないこと → 有効
  • no-debugger debuggerを呼んでいないこと → 有効
  • no-duplicate-key オブジェクトリテラルに同じKeyが複数ないこと → 有効
  • no-duplicate-variable 同じスコープ内で同じ名前の変数を複数宣言しないこと → 有効
  • no-shadowed-variable shadowed variable(包含関係にある二つのスコープで同じ名前の変数を宣言すること)を使用していないこと → 有効

    // shadowed variableの例 var v = 1; for (int i = 0;i < 10;i++) { var v = 10; // shadowed variable }

  • no-empty 空のブロックが無いこと → 有効
  • no-eval eval関数を呼んでいないこと → 有効
  • no-internal-module 内部moduleを使わず、namespaceを使用していること → 有効
  • no-require-imports require関数を使わずにimportしていること(推奨されるimportは恐らく ここで紹介されているやり方。) → 無効

    // 推奨されるimportの例 /// <reference path="moduleA.ts"/> import clsA = modA.clsA;

  • no-string-literal obj['key']のように文字列を使ってプロパティにアクセスしないこと → 有効
  • no-switch-case-fall-through switch文でfall-throughしていないこと → 有効
  • no-trailing-comma オブジェクトリテラルの最後のプロパティにカンマを付けないこと → 有効

    // これはNG contract: { no: "no", name: "name", // このカンマがtrailing-comma },

  • no-trailing-whitespace 行末に不要なスペースが無いこと → 有効
  • no-unreachable break, catch, throw, returnの後に到達出来ないコードが無いこと → 有効
  • no-unused-expression 代入も関数呼び出しもされていない式が無いこと → 有効

    // これはNG constructor(params?: Params) { super(params); params; // 代入も関数呼び出しもされていない式 }

  • no-unused-variable 使われていないimportしたモジュール, 変数, 関数 クラスのプライベートメンバが無いこと → 有効
    • "check-parameters" 使われていない関数やコンストラクタの引数が無いこと。 → 無効
      check-parametersは実験的なもので誤動作する場合があるので注意。
  • no-use-before-declare 変数を宣言前に使用しないこと → 有効
  • no-var-keyword varを使わないこと。代わりにletまたはconstを使用すること → 無効
  • no-var-requires require関数の返値はimportで受け、varで受けないこと → 有効

    // これはNG var module = require("module")

  • one-line 特定の予約語が同じ行に並んでいること → 有効
    • "check-catch" tryの閉じ括弧と同じ行にcatchがあること → 有効
    • "check-else" ifの閉じ括弧と同じ行にelseがあること → 有効
    • "check-open-brace" ifなど波括弧が続く予約語は、予約語と波括弧が同じ行にあること → 有効
    • "check-whitespace" 特定の予約語の前にスペースがあること → 有効
  • quotemark 文字列リテラルを定義するときにシングル・ダブルクォートのどちらかのみ使用していること。どちらに統一するかはオプションで指定する。 → 有効
    • "single" シングルクォートのみ使用していること → 無効
    • "double" ダブルクォートのみ使用していること → 有効
  • radix parseIntの引数に基数を渡していること → 有効
  • semicolon すべての文末にセミコロンがあること → 有効
  • switch-default switch文にdefaultcaseがあること → 有効
  • triple-equals ==,!=は使用せず===,!==を使用していること → 有効
  • typedef 型が定義されていること。オプションは以下。 → 有効
    • "call-signature" 返値の型が指定されていること(voidでも省略しないこと) → 無効
    • "parameter" 関数定義の仮引数に型が指定されていること → 有効
    • "property-declaration" interfaceのプロパティに返値の型が指定されていること → 有効
    • "variable-declaration" 変数に型が指定されていること → 有効
    • "member-variable-declaration" クラスのメンバ変数の型が指定されていること → 有効
  • typedef-whitespace 型定義のスペース。チェックの内容は以下のオプションにspaceまたはnonspaceを指定することで変化する。それぞれ各場所で型を指定する時の:の前にスペースがある、または無いことをチェックする → 有効
    • "call-signature" 関数の返値の型の前の:の前にスペースがある、または無いこと → nonspaceを指定
    • "index-signature" インデックスシグニチャの型の前の:の前にスペースがある、または無いこと → nonspaceを指定

      // インデックスシグニチャの例。index:numberの:の前をチェックする var v : { [index:number] :number; } = {};

    • "parameter" 関数の仮引数の型の前の:の前にスペースがある、または無いこと → nonspaceを指定
    • "property-declaration" クラスのプロパティの型の前の:の前にスペースがある、または無いこと → nonspaceを指定
    • "variable-declaration" 変数の型の前の:の前にスペースがある、または無いこと → nonspaceを指定
  • use-strict ES5のstrict modeを使用していること。strict modeについて
    • check-module すべてのトップレベルmoduleがstrict modeを使用していること。トップレベルとはグローバルスコープと同義。 → 有効
    • check-function すべてのトップレベル関数がstrict modeを使用していること → 有効
  • variable-name シンボルがキャメルケースまたはアッパースネークケースであること → 有効
    • "allow-leading-underscore" _で始まる変数名を許可するオプション → 無効
  • whitespace 指定した位置にスペースがあること。以下のオプションで位置を指定する。 → 有効
    • "check-branch" if,else,for,whileの後にスペースがあること → 有効
    • "check-decl" 変数宣言の行の=の前後にスペースがあること → 有効
    • "check-operator" 演算子の前後にスペースがあること → 有効
    • "check-module" import,export文にスペースがあること → 有効
    • "check-separator" ,,;の後にスペースがあること → 有効
    • "check-type" 変数の型指定の前にスペースがあること → 有効
    • "check-typecast" 型キャストの型とキャストされる変数の間にスペースがあること → 有効

コード内でLintを無効/有効にする

  • /* tslint:disable */ これ以降のコードですべてのLintルールを無効にする
  • /* tslint:enable */ これ以降のコードですべてのLintルールを有効にする
  • /* tslint:disable:rule1 rule2 rule3... */ これ以降のコードで指定したLintルールを無効にする
  • /* tslint:enable:rule1 rule2 rule3... */ これ以降のコードで指定したLintルールを有効にする