如何在 python 中用 clang 捕获 for/while 语句
how to catch for/while statement with clang in python
我在 python 模块中使用 clang 计算 C/C++ 代码的圈复杂度。
而且,我抓住了几乎所有的陈述,但是,我无法抓住几个不存在的陈述
戴牙套。
例如,如果下面的语句可以捕获并计算圈复杂度。
if (i == 1 && k ==2)
{
cout << 'q' << endl;
}
但是,下面的语句无法捕捉。
if (i == 1 && k ==2)
cout << 'q' << endl;
请告诉我如何捕捉该语句。
我能想到的唯一一个不一定用大括号括起来的块(goto
除外,但我们不会深入讨论)是 case
的 switch
/case
块。在那种情况下,您可以检查分隔符。与 python 不同,您没有缩进检查。因此,该块要么只有一行代码,要么是用大括号括起来的。
为了增加额外的丑陋,您目前是否检查像
这样的行
if (my_condition_1) ++x;
else if (my_condition_2) --x;
?
是的,它们很丑,而且您通常很快就会因为其中一个而被拉屎。但是,尽管如此,这样的编码风格是可能的。
(所有建议都是在我正确理解你想要得到什么样的信息的情况下提出的。澄清请求+1)
我在 python 模块中使用 clang 计算 C/C++ 代码的圈复杂度。
而且,我抓住了几乎所有的陈述,但是,我无法抓住几个不存在的陈述
戴牙套。
例如,如果下面的语句可以捕获并计算圈复杂度。
if (i == 1 && k ==2)
{
cout << 'q' << endl;
}
但是,下面的语句无法捕捉。
if (i == 1 && k ==2)
cout << 'q' << endl;
请告诉我如何捕捉该语句。
我能想到的唯一一个不一定用大括号括起来的块(goto
除外,但我们不会深入讨论)是 case
的 switch
/case
块。在那种情况下,您可以检查分隔符。与 python 不同,您没有缩进检查。因此,该块要么只有一行代码,要么是用大括号括起来的。
为了增加额外的丑陋,您目前是否检查像
这样的行if (my_condition_1) ++x;
else if (my_condition_2) --x;
?
是的,它们很丑,而且您通常很快就会因为其中一个而被拉屎。但是,尽管如此,这样的编码风格是可能的。
(所有建议都是在我正确理解你想要得到什么样的信息的情况下提出的。澄清请求+1)