The ACPATH Metric: Precise Estimation of the Number of Acyclic Paths in C-like Languages
This addresses a limitation in software complexity metrics for developers and researchers, but it is incremental as it builds on existing NPATH work.
The paper tackles the problem that the NPATH metric fails to accurately count acyclic execution paths in C-like languages, and introduces the ACPATH metric to provide a precise estimation, which is exact under specific conditions like no backward gotos or jumps into loops from outside.
NPATH is a metric introduced by Brian A. Nejmeh in [13] that is aimed at overcoming some important limitations of McCabe's cyclomatic complexity. Despite the fact that the declared NPATH objective is to count the number of acyclic execution paths through a function, the definition given for the C language in [13] fails to do so even for very simple programs. We show that counting the number of acyclic paths in CFG is unfeasible in general. Then we define a new metric for C-like languages, called ACPATH, that allows to quickly compute a very good estimation of the number of acyclic execution paths through the given function. We show that, if the function body does not contain backward gotos and does not contain jumps into a loop from outside the loop, then such estimation is actually exact.