这是cppcheck show waring的代码"[event.cpp:20] :(性能)函数参数'path'应该通过引用传递."
void
event::set_path(const std::string path)
{
this->_path = path;
}
Run Code Online (Sandbox Code Playgroud)
但其他代码包括字符串paramer不显示此警告,如:
int
watcher::init_watch(const struct stat *sb, std::string path, bool linked)
{
int wd;
....
}
Run Code Online (Sandbox Code Playgroud)
为什么?
我用cppcheck检查了我的代码,它说我的char outStr[256]字段应该在构造函数的初始化列表中初始化.
warning: Member variable 'outStr' is not initialized in the constructor.
Run Code Online (Sandbox Code Playgroud)
此字段仅用于此方法:
const char* toStr(){
sprintf(outStr,"%s %s", id.c_str(), localId.c_str());
return outStr;
}
Run Code Online (Sandbox Code Playgroud)
添加c("")到初始化列表是否更好?还是cppcheck错了?或者还有其他方法可以解决这个问题吗?
cppcheck 新手。无法弄清楚如何解决此问题(cppcheck 警告)。任何帮助,将不胜感激。
if (!call_initialized)
{ char id1[16];
char id1[16];
char* dummy_char_ptr = inet_ntoa(*((in_addr*)&source_ip));
std::strncpy(id1, dummy_char_ptr, 16);
dummy_char_ptr=inet_ntoa(*((in_addr*)&destination_ip));
std::strncpy(id2, dummy_char_ptr, 16);
dummy_char_ptr=NULL;
std::cerr << id1 << " -----> " << id2 << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误(警告) - 调用 strncpy() 后,缓冲区“id2”可能不会以零结尾。
在我的代码库上运行 CppCheck 会产生一些样式警告。例如在
void foo(int& x)
{
x = 0;
}
void bar()
{
int y;
foo(y);
}
Run Code Online (Sandbox Code Playgroud)
它给了我
Variable 'y' is not assigned a value
Run Code Online (Sandbox Code Playgroud)
这与代码相同
char buffer[160];
i+=sprintf(buffer,"%2.2ld.",ymd.monthday);
Run Code Online (Sandbox Code Playgroud)
这是我的代码有问题还是 CppCheck 有问题?(如何)我应该修复它?
感谢您的任何想法!
我想覆盖wq/q/w!/ w/q!用户定义的命令及其功能.
示例:
如果我使用:wq退出,该命令应该对该特定的c/c ++文件进行静态代码检查并退出.
在这种情况下请帮帮我.
提前致谢.
我用cppcheck检查了我的程序,并且它抱怨了一些mismatchAllocDealloc错误.我真的不明白我做错了什么.这个错误是什么意思?
谢谢
这个
cppcheck --enable=style --inconclusive --check-config --xml --xml-version=2 -v -I.. -I../mocks -I../gmock -I../gtest -DUNIT_TEST ../src
Run Code Online (Sandbox Code Playgroud)
结果
<?xml version="1.0" encoding="UTF-8"?>
<results version="2">
<cppcheck version="1.52"/>
<errors>
Checking ../src/AppMain.cpp...
</errors>
</results>
Run Code Online (Sandbox Code Playgroud)
显然,我做错了-但是呢?
顺便说一句,我确定代码有问题,但是可以肯定的是,我将这两行粘贴到了其中
char a[10];
a[10] = 0;
Run Code Online (Sandbox Code Playgroud)
而且没有报告超出范围引用
我创建了一个自定义类型,并将其放入 command.h
typedef struct
{
char name[16];
int paramv[7];
int paramc;
} command;
Run Code Online (Sandbox Code Playgroud)
我在许多其他文件中使用它,但不在command.*. 现在我使用 QtCreator cppcheck 插件运行 CppCheck 测试。我得到的是:
command.h:12: warning: Cppcheck: struct member 'command::name' is never used.
Run Code Online (Sandbox Code Playgroud)
当我这样做时会发生同样的警告
cppcheck src --enable=all --suppress=missingIncludeSystem src/*
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我正在尝试CppCheck在Ubuntu中使用该工具。我运行了以下命令
cppcheck --enable=all --check-config --suppress=missingIncludeSystem main.c 2>err.txt
Run Code Online (Sandbox Code Playgroud)
它创建err.txt的文件,但它是空的。
如何获得评分或检查main.c文件中的代码。
使用强制转换构造函数不好吗?否则为什么代码质量检查器(在我的例子中是 cppcheck)会不断建议在单参数构造函数之前添加显式?
如果我想做怎么办
class MyClass {
A(int) {}
};
A a = 1;
Run Code Online (Sandbox Code Playgroud)
如果我按照“建议”写
class MyClass {
explicit A(int) {}
};
A a = 1;
Run Code Online (Sandbox Code Playgroud)
会抛出一个错误,但如果我使用第一个,我会收到一个警告,我必须记录以通过代码审查。
cppcheck ×10
c++ ×6
c-strings ×1
coding-style ×1
explicit ×1
memory-leaks ×1
qt-creator ×1
strncpy ×1
vim ×1
xml ×1