目前我正在开展一个相当大的项目.为了提高代码质量,我们决定对每个函数强制执行返回值(错误代码)的处理.GCC支持有关函数返回值的警告,但函数定义必须在以下标志之前.
static __attribute__((warn_unused_result)) ErrorCode test() { /* code goes here */ }
Run Code Online (Sandbox Code Playgroud)
我想实现一个bashscript来解析整个源代码并发出警告,以防万一
__attribute__((warn_unused_result))
Run Code Online (Sandbox Code Playgroud)
不见了.请注意,需要此类修改的所有函数都返回一个名为ErrorCode的类型.你认为这可以通过bash脚本实现吗?
我正在尝试使用mkdir命令创建一个文件夹树,该命令应该具有以下结构:
rootfs
??? Fol1
? ??? Fol11
? ??? Fol12
??? Fol2
Run Code Online (Sandbox Code Playgroud)
我使用成功创建了这棵树
mkdir -p /rootfs/{Fol1/{Fol11,Fol12},Fol2}
Run Code Online (Sandbox Code Playgroud)
但是文件夹rootfs应该是可变的,这就是我尝试的原因
ROOT=/rootfs
FOLDERTREE=/{Fol1/{Fol11,Fol12},Fol2}
mkdir -p "$ROOT$FILETREE"
Run Code Online (Sandbox Code Playgroud)
虽然echo "$ROOT$FILETREE"收益/rootfs/{Fol1/{Fol11,Fol12},Fol2}确实我得到一个错误的filetree
rootfs
??? {Fol1
??? {Fol11,Fol12},Fol2}
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?
我目前正在努力提高多个开发人员的C++项目(在Linux下)的质量.我们项目的几乎所有功能都返回一定的ErrorCode.我想强制执行从函数返回的错误代码的处理(避免忘记),因此我正在寻找一个开源工具/ bash脚本,它解析我的代码并确定是否在没有赋值的情况下使用函数并发出警告如果是这样.例如
setMyVar(uint32_t bla); // Naughty
Run Code Online (Sandbox Code Playgroud)
代替
ErrorCode currentError = setMyVar(uint32_t bla); // Potentially naughty but I am ok with that
Run Code Online (Sandbox Code Playgroud)
还必须是该过程适用于名称空间的使用,例如
ErrorCode currentError = PM::initialize();
Run Code Online (Sandbox Code Playgroud)
理想情况下
if( PM::initialize() == PM::Init_Error)
Run Code Online (Sandbox Code Playgroud)
也被认为是正确的用法.有什么建议如何解决这类问题,而无需实现复杂的代码解析器?
编辑:我也想避免修改我的源代码或我希望有一个只读脚本来识别问题.
给我一个大的向量,它本身包含特定数据类型的向量,例如std::vector<std::vector<double> > foo.我试图从foo中检索一个随机元素foo [idx],这样foo[idx]就分别是非空的foo[idx].empty() == false.
我天真的猜测是从foo我的约束foo[idx].empty() == false完成之前选择随机元素.
然而,foo非常稀疏地填充非空向量的情况很可能.因此,我的方法很可能会非常缓慢.
是否有更好的方法或我应该考虑完全不同的数据结构?