1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 | 'use strict';
|
13 |
|
14 | var utils = require('./utils/utils');
|
15 |
|
16 | module.exports = {
|
17 | meta: {
|
18 | schema: []
|
19 | },
|
20 | create: function(context) {
|
21 | return {
|
22 |
|
23 | ExpressionStatement: function(node) {
|
24 | if ((utils.isAngularControllerDeclaration(node.expression) ||
|
25 | utils.isAngularFilterDeclaration(node.expression) ||
|
26 | utils.isAngularServiceDeclaration(node.expression) ||
|
27 | utils.isAngularFactoryDeclaration(node.expression) ||
|
28 | utils.isAngularConstantDeclaration(node.expression) ||
|
29 | utils.isAngularValueDeclaration(node.expression) ||
|
30 | utils.isAngularDirectiveDeclaration(node.expression) ||
|
31 | utils.isAngularRunSection(node.expression) ||
|
32 | utils.isAngularConfigSection(node.expression)) &&
|
33 |
|
34 | !utils.isAngularModuleDeclaration(node.expression)) {
|
35 | var calleeObject = node.expression.callee.object;
|
36 |
|
37 | while (calleeObject !== undefined && calleeObject.type === 'CallExpression' && !utils.isAngularModuleGetter(calleeObject)) {
|
38 | calleeObject = calleeObject.callee.object;
|
39 | }
|
40 | if (!(calleeObject !== undefined && calleeObject.type === 'CallExpression' && utils.isAngularModuleGetter(calleeObject))) {
|
41 | context.report(node, 'Avoid using a variable and instead use chaining with the getter syntax.');
|
42 | }
|
43 | }
|
44 | }
|
45 | };
|
46 | }
|
47 | };
|