CodeQL 文档

依赖不匹配

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

点击查看 CodeQL 仓库中的查询

AngularJS 内置支持依赖注入:指令可以简单地列出它们依赖的服务,AngularJS 将提供适当的实例并在运行时将它们作为参数传递。

开发人员必须确保依赖项列表与指令工厂函数的参数列表匹配:如果缺少依赖项,将不会注入任何服务实例,并且相应的参数将默认为 `undefined`。如果依赖项及其相应参数具有不同的名称,这会使代码难以理解,甚至可能表明存在错误。

建议

确保声明的依赖项和参数匹配。

示例

以下示例指令声明了对 `$compile` 服务的单个依赖项,但其工厂函数有两个参数 `$compile` 和 `$http`。可以推测,第二个参数是在没有添加相应依赖项的情况下引入的,因此服务将无法正确注入。

angular.module('myapp')
       .directive('mydirective', [ '$compile', function($compile, $http) {
           // ...
       }]);

要解决此问题,必须将 `$http` 服务也列为依赖项

angular.module('myapp')
       .directive('mydirective', [ '$compile', '$http', function($compile, $http) {
           // ...
       }]);

参考

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