• <small id='TrSo5'></small><noframes id='TrSo5'>

    <tfoot id='TrSo5'></tfoot>
      <legend id='TrSo5'><style id='TrSo5'><dir id='TrSo5'><q id='TrSo5'></q></dir></style></legend>

        • <bdo id='TrSo5'></bdo><ul id='TrSo5'></ul>

      1. <i id='TrSo5'><tr id='TrSo5'><dt id='TrSo5'><q id='TrSo5'><span id='TrSo5'><b id='TrSo5'><form id='TrSo5'><ins id='TrSo5'></ins><ul id='TrSo5'></ul><sub id='TrSo5'></sub></form><legend id='TrSo5'></legend><bdo id='TrSo5'><pre id='TrSo5'><center id='TrSo5'></center></pre></bdo></b><th id='TrSo5'></th></span></q></dt></tr></i><div id='TrSo5'><tfoot id='TrSo5'></tfoot><dl id='TrSo5'><fieldset id='TrSo5'></fieldset></dl></div>
      2. 复杂性大于 AngularJS 控制器中的授权(SonarLint 问题)

        时间:2023-08-01
        <legend id='umrsY'><style id='umrsY'><dir id='umrsY'><q id='umrsY'></q></dir></style></legend>
          • <bdo id='umrsY'></bdo><ul id='umrsY'></ul>
                <tbody id='umrsY'></tbody>
              <tfoot id='umrsY'></tfoot>

                <small id='umrsY'></small><noframes id='umrsY'>

                <i id='umrsY'><tr id='umrsY'><dt id='umrsY'><q id='umrsY'><span id='umrsY'><b id='umrsY'><form id='umrsY'><ins id='umrsY'></ins><ul id='umrsY'></ul><sub id='umrsY'></sub></form><legend id='umrsY'></legend><bdo id='umrsY'><pre id='umrsY'><center id='umrsY'></center></pre></bdo></b><th id='umrsY'></th></span></q></dt></tr></i><div id='umrsY'><tfoot id='umrsY'></tfoot><dl id='umrsY'><fieldset id='umrsY'></fieldset></dl></div>
                • 本文介绍了复杂性大于 AngularJS 控制器中的授权(SonarLint 问题)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我将 SonarLintEclipse 一起使用,并且我正在使用 AngularJS 编写应用程序.我的控制器有问题,所以我试图清理一下以使其更清晰,然后 SonarLint 弹出了一个问题:

                  I use SonarLint with Eclipse, and I'm codding an application using AngularJS. I had a problem with a controller so I was trying to clean it a bit to see clearer, and then SonarLint popped me up an issue :

                  函数的复杂度为 11,大于授权的 10.

                  Function has a complexity of 11 which is greater than 10 authorized.

                  这是我的控制器的代码:

                  And here's the code of my controller :

                  app.controller('LauncherCtrl', function ($scope, $http) {
                  
                      $scope.genStatus = "stopped";
                  
                      $scope.startgenerator = function() {
                          $http.get('/start').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.resumegenerator = function() {
                          $http.get('/resume').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.suspendgenerator = function() {
                          $http.get('/suspend').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.stopgenerator = function() {
                          $http.get('/stop').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.updateStatus = function() {              
                          $http.get('/status').success(function (response) {
                                $scope.genStatus = response.data;
                          });
                      };
                  
                      $scope.updateStatus();
                  });
                  

                  有什么问题吗?我认为这个问题与太多的嵌套循环/函数有关,但据我所知,它不是(除了调用更新的函数 start/stop/resume/pause,但它不是复杂性 11,是吗??).+ 我仔细检查了括号/括号,我认为问题不在于那里.

                  Is there something wrong with it ? I assume this issue would be about too much nested loops/functions, but as far as I can see it's not (apart from the functions start/stop/resume/pause which are calling update, but it isn't complexity 11, is it ?). + I double checked the brackets/parenthesis, I don't think the problem comes from there.

                  推荐答案

                  如果你想消除复杂性,你可以做一个函数:

                  If you want to remove complexity you can make one function :

                      $scope.startgenerator = function() {
                          $http.get('/start').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.resumegenerator = function() {
                          $http.get('/resume').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.suspendgenerator = function() {
                          $http.get('/suspend').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.stopgenerator = function() {
                          $http.get('/stop').success(function () {
                              $scope.updateStatus();
                          });
                      };
                  

                  $scope.generatorAction = function(action) {
                      $http.get('/' + action).success(function () {
                          $scope.updateStatus();
                      });
                  };
                  

                  然后像这样使用它:

                  $scope.generatorAction('stop');
                  

                  或者使用处理您的http请求的服务,这是一个更好的做法.

                  Or use a service that handle your http request, It's a better practice.

                  我在我的 Angular 应用程序中使用这个样式指南:https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md

                  I'm using this styleguide for my angular applications : https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md

                  为您的 http 请求创建一个简单的服务:

                  Creating a simple service for your http request :

                  (function() {
                    'use strict';
                  
                    angular
                      .module('yourModuleName')
                      .factory('generator', generatorFactory);
                  
                    function generatorFactory($http) {
                  
                       var service = {
                          start: start,
                          resume: resume,
                          suspend: suspend,
                          stop: stop
                       }
                  
                       return service;
                  
                       function start() {
                          return $http.get('/start');
                       }
                  
                       function resume() {
                          return $http.get('/start');
                       }
                  
                       function suspend() {
                          return $http.get('/suspend');
                       }
                  
                       function stop() {
                          return $http.get('/stop');
                       }
                    }
                  
                  })();
                  

                  然后在你的控制器中:

                  app.controller('LauncherCtrl', function ($scope, generator, $http) {
                  
                      $scope.genStatus = "stopped";
                  
                      $scope.startgenerator = function() {
                          generator.start().then(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.resumegenerator = function() {
                          generator.resume().then(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.suspendgenerator = function() {
                          generator.suspend().then(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.stopgenerator = function() {
                          generator.stop().then(function () {
                              $scope.updateStatus();
                          });
                      };
                  
                      $scope.updateStatus = function() {              
                          $http.get('/status').success(function (response) {
                                $scope.genStatus = response.data;
                          });
                      };
                  
                      $scope.updateStatus();
                  });
                  

                  首先,您的应用程序似乎需要更多代码和更复杂,但如果您需要在其他页面或组件/指令中停止生成器,您只需注入生成器"服务并执行 generator.stop(); 并且通过这样做,如果有一天你的端点 url 改变了,你只需要在你的服务中改变它们.

                  First it seems to take more code and more complexity to your app, but if you need to stop your generator in an other page or in a component/directive, you just have to inject your 'generator' service and do generator.stop(); and by doing this, if one day your endpoint url changed, you only have to change them in your service.

                  这篇关于复杂性大于 AngularJS 控制器中的授权(SonarLint 问题)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:SonarJS - 如何避免“不存在的变量不应被引用"问题 下一篇:如何告诉 Sonar 使用我的 LCOV 文件进行代码覆盖

                  相关文章

                    <bdo id='R9c4g'></bdo><ul id='R9c4g'></ul>
                  1. <legend id='R9c4g'><style id='R9c4g'><dir id='R9c4g'><q id='R9c4g'></q></dir></style></legend>

                      <i id='R9c4g'><tr id='R9c4g'><dt id='R9c4g'><q id='R9c4g'><span id='R9c4g'><b id='R9c4g'><form id='R9c4g'><ins id='R9c4g'></ins><ul id='R9c4g'></ul><sub id='R9c4g'></sub></form><legend id='R9c4g'></legend><bdo id='R9c4g'><pre id='R9c4g'><center id='R9c4g'></center></pre></bdo></b><th id='R9c4g'></th></span></q></dt></tr></i><div id='R9c4g'><tfoot id='R9c4g'></tfoot><dl id='R9c4g'><fieldset id='R9c4g'></fieldset></dl></div>

                      <small id='R9c4g'></small><noframes id='R9c4g'>

                    1. <tfoot id='R9c4g'></tfoot>