- Improved
peerDependencies
range.
template-cyclomatic-complexity
which limits the estimated Cyclomatic complexity in your templates. Credits to wKoza.template-conditional-complexity
which limits the complexity of boolean expressions inside of your templates. Credits to wKoza.
- Support for Angular version 6 #524 50fa2d6
- Cyclomatic complexity rule
template-cyclomatic-complexity
#514 3221330 - Limiting template condition complexity (rule
template-conditional-complexity
) #508 bb86295 - Complete Rules Status section in README and complete Rules Page #501 1fe9d22
- "extends": ["codelyzer"] is broken #505 7b76dfa
- Message for 'use-host-property-decorator' includes invalid link to Angular style docs #510 5fc77c9
- Feature request: no output named after a standard DOM event #473 ae3f07b
- Support for Angular Compiler 5.2 #496 6a6b3de
- i18n check-text edge cases #442 4c1c8d4
- Codelyzer hanging for "styles" attribute in Angular component #446 a31c6d2 and 9c90ac3
- no-output-on-prefix incorrectly throws error if output property name starts with "one" #480 9b844cc
Thanks to @gbilodeau for NoOutputNamedAfterStandardEventRule
and wKoza for the code reviews!
- Two issues in
angular-whitespace
related tocheck-semicolon
andcheck-interpolation
#469 2ef7438 - Check multiple semicolons inside the directive expressions #472 e6036d2
Thanks to @sagittarius-rev for the bug fixes!
- Fix
noOutputOnPrefixRule
and rename it tono-output-on-prefix
. You can now enable it with:
"no-output-on-prefix": true
- Fix broken tests for
noOutputOnPrefixRule
.
- Support for Angular version 5 #409 0217e2d
- Rule for checking the name events without the prefix on https://angular.io/guide/styleguide#dont-prefix-output-properties #449 8f2b4e7.
Enable the new rule by adding the following line in your tslint.json
config file:
"no-output-on-prefix-name": true
Thanks to @eromano for the rule implementation!
- The rules
templates-use-public
,no-access-missing-member
,invoke-injectable
andtemplate-to-ng-template
no longer exist. Remove them from yourtslint.json
configuration.
- i18n best practices #377 5ef90aa
- Add a rule which verifies the use of the life cycle methods according to the type of class (Component, Directive, Service,...) #363 6b042f7
- Friendlier checking of validator directive names #397 28ecbdd
- Error on validating a pipe with
@Pipe
decorator where we use a shorthand syntax for passing properties #399 8e3fafb - Broken
check-pipe
option ofangular-whitespace
#365 bef790b - Some rules report false positives #379 8719674 4721aca bef790b
Thanks to @wKoza for working on the introduced features, bug fixes and code reviews!
Thanks to @wKoza for code reviews and implementation of "check-semicolon"
.
angular-whitespace: [true, "check-semicolon", "check-interpolation", "check-pipe"]
- Checks if there's whitespace after semicolon, around an expression surrounded by interpolation characters, and after a pipe symbol.
- Auto fix for check-interpolation part of angularWhitespace is broken #345 0be8563
- check-pipe should ignore i18n meaning and description | separator #359 5aad7f3
- check-pipe breaks with ngFor #346 fa08a3b
- Incorrect rule name in documentation #344 6656b81
- Proper displacement in the reports for non-TypeScript files #343 c503510
angular-whitespace: [true, "check-interpolation", "check-pipe"]
- Checks if there's whitespace around an expression surrounded by interpolation characters, and after a pipe symbol.banana-in-box: true
- Checks for proper banana in a box syntax -[(ngModel)]
instead of([ngModel])
.templates-no-negated-async: true
- Enforces(foo | async) === false
, rather than!(foo | async)
, because of the initial falsy value emitted.use-view-encapsulation: true
- Enforces enabled view encapsulation.
Special thanks to @wKoza, @GregOnNet and @connor4312 for their contributions.
- Align to the template parser API of Angular compiler 4.1.0 #301 0fcdcd1
- Align to the changes in the template parser API 4.1.3 #319 b608296
- Rule for enforcing
ViewEncapsulation
#300 509c8d9. Big thanks to @GregOnNet. - Add a no-negated-async rule #332 0f0924d. Big thanks to @connor4312.
- Enforce proper banana in a box syntax #331 f95b2d5
- Ensure whitespace around interpolation #320 335776f
- Template micro-syntax closure and 'bind only to public class members' #220 61f9fe9
- Report warnings when bound to private iterable in
*ngFor
#306 36705fc - 'templates-use-public' throws error when attempting to access a property of a property with the [] syntax #315 6323d2c
- no-access-missing-member doesn't work with external HTML #311 b608296
- rules name in documentation aren't consistent #325 7a67607. Big thanks to @wKoza.
- Our links to angular.io are broken #333 5a532b4. Big thanks to @wKoza.
- Report errors twice #336 44a9306
Major release required because of the breaking changes introduced by tslint@5. The ngast
support will be pushed to codelyzer@4.
- Support for tslint@5 #281 01bffd5 49b1e80
- Allow more than one selector kind of directives & components #290 4fa35f6
"directive-selector": [true, ["attribute", "element"], "sg", "camelCase"], "component-selector": [true, ["element", "attribute"], "sg", "kebab-case"],
- Specs for the support of
as
syntax in expressions #289 a7500cb
- Rename
ng2Walker
tongWalker
01bffd5 - Refactor selector-related rules to depend on less mutable state 4fa35f6
- Automatic removal of dead styles (experimental) #244 30f2667
- Warning for the deprecated
<template>
element #280 0d0e81c - Rise a warning if given class implements PipeTransform but is not decorated with @Pipe #104 638e72f
- no-unused-css ignores elements with structural directives #249 0aff6b7
- Improve position to line & character and line & character to position #245 30f2667
- Access to inline template objects results in "no-access-missing-member" rule being triggerred #231 d10e980
- no-access-missing-member and async pipe #190 de13ceb
- Remove
importDestructuringSpacing
. Can be enforced with the tslint's rulewhitespace
. no-access-missing-member
,use-life-cycle-interface
andtemplate-use-public
require type checking which means that tslint should be run with the corresponding options
The rules should now be run as follows:
$ tslint --type-check --project src/client/tsconfig.json
no-access-missing-member
support for inheritance #191 2901718use-life-cycle-interface
support for inheritance #64 d0d7138template-use-public
support for inheritance #240 2e285e2
- Improve testing #235 77ef89e
- Log template parsing errors on log-level debug #227 19fdabf
- Better error messages for
template-use-public
#229 0b7e459 - Support for Angular 4.0.0-beta.8 #241 98639a9
- Fix semantic error when declaration's generation is enabled #221 c694405
- Inconsistent links to the style guide sections #233 c9e87f6
- The rule for binding to publich members breaks for readonly properties #206 cc3ed9a
- Add checks for ngIf and ngSwitch #193 0118b56
- Support for tslint@^4.3.1 (4.3.0 was broken) 3e7edfa
- Support for Angular 4 #214 4d79933
- Refactoring
readTemplate
andreadStyle
to useMaybe<T>
373b152
- Allow multiple suffixes for better compatibility with Ionic #194 08fdaf0
- Add declarations of frequiently used directive declarations #199 36f5cb4
- Support for Angular 2.4.x #201 ad81f2d
- Support for tslint@^4.1.0 #204 13b722e
- Ionic 2 Support #132 a019e3f
- Support for TypeScript 2.2.x #149 d5f117e
- Support for Angular 2.3.0 #182 20ce61a
- False positive with TypeScript 2.1.4 #184 d5f117e
- Certain Codelyzer Rules hang linting #181 d5f117e
- Do not process non-css & non-html files by default #186 d5f117e
- Handle properly
KeyedRead
s andKeyadWrite
s #185 20ce61a - False positive of
no-access-missing-member
#179 20ce61a - Atom fatal error from app-root-path #177 5b26419
-
The rules
directive-selector-name
,component-selector-name
,directive-selector-type
,component-selector-type
,component-selector-prefix
,directive-selector-prefix
no longer exist. Instead use:// The rule have the following arguments: // [ENABLED, "attribute" | "element", "selectorPrefix" | ["listOfPrefixes"], "camelCase" | "kebab-case"] "directive-selector": [true, "attribute", "sg", "camelCase"], "component-selector": [true, "element", "sg", "kebab-case"],
- External template support via command line interface. Note that the VSCode tslint plugin cannot report warnings in CSS and HTML files yet #94 67d5a07
- Support for custom hooks for transpilation of languages which transpile to HTML, CSS #164 1ca7068
- Source map support. You can have pug templates and get error reporting in the correct position if inside of the hook you return not only the transpiled version of the template but also the source map 1ca7068
- Optional configuration file
.codelyzer.js
which should be located in the root of your project (the directory wherenode_modules
is) 1ca7068 - Support for tslint ^4.0.0 #157 8c5dbf6
- Improve
no-unused-css
0a9d9014
- Do not throw error when validating
@Pipe
s without metadata #111 eb6ccc0d - Use proper syntax types for TypeScript 2.1.x #145 d49cc26
- More consistent naming for selector-related rules #79 3373dff
- Support for templateRefs #151 52ba382
- Support for properties declared inline into the constructor #153 23fe633
- Report missing styles in the correct position #166 e9575fb
- Proper selector prefix matching #103 7285121
- Selectors compatible with the spec #15 3373dffe
- Introduce support for unused CSS styles in components.
- Migrate to API changes introduced by Angular 2.1.1 #128 787ff3b.
- Do not consider
$event
as non-declared variable #129 8751184. - Consider template variables such as
let foo of bars
#123 cbd86e1. - Consider getters and setters when listing all the declared in controller symbols #118 6060ce0.
- Migrate to the compiler API changes introduced by Angular 2.1.
- Do not process webpack dynamically injected templates #106 ff2dc85.
- Do not process
@Component
decorators which are not invoked as expressions #110 5ee2422 - Preserve the original interpolation expression #99 5ee2422.
- Consider both property access and method invocation when deciding if property is used or not #97 da15305.
- Migrate to the changes introduced by Angular 2.0.2 #107 06483ce.
- Linting over inline templates #90 4347d09.
- Use
Injectable()
instead ofInjectable
#70 c84df93. - Show warning when binding to non-public class members #87 c849808.
- Support for TypeScript 2.1.0 #72 a002661.
- On non-implemented life-cycle hook/
PipeTransform
interface, mark only the corresponding method #89 a9104b2. - Do not throw error when interface is implemented but under a namespace #91 a9104b2.
- Migrate from typings to
@types
f9cc498.