CodeQL 文档

重复依赖注入

ID: js/angular/repeated-dependency-injection
Kind: problem
Security severity: 
Severity: warning
Precision: high
Tags:
   - maintainability
   - frameworks/angularjs
Query suites:
   - javascript-security-and-quality.qls

点击查看 CodeQL 仓库中的查询

AngularJS 组件可以有一个 $inject 属性,用于指定要注入的依赖项。您可以多次分配此属性,但这样做会令人困惑,因为后面的分配会覆盖之前的分配,并且实际上只注入最后一次分配中指定的依赖项。

建议

每个组件只指定一次依赖项。

示例

以下示例显示了一个 AngularJS 控制器,它的依赖项被指定了两次。

function myController($scope, $filter) {
    // ...
}
myController.$inject = ["$scope", "$cookies"]; // BAD: always overridden
// ...
myController.$inject = ["$scope", "$filter"];
angular.module('myModule', []).controller('MyController', myController);

这是有问题的,因为第二次指定总是会覆盖第一次指定。

相反,依赖项应该只指定一次

function myController($scope, $filter) {
    // ...
}
myController.$inject = ["$scope", "$filter"]; // GOOD: specified once
angular.module('myModule', []).controller('MyController', myController);

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私