web-dev-qa-db-ja.com

SonarQubeをAngularJSとうまく連携させる方法は?

SonarQubeを使用してJavaScriptコードの品質チェックを行うことを検討してきましたが、このコードはAngularJSを使用して記述されています。

SonarQubeルールの1つは、関数の行数をチェックしますが(これは理にかなっているようです)、AngularJSでは、関数を使用してコントローラー、サービス、ディレクティブを定義します。これらの関数はかなり大きくなる可能性があります。概念的には、それらは実際にはクラス定義に似ており、他の関数がネストされています。

理想的には、SonarQubeで内部関数の長さをチェックし、場合によっては内部関数を除いた外部関数をチェックしたいのですが、これを行う方法がわかりません。

他の誰かがAngularJSでSonarQubeを使用してこの問題に遭遇しましたか、または誰かが良い解決策を知っていますか?

26
Dan King

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]);
}());

これは、一部の開発者にとっては間違いなく不快なパターンになる可能性がありますが、SonarQubeの関数をより小さな部分に分割する1つの方法です。

1
Hylianpuffball