2016-04-05 4 views
1

機能の複雑さと機能の長さに関するJavaScriptのプラグインからは、常に間違った問題が発生しています。JavaScriptのプラグイン機能の複雑さと機能の長さに関する誤検出

なぜなら、関数内に関数が書かれており、外部関数が問題を抱えているからです。 私は、技術的には複雑さがすべてを見ていることを理解していますが、プラグインに関数だけを見てもらう方法はありませんか? ":FunctionComplexity javascriptの" redeployCtrl機能について(複雑= 25)ルールの複雑さの問題は (それが偽陽性のマーキング以外)

Serverバージョン4.5.6 JavaScriptのプラグインのバージョン2.9

があります。

これは実際の複雑さが内部の関数からわかるように、コードです。

この問題は、偽陽性(内部機能の複雑さの問題を失う)またはカスタムルールを記述すること以外には何か方法がありますか?

ありがとうございました。

function redeployCtrl($scope, utilService, $filter, $location, generalSettings, $uibModalInstance, $uibModal, $timeout,scheme) { 
$scope.openStart = openStart; 
$scope.isSubmitable = isSubmitable; 
$scope.ipCheckbox = ipCheckbox; 
$scope.deploy = deploy; 
$scope.init = init; 
$scope.cancel = cancel; 

function init() { 
    $scope.scheme = scheme; 
    $scope.loading = 'false'; 
    $scope.envSchemes = []; 
    $scope.isPermanent = false; 
    $scope.permanent = {}; 
    $scope.scheme.Scheme.Description = null; 
    $scope.scheme.Scheme.ExpTime = null; 

    var max = generalSettings.CalendarEndDate; 
    $scope.maxDate = new Date(); 
    $scope.maxDate.setMonth($scope.maxDate.getMonth() + max); 
    $scope.minDate = new Date(); 
    $scope.minDate = $scope.minDate.setDate($scope.minDate.getDate() + generalSettings.MinExpirationDate); 
    $scope.dateOptions = { 
     'year-format': 'yyyy', 
     'starting-day': 1 
    }; 

    utilService.post(generalSettings.serverPath + 'envscheme/ListSupervisors/', { }) 
     .then(function (data) { 
      $scope.supervisors = data; 
     }).catch(function (data) { 
      utilService.setError(data.ExceptionMessage, "Failed to retrieve data", "img_error"); 
     }); 


    utilService.post(generalSettings.serverPath + 'envscheme/ListPermReasons/', { }) 
    .then(function (data) { 
     $scope.permReasons = data; 

    }).catch(function (data) { 
     utilService.setError(data.ExceptionMessage, "Failed to retrieve data", "img_error"); 
    }); 
} 

function openStart() { 
    $timeout(function() { 
     $scope.startOpened = true; 
    }); 
} 

function deploy(scheme, isPermanent) { 
    if (isPermanent) { 
     scheme.Scheme.ExpTime = '01/01/9999'; 
     scheme.Scheme.ApprovedBy = $scope.permanent.approvedBy; 
     if ($scope.permanent.mainReason === 'Other') { 
      scheme.Scheme.Reason = $scope.permanent.customReason; 
     } else { 
      scheme.Scheme.Reason = $scope.permanent.mainReason; 
     } 
    } else { 
     $scope.scheme.Scheme.ExpTime = utilService.getFormattedDate($scope.scheme.Scheme.ExpTime); 
    } 
    $scope.loading = 'true'; 

    utilService.post(generalSettings.serverPath + 'envscheme/ReCreateEnv', scheme) 
    .then(function (data) { 
     if (data.Success) { 
      utilService.alertAmpm("Deploy started successfuly", "Info", "img_information"); 
      $location.path("/MyEnvironments"); 
     } 
     else { 
      utilService.alertAmpm(data.Reason, "Failed to Re-Deploy", "img_error"); 
      $scope.loading = 'false'; 
     } 
     if (data.Reason.indexOf("Session was not found") < -1) { 
      sessionStorage.clear(); 
      $scope.loading = 'false'; 
     } 
    }).catch(function (data) { 
     utilService.setError(data.ExceptionMessage, "Failed to Re-Deploy", "img_error"); 
     $scope.loading = 'false'; 
    }); 
} 

function isSubmitable(invalid, modules) { 
    if (!invalid) { 

     for (var i = 0; i < modules.length; i++) { 
      if (modules[i].ipchkBox) { 
       if (!modules[i].OS.Parameters.IP) { 
        return true; 
       } 
      } 
     } 
     return false; 
    } 
    return true; 
} 

function ipCheckbox(checkBox, name) { 
    if (!checkBox) { 
     var name1 = "ipText" + name; 
     $('[name=' + name1 + ']').val(''); 
     $scope.scheme.Scheme.modules[name].OS.Parameters = new Object(); 
    } 
} 

function cancel() { 
    $uibModalInstance.dismiss('cancel'); 
} 

ロイ。

+0

コードスニペットとSonarQubeの問題について[例](http://stackoverflow.com/help/mcve)を提供してください。また、あなたの環境、特にプラグインのバージョンについて詳しく説明してください。 –

+0

私はこれを急いで、申し訳ありません。私は質問に詳細を追加しています。 –

答えて

0

これらの規則は、入れ子になっていない関数を使用してコーディングを強制します。 IIFEやいくつかのフレームワーク(AMD、Angular)で受け入れられているようないくつかのケースは無視されます。しかし、それは明らかにあなたの場合ではありません。

だから、このコーディングの慣行はあなたにとって魅力的ではないと思う場合は、ルールを無効にすることができます(customルールを作成して、必要な行のみを数える)。

+0

お返事ありがとうございます –

+0

@Elena Vilchik:角度の複雑さを無視するにはどうすればよいですか?これは既存の問題と思われるので、私はこの答えがどのように問題であるか理解していません。ありがとう。 https://groups.google.com/forum/#!topic/sonarqube/M6f5Neze7Jw – dbalakirev

関連する問題