Cyclomatic complexity in D ?
Basile B. via Digitalmars-d
digitalmars-d at puremagic.com
Mon Aug 15 18:17:41 PDT 2016
On Monday, 15 August 2016 at 22:36:41 UTC, Basile B. wrote:
> Last night I've done a bit of documentation work on cyclomatic
> complexity. From this work it looks like the tools that do this
> static analysis are only using the AST (e.g the CC is computed
> for a each single function, and function calls inside the graph
> are considered as "connected componenents" with a constant
> weight of 1.
>
> The problems I see with D are
> - the metaprogramming features. (clearly unsolvable)
> - conditional compilation: "version()" and "static if" are
> hardly handlable at the AST level, meaning that a bit of
> semantic is necessary to compute the real CC.
> - functional programming, CTFE.
>
> So what the CC for ?
> - DScanner could implement it (or also the maintainability
> index) to check existing code-bases.
> - As a guard, i.e when you're inspired and that you write 2000
> SLOC in the day.
>
> So CC possible or not in D (at the AST level) ?
Even detecting the main() in the AST is subject to error
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
version(set_by_command-line)
{
static if (modulea.a || b && modulec.c)
void main(){}
else
void naim(){}
}
else
{
version(yo_o_yo)
{
static if (a || modulek.b && c)
void main(){}
else
void naim(){}
}
else
void nami(){}
}
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Good luck to find the main() with only the AST an no semantic ;)
More information about the Digitalmars-d
mailing list