Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
79c28ba
add short link to styleguide in rule section (#288)
tilmanschweitzer Nov 26, 2015
aa85cc2
Merge pull request #290 from Gillespie59/issue-288/README.md-no-longe…
EmmanuelDemey Nov 30, 2015
c11460b
Add new rule for disallowing run logic
remcohaszing Dec 3, 2015
7d9a989
add missing example for typecheck-array (fixes #291)
tilmanschweitzer Dec 4, 2015
abdaf5d
Merge branch 'development' into issue-291/Doc-isArray--Wrong-example
tilmanschweitzer Dec 4, 2015
5723037
add categories for rule documentation (fixes #297)
tilmanschweitzer Dec 4, 2015
b4bc4fa
Merge pull request #296 from remcohaszing/no-run-logic
EmmanuelDemey Dec 4, 2015
d08c5e8
Merge pull request #300 from Gillespie59/issue-291/Doc-isArray--Wrong…
EmmanuelDemey Dec 4, 2015
15fd03f
fixed eslint issues (#297)
tilmanschweitzer Dec 4, 2015
4052d44
Merge branch 'development' into issue-297/Rule-section---group-rules-…
tilmanschweitzer Dec 4, 2015
69dc0b7
add category to no-run-logic rule (#297)
tilmanschweitzer Dec 4, 2015
6b88404
Merge pull request #301 from Gillespie59/issue-297/Rule-section---gro…
EmmanuelDemey Dec 5, 2015
1eaec14
add deprecated annotation to documentation (fixes #295)
tilmanschweitzer Dec 6, 2015
18151ec
Add new dumb-inject rule
remcohaszing Dec 6, 2015
107ace3
fixed typo in no-cookiestore
tilmanschweitzer Dec 6, 2015
ed0b507
add rule no-directive-replace to detect the deprecated replace proper…
tilmanschweitzer Dec 6, 2015
466a295
fixed typo in ruleCategories.json
tilmanschweitzer Dec 6, 2015
6fd6346
add some documentation and refactoring (#130)
tilmanschweitzer Dec 6, 2015
050fb45
test case to prove that reported examples in #287 work (fixes #287)
tilmanschweitzer Dec 6, 2015
dcfff4a
Fixes another typo
tilmanschweitzer Dec 6, 2015
0ca4dfa
Add failing test for typeof undefined check (#232)
tilmanschweitzer Oct 12, 2015
2aa5400
extract require utils in rules
tilmanschweitzer Dec 6, 2015
e4bbf39
fixed eslint issues
tilmanschweitzer Dec 6, 2015
6fe7162
Enfore eslint rule global-require
remcohaszing Dec 6, 2015
9674514
Merge pull request #306 from remcohaszing/performance/extract-require…
tilmanschweitzer Dec 6, 2015
22caa4e
add tests for di false positives (#99)
tilmanschweitzer Dec 6, 2015
217e389
remove value from di checks (fixes #99)
tilmanschweitzer Dec 6, 2015
adf9f0c
Disable dumb-inject rule by default
remcohaszing Dec 6, 2015
8129487
change legacy node in travis.yml from 0.10 to 0.12
tilmanschweitzer Dec 6, 2015
6398d12
Add Tilman Potthof and Remco Haszing to the team
remcohaszing Dec 6, 2015
0fc498c
Merge pull request #3 from tilmanpotthof/dumb-inject
remcohaszing Dec 6, 2015
260181d
Merge branch 'master' into development
tilmanschweitzer Dec 6, 2015
e14f211
Merge branch 'development' into issue/232-definedundefined-does-not-c…
tilmanschweitzer Dec 6, 2015
7e70866
cover typeof checks in definedundefined rule (fixes #232)
tilmanschweitzer Dec 6, 2015
6964983
find directive block with context.getScope (#130)
tilmanschweitzer Dec 6, 2015
752cd89
Remove duplicate check from angular-rule
remcohaszing Dec 6, 2015
590ed2e
Add potential failing crashes
remcohaszing Dec 6, 2015
396267a
Add potential failures for component definitions
remcohaszing Dec 6, 2015
8e36405
fixed typeof check and add possible positives (#232)
tilmanschweitzer Dec 6, 2015
7f7cbfc
cover directive definitions with named function (#130)
tilmanschweitzer Dec 6, 2015
52f8ab9
improve readme - add headline, description, npm badges and pixel-perf…
tilmanschweitzer Dec 7, 2015
637b8e9
Fix typos
palortoff Dec 7, 2015
a5e2891
Merge pull request #313 from palortoff/readme-typos
tilmanschweitzer Dec 7, 2015
28c6d1d
Merge pull request #309 from remcohaszing/add-collaborators
EmmanuelDemey Dec 8, 2015
5fcb791
Merge pull request #311 from remcohaszing/angular-rule-coverage
EmmanuelDemey Dec 8, 2015
4deda31
Merge pull request #310 from Gillespie59/issue/232-definedundefined-d…
EmmanuelDemey Dec 8, 2015
d51b763
Merge pull request #312 from tilmanpotthof/improve-readme
EmmanuelDemey Dec 8, 2015
b60e1ac
Merge pull request #303 from remcohaszing/dumb-inject
EmmanuelDemey Dec 8, 2015
2c614ff
Merge pull request #305 from Gillespie59/performance/extract-require-…
EmmanuelDemey Dec 8, 2015
2cdf8b1
Merge pull request #302 from Gillespie59/issue-295/Misleading-depreca…
EmmanuelDemey Dec 8, 2015
039562a
Merge branch 'development' into issue/99-angular/ng_di-false-positive…
tilmanschweitzer Dec 8, 2015
99aec03
Merge branch 'development' into issue/130-Add-rule-to-alert-on-replac…
tilmanschweitzer Dec 8, 2015
8181837
Add some useful references to the readme
remcohaszing Dec 8, 2015
b1f4d0c
Add contributors to package.json
remcohaszing Dec 8, 2015
914840e
Merge pull request #318 from remcohaszing/add-contributors
EmmanuelDemey Dec 9, 2015
adf720a
Merge pull request #317 from remcohaszing/eslint-documentation-refere…
EmmanuelDemey Dec 9, 2015
a8f9e5a
Merge pull request #308 from Gillespie59/issue/99-angular/ng_di-false…
EmmanuelDemey Dec 9, 2015
7acc2e0
Issue #319 controller-as-route error on empty state call
EmmanuelDemey Dec 9, 2015
edc206d
Merge pull request #304 from Gillespie59/issue/130-Add-rule-to-alert-…
EmmanuelDemey Dec 9, 2015
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ rules:

# http://eslint.org/docs/rules/#nodejs
callback-return: 2
global-require: 2
handle-callback-err:
- 2
- ^(e|err|error)$
Expand Down
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ language: node_js
node_js:
- "5.0"
- "4.2"
- "0.10"
- "0.12"
after_script: "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js"
143 changes: 97 additions & 46 deletions README.md

Large diffs are not rendered by default.

64 changes: 64 additions & 0 deletions docs/dumb-inject.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<!-- WARNING: Generated documentation. Edit docs and examples in the rule and examples file ('rules/dumb-inject.js', 'examples/dumb-inject.js'). -->

# dumb-inject - unittest `inject` functions should only consist of assignments from injected values to describe block variables

`inject` functions in unittests should only contain a sorted mapping of injected values to values in the `describe` block with matching names.
This way the dependency injection setup is separated from the other setup logic, improving readability of the test.

## Examples

The following patterns are considered problems;

/*eslint angular/dumb-inject: 2*/

// invalid
describe(function() {
var $httpBackend;
var $rootScope;

beforeEach(inject(function(_$httpBackend_, _$rootScope_) {
$httpBackend = _$httpBackend_;
$rootScope = _$rootScope_;

$httpBackend.whenGET('/data').respond([]);
}));
}); // error: inject functions may only consist of assignments in the form myService = _myService_

// invalid
describe(function() {
var $httpBackend;
var $rootScope;

beforeEach(inject(function(_$httpBackend_, _$rootScope_) {
$rootScope = _$rootScope_;
$httpBackend = _$httpBackend_;
}));
}); // error: '$httpBackend' must be sorted before '$rootScope'

The following patterns are **not** considered problems;

/*eslint angular/dumb-inject: 2*/

// valid
describe(function() {
var $httpBackend;
var $rootScope;

beforeEach(inject(function(_$httpBackend_, _$rootScope_) {
$httpBackend = _$httpBackend_;
$rootScope = _$rootScope_;
}));

beforeEach(function() {
$httpBackend.whenGET('/data').respond([]);
});
});

## Version

This rule was introduced in eslint-plugin-angular 0.15.0

## Links

* [Rule source](../rules/dumb-inject.js)
* [Example source](../examples/dumb-inject.js)
4 changes: 2 additions & 2 deletions docs/no-cookiestore.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ The following patterns are considered problems;
/*eslint angular/no-cookiestore: 2*/

// invalid
$cookieStore.put('favoriteMeal', 'pizza'); // error: Since Angular 1.4, the $cookieStore service is depreacted. Please use now the $cookies service.
$cookieStore.put('favoriteMeal', 'pizza'); // error: Since Angular 1.4, the $cookieStore service is deprecated. Please use now the $cookies service.

// invalid
$cookieStore.get('favoriteMeal'); // error: Since Angular 1.4, the $cookieStore service is depreacted. Please use now the $cookies service.
$cookieStore.get('favoriteMeal'); // error: Since Angular 1.4, the $cookieStore service is deprecated. Please use now the $cookies service.

The following patterns are **not** considered problems;

Expand Down
6 changes: 5 additions & 1 deletion docs/no-digest.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@

# no-digest - use `$apply()` instead of `$digest()`

DEPRECATED! The scope's $digest() method shouldn't be used.
**This rule is deprecated and will be removed in future versions. Explanation: There is no reason to forbid the use of `$digest()` in general.**

The scope's $digest() method shouldn't be used.
You should prefer the $apply method.

The `watchers-execution` rule can be configured to enforce the use of `$apply()` or `$digest()`.

## Version

This rule was introduced in eslint-plugin-angular 0.1.0
Expand Down
74 changes: 74 additions & 0 deletions docs/no-directive-replace.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
<!-- WARNING: Generated documentation. Edit docs and examples in the rule and examples file ('rules/no-directive-replace.js', 'examples/no-directive-replace.js'). -->

# no-directive-replace - disallow the deprecated directive replace property

This rule disallows the replace attribute in a directive definition object.
The replace property of a directive definition object is deprecated since angular 1.3 ([latest angular docs](https://docs.angularjs.org/api/ng/service/$compile).

The option `ignoreReplaceFalse` let you ignore directive definitions with replace set to false.

## Examples

The following patterns are considered problems with default config;

/*eslint angular/no-directive-replace: 2*/

// invalid
angular.module('myModule').directive('helloWorld', function() {
return {
template: '<h2>Hello World!</h2>',
replace: true
};
}); // error: Directive definition property replace is deprecated.

// invalid
angular.module('myModule').directive('helloWorld', function() {
var directiveDefinition = {};
directiveDefinition.templateUrl = 'helloWorld.html';
directiveDefinition.replace = true;
return directiveDefinition;
}); // error: Directive definition property replace is deprecated.

The following patterns are **not** considered problems with default config;

/*eslint angular/no-directive-replace: 2*/

// valid
angular.module('myModule').directive('helloWorld', function() {
return {
template: '<h2>Hello World!</h2>'
};
});

The following patterns are **not** considered problems when configured `{"ignoreReplaceFalse":true}`:

/*eslint angular/no-directive-replace: [2,{"ignoreReplaceFalse":true}]*/

// valid
angular.module('myModule').directive('helloWorld', function() {
return {
template: '<h2>Hello World!</h2>',
replace: false
};
});

The following patterns are considered problems when configured `{"ignoreReplaceFalse":false}`:

/*eslint angular/no-directive-replace: [2,{"ignoreReplaceFalse":false}]*/

// invalid
angular.module('myModule').directive('helloWorld', function() {
return {
template: '<h2>Hello World!</h2>',
replace: true
};
}); // error: Directive definition property replace is deprecated.

## Version

This rule was introduced in eslint-plugin-angular 0.15.0

## Links

* [Rule source](../rules/no-directive-replace.js)
* [Example source](../examples/no-directive-replace.js)
60 changes: 60 additions & 0 deletions docs/no-run-logic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<!-- WARNING: Generated documentation. Edit docs and examples in the rule and examples file ('rules/no-run-logic.js', 'examples/no-run-logic.js'). -->

# no-run-logic - keep run functions clean and simple

Initialization logic should be moved into a factory or service. This improves testability.

**Styleguide Reference**

* [y171 by johnpapa - Run Blocks](https://github.com/johnpapa/angular-styleguide#style-y171)

## Examples

The following patterns are considered problems with default config;

/*eslint angular/no-run-logic: 2*/

// invalid
angular.module('app').run(function($window) {
$window.addEventListener('deviceready', deviceready);

function deviceready() {}
}); // error: The run function may only contain call expressions

The following patterns are **not** considered problems with default config;

/*eslint angular/no-run-logic: 2*/

// valid
angular.module('app').run(function(KITTENS, kittenService, startup) {
kittenService.prefetchData(KITTENS);
startup('foo', true, 1);
});

The following patterns are considered problems when configured `{"allowParams":false}`:

/*eslint angular/no-run-logic: [2,{"allowParams":false}]*/

// invalid
angular.module('app').run(function(startup) {
startup('foo', true, 1);
}); // error: Run function call expressions may not take any arguments

The following patterns are **not** considered problems when configured `{"allowParams":false}`:

/*eslint angular/no-run-logic: [2,{"allowParams":false}]*/

// valid
angular.module('app').run(function(kittenService, startup) {
kittenService.prefetchData();
startup();
});

## Version

This rule was introduced in eslint-plugin-angular 0.15.0

## Links

* [Rule source](../rules/no-run-logic.js)
* [Example source](../examples/no-run-logic.js)
3 changes: 3 additions & 0 deletions docs/typecheck-array.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ The following patterns are considered problems;
// invalid
Object.prototype.toString.call(someArray) === '[object Array]'; // error: You should use the angular.isArray method

// invalid
Array.isArray(someArray) // error: You should use the angular.isArray method

The following patterns are **not** considered problems;

/*eslint angular/typecheck-array: 2*/
Expand Down
4 changes: 3 additions & 1 deletion docs/typecheck-regexp.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

# typecheck-regexp - use `angular.isRegexp` instead of other comparisons

DEPRECATED! You should use the angular.isRegexp method instead of the default JavaScript implementation (toString.call(/^A/) === "[object RegExp]").
**This rule is deprecated and will be removed in future versions. Explanation: `angular.isRegexp` is no built-in angular method.**

You should use the angular.isRegexp method instead of the default JavaScript implementation (toString.call(/^A/) === "[object RegExp]").

## Version

Expand Down
38 changes: 38 additions & 0 deletions examples/dumb-inject.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// example - valid: true
describe(function() {
var $httpBackend;
var $rootScope;

beforeEach(inject(function(_$httpBackend_, _$rootScope_) {
$httpBackend = _$httpBackend_;
$rootScope = _$rootScope_;
}));

beforeEach(function() {
$httpBackend.whenGET('/data').respond([]);
});
});

// example - valid: false, errorMessage: "inject functions may only consist of assignments in the form myService = _myService_"
describe(function() {
var $httpBackend;
var $rootScope;

beforeEach(inject(function(_$httpBackend_, _$rootScope_) {
$httpBackend = _$httpBackend_;
$rootScope = _$rootScope_;

$httpBackend.whenGET('/data').respond([]);
}));
});

// example - valid: false, errorMessage: "'$httpBackend' must be sorted before '$rootScope'"
describe(function() {
var $httpBackend;
var $rootScope;

beforeEach(inject(function(_$httpBackend_, _$rootScope_) {
$rootScope = _$rootScope_;
$httpBackend = _$httpBackend_;
}));
});
4 changes: 2 additions & 2 deletions examples/no-cookiestore.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ $cookies.put('favoriteMeal', 'pizza');
// example - valid: true
$cookies.get('favoriteMeal');

// example - valid: false, errorMessage: "Since Angular 1.4, the $cookieStore service is depreacted. Please use now the $cookies service."
// example - valid: false, errorMessage: "Since Angular 1.4, the $cookieStore service is deprecated. Please use now the $cookies service."
$cookieStore.put('favoriteMeal', 'pizza');

// example - valid: false, errorMessage: "Since Angular 1.4, the $cookieStore service is depreacted. Please use now the $cookies service."
// example - valid: false, errorMessage: "Since Angular 1.4, the $cookieStore service is deprecated. Please use now the $cookies service."
$cookieStore.get('favoriteMeal');
40 changes: 40 additions & 0 deletions examples/no-directive-replace.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// example - valid: true
angular.module('myModule').directive('helloWorld', function() {
return {
template: '<h2>Hello World!</h2>'
};
});

// example - valid: true, options: [{"ignoreReplaceFalse": true}]
angular.module('myModule').directive('helloWorld', function() {
return {
template: '<h2>Hello World!</h2>',
replace: false
};
});

// example - valid: false, errorMessage: "Directive definition property replace is deprecated."
angular.module('myModule').directive('helloWorld', function() {
return {
template: '<h2>Hello World!</h2>',
replace: true
};
});

// example - valid: false, errorMessage: "Directive definition property replace is deprecated."
angular.module('myModule').directive('helloWorld', function() {
var directiveDefinition = {};
directiveDefinition.templateUrl = 'helloWorld.html';
directiveDefinition.replace = true;
return directiveDefinition;
});

// example - valid: false, options: [{"ignoreReplaceFalse": false}], errorMessage: "Directive definition property replace is deprecated."
angular.module('myModule').directive('helloWorld', function() {
return {
template: '<h2>Hello World!</h2>',
replace: true
};
});


23 changes: 23 additions & 0 deletions examples/no-run-logic.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// example - valid: true
angular.module('app').run(function(KITTENS, kittenService, startup) {
kittenService.prefetchData(KITTENS);
startup('foo', true, 1);
});

// example - valid: true, options: [{allowParams: false}]
angular.module('app').run(function(kittenService, startup) {
kittenService.prefetchData();
startup();
});

// example - valid: false, errorMessage: "The run function may only contain call expressions"
angular.module('app').run(function($window) {
$window.addEventListener('deviceready', deviceready);

function deviceready() {}
});

// example - valid: false, options: [{allowParams: false}], errorMessage: "Run function call expressions may not take any arguments"
angular.module('app').run(function(startup) {
startup('foo', true, 1);
});
3 changes: 3 additions & 0 deletions examples/typecheck-array.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@ angular.isArray(someArray);

// example - valid: false, errorMessage: "You should use the angular.isArray method"
Object.prototype.toString.call(someArray) === '[object Array]';

// example - valid: false, errorMessage: "You should use the angular.isArray method"
Array.isArray(someArray)
Loading