@dazn/eslint-plugin-kopytko v2.1.0
Kopytko ESLint plugin
An ESLint plugin with a set of rules
Installation
- Install
eslintpeer dependency:
npm i eslint --save-dev- Install
eslint-plugin-kopytko:
npm i @dazn/eslint-plugin-kopytko --save-devConfiguration
In .eslintrc:
{
"extends": "plugin:@dazn/kopytko/recommended",
"plugins": ["@dazn/kopytko"]
}Rules
@dazn/kopytko/dependencies-order
A rule to use with Kopytko Packager 's importing mechanism and Kopytko Unit Testing Framework 's mocking mechanism.
Enforces a proper alphabetical and path-specific order of @import and @mock annotations:
1. imports or mocks from external packages have to be before local ones
2. @mock annotations have to be after all @import annotations
3. alphabetical order of external packages names
4. alphabetical order of paths
5. nested paths have to be declared after their root path
External packages before local
Example of incorrect code:
' @import /components/main-function.brs
' @import /components/nested/another-function.brs
' @import /components/nested/cool-function.brs
' @import /components/nested/some-function.brs from package-name
' @mock /components/mocked-function.brs
' @mock /components/some-mocked-function.brs from package-nameExample of correct code:
' @import /components/nested/some-function.brs from package-name
' @mock /components/some-mocked-function.brs from package-name
' @import /components/main-function.brs
' @import /components/nested/another-function.brs
' @import /components/nested/cool-function.brs
' @mock /components/mocked-function.brsImports before mocks
Example of incorrect code:
' @mock /components/mocked-function.brs
' @import /components/main-function.brs
' @import /components/nested/another-function.brs
' @import /components/nested/cool-function.brsExample of correct code:
' @import /components/main-function.brs
' @import /components/nested/another-function.brs
' @import /components/nested/cool-function.brs
' @mock /components/mocked-function.brsAlphabetical order of external packages names
Example of incorrect code:
' @import /components/a-function.brs from package-name
' @import /components/some-function.brs from another-package-name
' @mock /components/another-mocked-function.brs from package-name
' @mock /components/some-mocked-function.brs from another-package-name
' @import /components/main-function.brs
' @mock /components/mocked-function.brsExample of correct code:
' @import /components/some-function.brs from another-package-name
' @import /components/a-function.brs from package-name
' @mock /components/some-mocked-function.brs from another-package-name
' @mock /components/another-mocked-function.brs from package-name
' @import /components/main-function.brs
' @mock /components/mocked-function.brsAlphabetical order of paths
Example of incorrect code:
' @import /components/nested/another-function.brs
' @import /components/main-function.brs
' @import /components/nested/cool-function.brs
' @mock /components/some-mocked-function.brs
' @mock /components/mocked-function.brsExample of correct code:
' @import /components/main-function.brs
' @import /components/nested/another-function.brs
' @import /components/nested/cool-function.brs
' @mock /components/mocked-function.brs
' @mock /components/some-mocked-function.brs@dazn/kopytko/function-no-return
Check if function with defined return type has return statement.
Examples of incorrect code for this rule:
function calc() as Integer
result = 1 + 2
end functionExamples of correct code for this rule:
function calc() as Integer
result = 1 + 2
return result
end function@dazn/kopytko/indent
Enforces consistent indentation of block, array and object expressions, and function declarations
Examples of incorrect code for this rule, set to 2 characters:
sub test()
example = [
1,
2,
]
if (1 = 1)
superFunction({
a: "a",
b: "b",
c: "c",
})
end if
end sub
sub another()
superFunction({})
end subExamples of correct code for this rule, set to 2 characters:
sub test()
example = [
1,
2,
]
if (1 = 1)
superFunction({
a: "a",
b: "b",
c: "c",
})
end if
end sub
sub another()
superFunction({})
end sub@dazn/kopytko/missing-trailing-comma
Enforces a trailing comma after every property of multiline associative array
The --fix option on the command line can automatically fix some of the problems reported by this rule.
Examples of incorrect code for this rule:
test = {
a: "a",
b: "b"
}Examples of correct code for this rule:
test = {
a: "a",
b: "b",
}@dazn/kopytko/no-uninitialized-variables
Check that all variables are declared.
Examples of incorrect code for this rule:
sub a()
print(foo)
end subExamples of correct code for this rule:
sub a()
foo = "bar"
print(foo)
end sub@dazn/kopytko/sub-to-function
Check that sub doesn't have a return type.
Examples of incorrect code for this rule:
sub a() as Dynamic
end subExamples of correct code for this rule:
sub a()
print("foo")
end sub@dazn/kopytko/no-print
Disallows the use of print.
@dazn/kopytko/no-stop
Disallows the use of stop.