All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
5.0.0-beta.2 (2019-03-25)
5.0.0-beta.1 (2019-03-14)
- update peerDependencies (d5bfbd5)
5.0.0-beta.0 (2019-03-12)
This release contains many breaking changes due to the rename of several rules (see more at (bbf7a32)). Currently, there's an open PR (angular/angular-cli#13801) that will help migrate your app if you are affected by these changes.
contextual-life-cycle
is renamed tocontextual-lifecycle
no-conflicting-life-cycle-hooks
is renamed tono-conflicting-lifecycle
no-life-cycle-call
is renamed tono-lifecycle-call
use-life-cycle-interface
is renamed touse-lifecycle-interface
decorator-not-allowed
is renamed tocontextual-decorator
enforce-component-selector
is renamed touse-component-selector
no-output-named-after-standard-event
is renamed tono-output-native
use-host-property-decorator
is renamed tono-host-metadata-property
use-input-property-decorator
is renamed tono-inputs-metadata-property
use-output-property-decorator
is renamed tono-outputs-metadata-property
no-queries-parameter
is renamed tono-queries-metadata-property
pipe-impure
is renamed tono-pipe-impure
use-view-encapsulation
is renamed touse-component-view-encapsulation
i18n
is renamed totemplate-i18n
banana-in-box
is renamed totemplate-banana-in-box
no-template-call-expression
is renamed totemplate-no-call-expression
templates-no-negated-async
is renamed totemplate-no-negated-async
trackBy-function
is renamed totemplate-use-track-by-function
no-attribute-parameter-decorator
is renamed tono-attribute-decorator
max-inline-declarations
is renamed tocomponent-max-inline-declarations
- rule: template-no-call-expression should allow $any usages (#735) (a75c204)
- rule: no-input-rename reporting some failures incorrectly (#723) (f692dcb)
- rule: prefer-inline-decorator should not set a max number of options (#787) (31b2b6a)
- rule: add component-change-detection (#737) (a23ccde), closes #135
- rule: add relative-url-prefix (#725) (f12f27b)
- rule: add template-accessibility-alt-text (#741) (0815ec5)
- rule: add template-accessibility-elements-content (#742) (6ff8c56)
- rule: add template-accessibility-label-for (#739) (76c24fa)
- rule: add template-accessibility-tabindex-no-positive (#744) (43902f7)
- rule: add template-accessibility-table-scope (#743) (2832615)
- rule: add template-accessibility-valid-aria (#746) (762f67f)
- rule: add template-click-events-have-key-events (#761) (b0b330f)
- rule: add template-mouse-events-have-key-events (#759) (3a7b15d)
- rule: add template-no-autofocus (#749) (799382f)
- rule: add template-no-distracting-elements (#760) (6b21a9e)
- rule: add template-no-any (#755) (77a5e32)
4.5.0 (2018-10-04)
- assertFailure should not catch the exception thrown by assert (#703) (#704) (0bac287)
- rule: no-unused-css leaving blank lines after applying fixes (#701) (c69e2ae)
4.4.4 (2018-08-13)
4.4.3 (2018-08-06)
- url not passed to transformStyle when using styleUrls (#686) (5a84041)
- templates-no-negated-async: not reporting failures for some cases (#694) (2ffe2ea)
4.4.2 (2018-06-25)
4.4.1 (2018-06-23)
4.4.0 (2018-06-23)
- no-input-prefix: exact strings not being reported (#597) (1ed8d8c)
- no-input-rename: aria attributes not being allowed to be renamed (#665) (2c905ab), closes #663
- no-input-rename: fix bugs (#585) (75f9de6), closes #580
- no-template-call-expression: not being exported (#582) (ad57552), closes #577
- no-life-cycle-call: fix bugs (#575) (4415cc2), closes #573
- no-input-prefix: not being able to check for multiple concurrent prefixes (#590) (43d415a), closes #589
- no-output-rename: not being reported for some cases (#614) (5e34f41), closes #613
- template-conditional-complexity: not reporting failures for '[ngIf]' (#611) (7fc3b09), closes #607
- template-cyclomatic-complexity: not reporting failures for '[ngForOf]' and '[ngIf]' (#612) (fedd331), closes #609
- trackBy-function: not reporting failures for '[ngForOf]' (#610) (af52912), closes #608
- some rules not considering options correctly (#617) (bce0026)
- import-destructuring-spacing: add fixer (#595) (2acc27b)
- max-inline-declarations: add option to limit animations lines (#569) (25f3e16), closes #568
- rule: add no-queries-parameter rule (#571) (e9f4d23)
- rule: add prefer-inline-decorator rule (#586) (5d5e21d), closes #549
- build scripts are not cross-platform #581 204c8ef, closes #454
- upgrade TypeScript dependency to 2.7.2 #584 d4bf62d, closes #583
- turn on strict TS compilation mode (#631) (da0f553), closes #629
- externalizing template, css visitor abstractions and NgWalker (#658) (b79ea58)
Credits to the codelyzer's maintainers and contributors.
max-inline-declarations
which limits the size of inline templates and/or styles. Credits to NagRock #536 174ed46.prefer-output-readonly
requires the@Output
s of a component to bereadonly
. Credits to rafaelss95 #515 3d652d1.no-conflicting-life-cycle-hooks
prevents to implement OnChanges and DoCheck on the same class. Credits to rafaelss95 #560 e521115.enforce-component-selector
Component Selector Required #551 b9c899b. Credits to wKoza.no-life-cycle-call
disallow explicit calls to lifecycle hooks. Credits to rafaelss95 #427 3e10013
- Possible bug with no-input-rename #374 f3a53bd.
- Removed dependency on
@angular/platform-browser-dynamic
#525 671e954. - Rule
contextual-life-cycle
too aggressively scoped #545 dcb4b3e. no-output-named-after-standard-event
Does Not Check Output Rename #537 96d9292.- Template Conditional Complexity reports incorrect threshold #533 5851306.
A lot of credits go to rafaelss95, wKoza. The rest of the amazing people who work on codelyzer, can be found here.
- 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.