What is NPath Complexity and how to avoid it?

Wolverine789 picture Wolverine789 · Jul 10, 2014 · Viewed 27.3k times · Source

In this line:

public Map getAll(BusinessTargetPK pkBusinessTargetId) throws Exception

I am getting this error:

NPath Complexity is 32,768 (max allowed is 200)

And in this line:

public Map getAll( Long  RLE_ROLE_ID  ) throws Exception {

I get this error:

The method getAll() has an NPath complexity of 2048

I am completely unaware of what is NPath Complexity and what it means.

Can someone give advice how to avoid this type of error?

Answer

JoeDred picture JoeDred · Jul 10, 2014

This Link: https://modess.io/npath-complexity-cyclomatic-complexity-explained/

explains it very well as:

The NPath complexity of a method is the number of acyclic execution paths through that method.

This means you should avoid long functions with a lot of (nested) if/else statements.

So my advice would be:

  1. Split your functions into smaller ones
  2. Eliminate useless if/else-statements where possible