Tslint: 有効なルールが指定されていません

作成日 2018年02月26日  ·  14コメント  ·  ソース: palantir/tslint

バグレポート

  • __TSLintバージョン__:5.9.1
  • __TypeScriptバージョン__:2.7.2
  • __TSLintの実行__:MacではVScodeですが、CLIでも失敗します

tslint.json構成の場合:

{
    "defaultSeverity": "none",
    "extends": [
        "tslint:recommended"
    ],
    "jsRules": {},
    "rules": {
        "no-internal-module": false,
        "typedef-whitespace": false,
        "variable-name": [
            true,
            "check-format",
            "allow-leading-underscore"
        ],
        "no-console": false,
        "no-reference": false,
        "no-namespace": false,
        "max-line-length": [true, 140],
        "no-bitwise": false,
        "align": true,
        "arrow-return-shorthand": true,
        "no-magic-numbers": true
    },
    "rulesDirectory": []
}

実際の動作

先週、私のtslintは上記の構成で正常に機能していました。 今日、VSCodeを更新しましたが、TSLintは、互換性のあるバージョンのTypescriptがインストールされていないと文句を言い始めました。 これを修正するために、TSLintバージョンエラーを修正するnpm install -g typescriptを実行しました。

VSCodeのTSLint拡張機能は、警告No valid rules have been specifiedを出し、何もリントしません。

CLIからtslint --project buildを実行しようとしましたが、同じエラーが発生します。

tslintがグローバル構成ファイルを探しているのではないかと思いましたが、ローカルtslint.jsonに構文エラーを追加すると、別のエラーUnexpected token fが発生するため、ローカル構成を調べているようです。しかし、それからどういうわけか失敗します

予想される行動

TSLintは、以前と同じようにプロジェクトを実行する必要があります

最も参考になるコメント

私は可能な解決策を見つけました:
tsconfig.json "allowJs": trueの設定を使用している場合、 tslint.json rulesjsRulesを検索しようとします。

jsRulesが空の場合、文句を言います。 IMOメッセージは、実際に解析しているルールを示す必要があります。

jsRules内にルールを追加すると、メッセージが消えました。

"jsRules": {
    "no-empty": true
}

全てのコメント14件

同じ問題があります〜 5.8.0から5.9.1になります〜。

tslint --config tslint.json --project tsconfig.jsonを実行すると、同じNo valid rules have been specifiedエラーが発生します。

tslint.json

{
    "extends": ["tslint-config-prettier", "tslint-react"],
    "rules": {
        "ban": false,
        "class-name": true,
        "comment-format": [
            true,
            "check-space"
        ],
        "curly": true,
        "eofline": false,
        "forin": true,
        "interface-name": [true, "never-prefix"],
        "jsdoc-format": true,
        "jsx-no-lambda": false,
        "jsx-no-multiline-js": false,
        "label-position": true,
        "no-any": false,
        "no-arg": true,
        "no-bitwise": true,
        "no-console": [
            false,
            "log",
            "error",
            "debug",
            "info",
            "time",
            "timeEnd",
            "trace"
        ],
        "no-construct": true,
        "no-debugger": true,
        "no-duplicate-variable": true,
        "no-empty": true,
        "no-eval": true,
        "no-shadowed-variable": true,
        "no-string-literal": true,
        "no-switch-case-fall-through": true,
        "no-trailing-whitespace": false,
        "no-unused-variable": true,
        "no-unused-expression": true,
        "no-use-before-declare": true,
        "radix": true,
        "switch-default": true,

        "trailing-comma": [false],

        "triple-equals": [ true, "allow-null-check" ],
        "typedef": [
            true,
            "parameter",
            "property-declaration"
        ],
        "variable-name": [true, "ban-keywords", "check-format", "allow-leading-underscore", "allow-pascal-case"]
    }
}

私は可能な解決策を見つけました:
tsconfig.json "allowJs": trueの設定を使用している場合、 tslint.json rulesjsRulesを検索しようとします。

jsRulesが空の場合、文句を言います。 IMOメッセージは、実際に解析しているルールを示す必要があります。

jsRules内にルールを追加すると、メッセージが消えました。

"jsRules": {
    "no-empty": true
}

追加してみました:

"allowJs": true,
"jsRules": {
    "no-empty": true
}

私のtslint.jsonに、しかし残念ながらメッセージは残り、それはまだ何も糸くずが出ていないようです

あなたはあなたの出力で何を得ますか? エラーがない場合は、正常に機能しているはずです。

同じ出力/警告が表示されますが、変更しても何も起こりません😢

@nattyxd tsconfigまたはtslint.jsonjsRulesを追加しましたか? allowJsはtsconfigにあります。 allowJsを使用すると、 tslint.jsonjsRulesを期待します(したがってバグ)。 回避策は、 "jsRules": { "no-empty": true }tslint.jsonに追加して、ルールがあり、文句を言わないようにすることです。 これは私が思うに何の影響も与えないはずです。 それはほんの少しの煩わしさです。

@ajcrites絶対に正しい。 この問題は解決されるべきだと思います。

解決されたようですので、この問題を解決します。

数ヶ月前にこの問題が発生し、このスレッドで説明されている解決策によって解決され、しばらくの間はすべて問題ありませんでしたが、最近、 "no-empty": trueがありますが、この問題が再び発生し始めました。 頭を叩いて、何が問題なのか理解できません。

tslint.jsonからすべてを削除し、以下を追加して、機能しているようです

{{
"extends": "@ microsoft / sp-tslint-rules / base-tslint.json"、
「ルール」:{
「クラス名」:false、
"export-name":false、
「forin」:false、
「ラベル位置」:false、
「メンバーアクセス」:true、
"no-arg":false、
「コンソールなし」:false、
「構築なし」:false、
「重複変数なし」:true、
「評価なし」:false、
「関数式なし」:true、
「no-internal-module」:true、
「影のない変数」:true、
「no-switch-case-fall-through」:true、
「不要なセミコロンなし」:true、
「未使用の式」:true、
"no-use-before-declare":true、
「ステートメントなし」:true、
「セミコロン」:true、
「trailing-comma」:false、
"typedef":false、
"typedef-空白":false、
"use-named-parameter":true、
「変数名」:false、
「空白」:false
}
}

TSLint linting JSファイルが必要ない場合(およびtslint> = 5.8の場合)、 tslint.jsonに以下を追加するだけです。

"linterOptions": {
    "exclude": [
        "**/*.js"
    ]
}

tslint --config tslint.jsを追加するとうまくいきます。

tslint -c .eslintrc.yml -p tsconfig.jsonのように構成ファイルを指定する必要があり、jsRulesやそれらすべてのように上から必要なものは何もありません。

🤖ビープブープ! 👉TSLintは非推奨です👈そしてtypescript-eslintに切り替える必要があります! 🤖

🔒この問題は、これ以上の不必要な議論を防ぐためにロックされています。 ありがとう! 👋

このページは役に立ちましたか?
0 / 5 - 0 評価