如何让SonarQube与AngularJS很好地配合?

Dan*_*ing 26 javascript angularjs sonarqube

我一直在寻找使用SonarQube对一些javascript代码进行质量检查,但这段代码是使用AngularJS编写的.

其中一个SonarQube规则检查函数中的行数 - 这似乎是合理的 - 但在AngularJS中,函数用于定义控制器,服务和指令,并且这些函数可以变得非常大.从概念上讲,它们更像是类定义,其他函数嵌套在它们中.

理想情况下,我希望SonarQube检查内部函数的长度,并可能排除内部函数的外部函数,但我不知道有什么方法可以做到这一点.

有没有其他人使用SonarQube和AngularJS遇到这个问题,或者有人知道一个好的解决方案吗?

Hyl*_*all 1

一种解决方案是在自执行函数中单独声明所有方法。

(function(){
    var controller = function(dependency){
         //...
    },

    someDirective = function(dependency){
        //...
    },

    //Finally, your module
    module = angular.module("MyMod", []);

    module.controller("MyController", ['dependency', controller]);
    module.directive("someDirective", ['dependency', someDirective]);
}());
Run Code Online (Sandbox Code Playgroud)

对于某些开发人员来说,这绝对是一种不舒服的模式,但它是 SonarQube 将函数分解为更小部分的一种方法。

  • 经过进一步研究后,不幸的是,SonarQube 将自执行函数视为另一个函数,并对其应用了行数检查,因此这根本无法解决问题。似乎 SonarQube 确实无法与 Javascript 一起正常工作,因为这是限制范围的常见通用模式,实际上不应该受到与普通函数相同的限制。 (2认同)