Итак, я пытался заставить работать правила костюма TSLint, но независимо от того, что я делаю, я не могу заставить его работать.
Я написал это пользовательское правило, скомпилировал егои поместите его в соответствующую папку:
//filename is interfacePascalCaseAndPrefixRule.ts
import * as Lint from "tslint";
import * as ts from "typescript";
export class Rule extends Lint.Rules.AbstractRule {
static FAILURE_STRING =
"Interfaces have to be Pascal cased and prefixed with an I (first two letters are capitalized).";
public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] {
return this.applyWithWalker(new Walk(sourceFile, this.getOptions()));
}
}
class Walk extends Lint.RuleWalker {
protected visitInterfaceDeclaration(node: ts.InterfaceDeclaration) {
this.addFailureAtNode(node, Rule.FAILURE_STRING);
super.visitInterfaceDeclaration(node);
}
}
Насколько я понимаю, это должно вызывать ошибку для каждого объявления интерфейса, которое он находит.(Не обращайте внимания на тот факт, что это бессмысленно, а имя файла не соответствует предполагаемой функции, это только для целей тестирования.)
Я поместил получившийся файл interfacePascalCaseAndPrefixRule.ts в папку rules / -проект TypeScript.tslint.json
выглядит так:
{
"defaultSeverity": "error",
"rulesDirectory": [
"rules/"
],
"rules": {
"interface-pascal-case-and-prefix": true, // <-- This is the costum rule that doesn't do shit
"class-name": true, //Enforces pascal case for classes eg. "MyClass"
"indent": [
true,
"spaces",
4
], //4 spaces as indents (is probably broken)
"align": [
true,
"statements",
"members"
], //aligns things. (might be broken as well)
"encoding": true //encoding is UTF-8
}
}
tsconfig.json
выглядит следующим образом:
{
"compileOnSave": true,
"compilerOptions": {
"outDir": "dist",
"module": "commonjs",
"target": "es6",
"sourceMap": true,
"strictNullChecks": true
},
"include": ["src/**/*"]
}
И когда я запускаю tslint, буквально ничего не происходит (даже если это определенно должно вызывать некоторые ошибки).Вывод консоли выглядит следующим образом:
:~/Desktop/bubblesbot$ tslint -p .
:~/Desktop/bubblesbot$
Кажется, что TSLint находится в рабочих условиях, поскольку он вызывает кучу ошибок, когда я добавляю "extends": "tslint:recommended"
к своему tslint.json
.
Реализацияпоскольку правило кажется также найденным, так как оно вызывает ошибку, когда я намеренно ошибаюсь в нем в файле tslint.json
.
Любая идея, почему это ведет себя так, как это происходит?Любая помощь будет принята с благодарностью.