Tslint --fix не выполняет автофикс, но выводит проблемы lint как ошибки консоли
Я использую угловой набор для начинающих: https://github.com/AngularClass/angular-starter
и я пытаюсь заставить tslint автоматически исправить все проблемы с lint с помощью флага --fix.
Я запускаю скрипт:npm run tslint --fix src/**/*.ts
Это просто вывод, та же ошибка, о которой мне уже говорили в tslint, а не ее исправление:
консольный вывод:
ERROR: src/app/app-routing.module.ts[10, 5]: comment must start with a space
ERROR: src/app/app-routing.module.ts[2, 20]: Too many spaces before 'from'
Я что-то упускаю, что позволяет реализовать изменения?
Мои версии:
"tslint": "^5.6.0"
"codelyzer": "^3.1.2"
Вопрос: Как я могу заставить tslint реализовать автофикс для ошибок lint?
2 ответа
К сожалению, не все нарушения линтинга устраняются автоматически. Вы можете увидеть, какие правила являются автоматически исправляемыми здесь, ища Has Fixer
тег.
Я предполагаю, что "комментарий должен начинаться с пробела" регулируется comment-format
правило, которое не может быть исправлено автоматически.
Я не уверен, какое правило вызывает вашу вторую ошибку, но, скорее всего, оно также не может быть исправлено автоматически.
Вот фрагмент, который вы можете запустить tslint --fix
против проверки того, что некоторые нарушения исправлены, а другие нет.
//no var keyword (comment does not start with space)
var x: string = 'x';
console.log(x);
// array-type
let y: String[] = [];
console.log(y);
// ban-single-arg-parens
['1', '2'].filter((arg) => {
console.log(arg);
});
// semicolon
let z: string = ''
console.log(z);
// no unused variable
let a: string = '';
// trailing comma
let list = ['1', '2', ];
// missing trailing comma
let obj = [
1,
2
];
Правила, которые нужно включить при раскрашивании вышеуказанного файла:
"semicolon": [true, "always"],
"trailing-comma": [true, {"multiline": "always", "singleline": "never"}],
"array-type": [true, "array-generic"],
"arrow-parens": [true, "ban-single-arg-parens"],
Заманчиво думать, что все пробельные ошибки будут автоматически исправимы, и, возможно, так и должно быть. К сожалению, это не так.
Обновить библиотеку tslint
а также codelyzer
до последней.
и затем используйте эту команду:
tslint --fix src/**/*.ts -t verbose
без использования npm run
после завершения он покажет вам нерешаемые проблемы, поэтому вы должны исправить это вручную.
Вы также можете добавить его в scripts
в package.json
как это:
"lint-fix": "tslint --fix src/**/*.ts -t verbose"