padding-line-between-statements
Требуется или запрещается добавление пустых строк между операторами
Некоторые проблемы, обнаруженные этой правилами, автоматически исправляются с помощью --fix опции командной строки
Это правило было устаревшим в ESLint v8.53.0. Используйте соответствующее правило в соответствующее правило в @stylistic/eslint-plugin-js.
Это правило требует или запрещает пустые строки между заданными 2 типами операторов. Правильные пустые строки помогают разработчикам понять код.
Например, следующая конфигурация требует пустой строки между объявлением переменной и return оператором.
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "var", next: "return" }
]*/
function foo() {
var a = 1;
return a;
}
Подробное описание правила
Это правило ничего не делает, если нет предоставленных конфигураций.
Конфигурация — это объект, имеющий 3 свойства; blankLine, prev и next. Например, { blankLine: "always", prev: "var", next: "return" } означает «одна или несколько пустых строк требуются между объявлением переменной и return оператором». Вы можете указать любое количество конфигураций. Если пара операторов соответствует нескольким конфигурациям, будет использована последняя совпавшая конфигурация.
{
"padding-line-between-statements": [
"error",
{ "blankLine": LINEBREAK_TYPE, "prev": STATEMENT_TYPE, "next": STATEMENT_TYPE },
{ "blankLine": LINEBREAK_TYPE, "prev": STATEMENT_TYPE, "next": STATEMENT_TYPE },
{ "blankLine": LINEBREAK_TYPE, "prev": STATEMENT_TYPE, "next": STATEMENT_TYPE },
{ "blankLine": LINEBREAK_TYPE, "prev": STATEMENT_TYPE, "next": STATEMENT_TYPE },
...
]
}
-
LINEBREAK_TYPEможет быть одним из следующих.-
"any"просто игнорирует пару операторов. -
"never"запрещает пустые строки. -
"always"требует одну или несколько пустых строк. Примечание: строки, содержащие комментарии, не учитываются как пустые строки.
-
-
STATEMENT_TYPEможет быть одним из следующих или массивом следующих.-
"*"является универсальным. Это соответствует любому оператору. -
"block"соответствует одиночным блокам. -
"block-like"соответствует операторам-блокам. Это соответствует операторам, последний токен которых является закрывающей фигурной скобкой блоков; например,{ },if (a) { }, иwhile (a) { }. Также соответствует операторам выражений функции с немедленным вызовом. -
"break"соответствует операторамbreak. -
"case"соответствуетcaseв операторахswitch. -
"cjs-export"соответствует операторамexportCommonJS; например,module.exports = 0,module.exports.foo = 1, иexports.foo = 2. Это специальный случай присваивания. -
"cjs-import"соответствует операторамimportCommonJS; например,const foo = require("foo"). Это специальный случай объявления переменных. -
"class"соответствует объявлениямclass. -
"const"соответствует объявлениямconstпеременных, как однострочным, так и многострочным. -
"continue"соответствует операторамcontinue. -
"debugger"соответствует операторамdebugger. -
"default"соответствуетdefaultв операторахswitch. -
"directive"соответствует директивам-прологам. Это соответствует директивам; например,"use strict". -
"do"соответствует операторамdo-while. Это соответствует всем операторам, первый токен которых — ключевое словоdo. -
"empty"соответствует операторам-пустышкам. -
"export"соответствует объявлениямexport. -
"expression"соответствует операторам выражений. -
"for"соответствует семейству операторов циклов. Это соответствует всем операторам, первый токен которых — ключевое словоfor. -
"function"соответствует объявлениям функций. -
"if"соответствует операторамif. -
"iife"соответствует операторам выражений функции с немедленным вызовом. Это соответствует вызовам выражения функции, необязательно с префиксом унарного оператора. -
"import"соответствует объявлениямimport. -
"let"соответствует объявлениямletпеременных, как однострочным, так и многострочным. -
"multiline-block-like"соответствует операторам-блокам. Это то же, что и типblock-like, но только если блок многострочный. -
"multiline-const"соответствует многострочным объявлениямconstпеременных. -
"multiline-expression"соответствует операторам выражений. Это то же, что и типexpression, но только если оператор многострочный. -
"multiline-let"соответствует многострочным объявлениямletпеременных. -
"multiline-var"соответствует многострочным объявлениямvarпеременных. -
"return"соответствует операторамreturn. -
"singleline-const"соответствует однострочным объявлениямconstпеременных. -
"singleline-let"соответствует однострочным объявлениямletпеременных. -
"singleline-var"соответствует однострочным объявлениямvarпеременных. -
"switch"соответствует операторамswitch. -
"throw"соответствует операторамthrow. -
"try"соответствует операторамtry. -
"var"соответствует объявлениямvarпеременных, как однострочным, так и многострочным. -
"while"соответствует операторам циклаwhile. -
"with"соответствует операторамwith.
-
Примеры
Эта конфигурация потребовала бы пустые строки перед всеми операторами return, как правило newline-before-return.
Примеры неправильного кода для конфигурации [{ blankLine: "always", prev: "*", next: "return" }].
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "*", next: "return" }
]*/
function foo() {
bar();
}
Примеры правильного кода для конфигурации [{ blankLine: "always", prev: "*", next: "return" }].
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "*", next: "return" }
]*/
function foo1() {
bar();
return;
}
function foo2() {
return;
}
Эта конфигурация потребует пустых строк после каждой последовательности объявления переменных, как правило newline-after-var.
Примеры неправильного кода для конфигурации [{ blankLine: "always", prev: ["const", "let", "var"], next: "*"}, { blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]}].
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: ["const", "let", "var"], next: "*"},
{ blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]}
]*/
function foo1() {
var a = 0;
}
function foo2() {
let a = 0;
}
function foo3() {
const a = 0;
}
class C {
static {
let a = 0;
}
}
Примеры правильного кода для конфигурации [{ blankLine: "always", prev: ["const", "let", "var"], next: "*"}, { blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]}].
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: ["const", "let", "var"], next: "*"},
{ blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]}
]*/
function foo1() {
var a = 0;
var b = 0;
bar();
}
function foo2() {
let a = 0;
const b = 0;
bar();
}
function foo3() {
const a = 0;
const b = 0;
bar();
}
class C {
static {
let a = 0;
let b = 0;
bar();
}
}
Эта конфигурация потребует пустых строк после всех директив-прологов, как правило lines-around-directive.
Примеры неправильного кода для конфигурации [{ blankLine: "always", prev: "directive", next: "*" }, { blankLine: "any", prev: "directive", next: "directive" }].
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "directive", next: "*" },
{ blankLine: "any", prev: "directive", next: "directive" }
]*/
"use strict";
Примеры правильного кода для конфигурации [{ blankLine: "always", prev: "directive", next: "*" }, { blankLine: "any", prev: "directive", next: "directive" }].
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "directive", next: "*" },
{ blankLine: "any", prev: "directive", next: "directive" }
]*/
"use strict";
"use asm";
foo();
Эта конфигурация потребовала бы пустых строк между фразами в операторах switch.
Примеры неправильного кода для конфигурации [{ blankLine: "always", prev: ["case", "default"], next: "*" }].
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: ["case", "default"], next: "*" }
]*/
switch (foo) {
case 1:
bar();
break;
}
Примеры правильного кода для конфигурации [{ blankLine: "always", prev: ["case", "default"], next: "*" }].
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: ["case", "default"], next: "*" }
]*/
switch (foo) {
case 1:
bar();
break;
case 2:
case 3:
baz();
break;
default:
quux();
}
Когда не следует использовать
Если вы не хотите получать предупреждения о разрывах строк, то безопасно отключить эту опцию.
Совместимость
- JSCS: requirePaddingNewLineAfterVariableDeclaration
- JSCS: requirePaddingNewLinesAfterBlocks
- JSCS: disallowPaddingNewLinesAfterBlocks
- JSCS: requirePaddingNewLinesAfterUseStrict
- JSCS: disallowPaddingNewLinesAfterUseStrict
- JSCS: requirePaddingNewLinesBeforeExport
- JSCS: disallowPaddingNewLinesBeforeExport
- JSCS: requirePaddingNewlinesBeforeKeywords
- JSCS: disallowPaddingNewlinesBeforeKeywords
Версия
Эта опция была добавлена в ESLint v4.0.0-beta.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/padding-line-between-statements