Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

This function has too many statements. (41)

I have this controller

  .controller('ctrl', function($scope, $rootScope, $timeout, $alert, 
                               $location, $tooltip, $popover, BetSlipFactory, 
                               AccordionsFactory, AuthFactory, 
                               RiskWinCalculations) {...});

and, I am getting this error due to jshint:

line 10 col 44 This function has too many statements. (41)

so, what should I do to avoid it ?

like image 209
Non Avatar asked Jun 24 '15 22:06

Non


3 Answers

It doesn't mean poorly managed code as @pankajparkar says before, it could be because you have something like this, lets say this from one of my projects:

  $scope.betLoader = false;
  $scope.showIfbetAlerts = true;
  $scope.displayStraight = true;
  $scope.displayParlay = true;
  $scope.displayIfBet = true;
  $scope.displayTeaser = true;
  $scope.displayPleaser = true;
  $scope.displayReverse = true;
  $scope.unavailableBet = false;
  $scope.subAccordion = false;
  $scope.betTypeShow = false;
  $scope.showStraight = true;

you can do this:

$scope.setInitialState = function() {
  $scope.betLoader = false;
  $scope.showIfbetAlerts = true;
  $scope.displayStraight = true;
  $scope.displayParlay = true;
  $scope.displayIfBet = true;
  $scope.displayTeaser = true;
  $scope.displayPleaser = true;
  $scope.displayReverse = true;
  $scope.unavailableBet = false;
  $scope.subAccordion = false;
  $scope.betTypeShow = false;
};
$scope.setInitialState();

that will fix it.

UPDATE

Let me explain:

it is not only related with the dependencies, jslint throws this error when there are too many statements, he says before on line ten which is where the controller begins, so parting from there, he should have too many statements, if you put all those statements in 1 function, those statements will be reduce to 1 :)

like image 188
Reacting Avatar answered Nov 19 '22 18:11

Reacting


The best way to get rid of the error would be to edit your jshint settings to not display it.

http://jshint.com/docs/options/#maxstatements

That's a very wishy-washy jshint warning that doesn't really mean anything.

Normally, a function that requires more than 4 or 5 parameters is a bad idea for a lot of reasons, but isn't technically wrong. In this case those params are Angular's way of defining dependencies, so shouldn't be a problem. If the code works, I wouldn't worry about it.

like image 41
nicholas Avatar answered Nov 19 '22 17:11

nicholas


If the controller wants more statements and you don't have any other method to remove it then go to your .jshintrc file and edit it like

"maxstatements": 80, // or whatever number you want'

thanks

like image 4
kamal pandey Avatar answered Nov 19 '22 19:11

kamal pandey