小编Olp*_*pah的帖子

计算C代码的Cyclomatic Complexity的工具

我想要一个工具来分析我的代码质量,经过一些谷歌搜索后,我想我明白Cyclomatic Complexity可以从这里开始.我试图让几个工具工作,但没有成功(发现大多数是为Java开发的).我的要求是:

  • 应该使用C代码
  • 应该在Ubuntu上工作(12.04)
  • 应该是免费的
  • (可选)eclipse的插件

我将不胜感激任何帮助

c cyclomatic-complexity

9
推荐指数
1
解决办法
1万
查看次数

为什么在结构化绑定后不使用 std::move 就不能返回 std::unique_ptr ?

当我尝试编译以下代码时,出现错误 C2280。我猜编译器正在尝试复制 unique_ptr 或其他东西。

#include <memory>

std::pair<int, std::unique_ptr<int>> CreatePair()
{
    std::unique_ptr<int> my_int(new int);
    return { 1, std::move(my_int) };
}
std::unique_ptr<int> GetUinquePtr()
{
    auto [ignore, unique_ptr] = CreatePair();
    return unique_ptr; // <- Build error C2280 attempting to reference a deleted function
}
int main()
{
    auto unique_ptr = GetUinquePtr();
}
Run Code Online (Sandbox Code Playgroud)

完整的错误消息:

error C2280: 'std::unique_ptr<int,std::default_delete<int>>::unique_ptr(const std::unique_ptr<int,std::default_delete<int>> &)': attempting to reference a deleted function
Run Code Online (Sandbox Code Playgroud)

如果我添加 std::move() 它就会起作用:

std::unique_ptr<int> GetUinquePtr()
{
    auto [ignore, unique_ptr] = CreatePair();
    return std::move(unique_ptr); // <- This works
}
Run Code Online (Sandbox Code Playgroud)

如果我使用 …

c++ std unique-ptr structured-bindings

7
推荐指数
1
解决办法
474
查看次数

ctags 可以区分同名的不同符号吗?

我正在尝试将 vim 与 ctags 和/或 cscope 一起使用,它工作得很好,但我遇到了一些问题,其中 ctags 跳转到错误的符号。例如,在下面的代码中,如果我将光标放在 main() 中的符号“a”上并按Ctrl+]转到定义,我将被定向到“虚拟结构”中的“char a”,但我想定向到我的 main 中的“int a”。ctags 或 cscope 可以处理这个问题吗?或者符号是否需要唯一的名称?

struct dummy
{
   char a;
};

int main ()
{
   int a = 1;
   a = a + 2;
   return a;
}
Run Code Online (Sandbox Code Playgroud)

c vim ctags cscope

5
推荐指数
1
解决办法
1475
查看次数