相关疑难解决方法(0)

一个免费的工具,根据一组编码标准检查C/C++源代码?

看起来很容易找到这样的Java工具(Checkstyle,JCSC),但我似乎找不到一个用于C/C++的工具.我不是在寻找类似于lint的静态代码分析器,我只想检查编码标准,如变量命名,大小写,间距,标识,括号放置等.

c c++ coding-style

148
推荐指数
6
解决办法
11万
查看次数

用于启用详尽且详细的g ++警告的标志

通常在C下gcc,我将从以下一组警告标志开始(从多个来源痛苦地组装):

-Wall -Wextra -Wformat-nonliteral -Wcast-align -Wpointer-arith -Wbad-function-cast \
-Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Winline -Wundef \
-Wnested-externs -Wcast-qual -Wshadow -Wwrite-strings -Wno-unused-parameter \
-Wfloat-equal -pedantic -ansi
Run Code Online (Sandbox Code Playgroud)

我将使用这组警告构建(至少我的调试版本)并修复我可能做的所有事情(通常是一切),然后只删除标记,如果它们不相关或不可修复(几乎从不这样).有时,-Werror如果我必须在编译时离开,我也会添加.

我只是拿起C++(是的,我落后了15年),我想从右脚开始.

我的问题是:是否有人为C++预先编译了类似的完整警告标志集g++?(我知道其中很多都是一样的.)

c++ warnings g++

113
推荐指数
3
解决办法
4万
查看次数

选择静态代码分析工具

我正在开发一个项目,我在UNIX环境中用C编码.我一直在使用lint工具来检查我的源代码.Lint已经存在了很长时间(自1979年以来),任何人都可以建议我可以使用更新的代码分析工具吗?优选地是免费的工具.

c unix testing

60
推荐指数
6
解决办法
5万
查看次数

在大型C++遗留应用程序中查找"死代码"

我目前正在开发一个大型和旧的C++应用程序,在我之前有许多开发人员.项目,类和函数中有很多"死代码",任何人都不会使用它们.

有哪些工具可用于C++分析大型代码库以检测和重构死代码?注意:我不是在谈论像gcov这样的测试覆盖率工具.

你如何在项目中找到死代码?

c++ legacy visual-c++

54
推荐指数
2
解决办法
2万
查看次数

堆栈大小估计

在多线程嵌入式软件(用C或C++编写)中,必须为线程提供足够的堆栈空间,以使其能够完成其操作而不会溢出.在某些实时嵌入式环境中,正确调整堆栈大小至关重要,因为(至少在我使用过的某些系统中),操作系统不会为您检测到这一点.

通常,在创建线程时(即在pthread_create()等的参数中)指定新线程(除主线程之外)的堆栈大小.通常,这些堆栈大小被硬编码为在最初编写或测试代码时已知良好的值.

但是,对代码的未来更改通常会破坏硬编码堆栈大小所基于的假设,并且在一个重要的日子里,您的线程进入其调用图的更深层分支之一并溢出堆栈 - 从而导致整个系统崩溃或者默默地腐蚀记忆.

在线程中执行的代码在堆栈上声明struct实例的情况下,我个人已经看到了这个问题.当结构体被扩充以容纳额外数据时,堆栈大小相应地膨胀,可能允许堆栈溢出发生.我想这对于已建立的代码库来说可能是一个巨大的问题,其中无法立即知道向结构添加字段的全部效果(太多的线程/函数来查找使用该结构的所有位置).

由于对"堆栈大小"问题的通常响应是"它们不可移植",因此我们假设编译器,操作系统和处理器都是此调查的已知数量.我们也假设没有使用递归,所以我们没有处理"无限递归"场景的可能性.

有哪些可靠的方法来估计线程所需的堆栈大小?我更喜欢离线(静态分析)和自动方法,但欢迎所有想法.

c c++ embedded stack static-analysis

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

这是什么意思?int foo = foo + 4;

#include <iostream>

int main(int argc, char** args) {
  int foo = foo + 4;
  std::cout << foo << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

还有一个后续问题,是否有一个编译器标志来阻止这种事情?我发现-Wall有时会工作,最好是完全防止它.

My compiler:  
g++ -v  
Using built-in specs.  
Target: i486-linux-gnu  
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.3-4ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu  
Thread model: posix  
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5)  
Run Code Online (Sandbox Code Playgroud)

c++

20
推荐指数
2
解决办法
2912
查看次数

是否有C/C++的Findbugs和/或PMD等价物?

我最近被问及Coverity Prevent的替代方案,其代码库包括C/C++和Java.显然,在Java方面,可用的免费工具包括Findbugs(编译代码分析)和PMD(静态代码分析).它们非常强大,特别是当您开始研究与IDE的集成时(同样,它是免费的).

但是,当您开始使用各种编译器,体系结构等进入C/C++领域时,事情会很糟糕.

我已经为Java方面提出了各种工具,包括Findbugs和PMD.当我考虑使用以下指标时,我正在寻找的是C/C++方面的最佳选择:

  1. 价格:免费更好,但可以通过更好的价值打败.但是,每行代码收费的定价模型令人恐惧.
  2. 功能集:这个工具如何让我的生活更美好?在我检查错误之前,在我们发送代码之前,它会以什么方式检测我的错误等?
  3. 可用性:我可以在办公桌上使用该工具吗?我可以分享报告和/或调查结果吗?我可以将该工具与Fogbugz(我们在我的小组中使用)集成吗?我可以将该工具集成到CruiseControl(或等效产品)中吗?

最终的工具将是Findbugs和PMD具有相同功能集的组合,并且每个座位的零美元都是有用和可用的.

c c++ java findbugs pmd

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

Linux中的C++静态代码分析器

可能重复:有
哪些开源C++静态分析工具可用?

有没有人知道Linux中的C++代码的开源,良好的静态代码分析器?这个想法是在代码进入代码审查状态之前捕获编程错误.有可能为工具添加规则会很棒.有人知道这样的工具吗?

c++ linux open-source static-analysis

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

如何运行GCC/Clang进行静态分析?(仅限警告)

如果没有编译代码,我希望GCC或Clang报告警告.
是否可以仅运行编译器进行静态分析?
我找不到传递编译器警告标志的方法,并告诉它不要编译.

编辑:刚发现clang有静态分析器

c++ compiler-construction gcc static-analysis clang

15
推荐指数
1
解决办法
7952
查看次数

你有没有比较过静态分析工具Klocwork和Findbugs?

我们使用Klocwork作为静态分析工具.

Klocwork是一种商业工具,具有许多优点,但也存在假阳性等局限性.

我想知道谁曾将Klocwork与Findbugs等其他开源工具进行比较.

通常,已知商业工具比开源工具更可靠.

但我认为Klocwork在特定业务领域也有一些可靠的问题,比如android.

你能否说Klocwork优于其他开源工具,尤其是Findbugs在误报和漏报方面?

code-analysis static-analysis findbugs klocwork

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