Regex 什么是cppcheck规则文件<;模式>;语法?
我已经找了一段时间了,但到处都找不到这个。我发现了一个很好的cppcheck规则文件示例,它显示了一个简单的模式Regex 什么是cppcheck规则文件<;模式>;语法?,regex,customization,pcre,cppcheck,Regex,Customization,Pcre,Cppcheck,我已经找了一段时间了,但到处都找不到这个。我发现了一个很好的cppcheck规则文件示例,它显示了一个简单的模式 <?xml version="1.0"?> <rule version="1"> <pattern>if \( p \) { free \( p \) ; }</pattern> <message> <id>redundantCondition</id> <severit
<?xml version="1.0"?>
<rule version="1">
<pattern>if \( p \) { free \( p \) ; }</pattern>
<message>
<id>redundantCondition</id>
<severity>style</severity>
<summary>Redundant condition. It is valid to free a NULL pointer.</summary>
</message>
</rule>
如果\(p\){free\(p\);}
冗余条件
风格
冗余条件。释放空指针是有效的。
只要所有的指针都命名为“p”,并且调用是“free”,它就可以很好地工作。如何更改“p”以匹配任何标识符?如何检查“免费”或“删除”?该模式是grep/awk/sed模式吗?我是一名Cppcheck开发人员 Cppcheck使用。因此,请使用遵循Perl规则的正则表达式 我不太擅长Perl正则表达式,所以我无法回答如何/是否可以匹配任何标识符(因为它应该匹配两次)
。。希望这至少有点帮助。根据我的正则表达式经验,我会试试这个
<?xml version="1.0"?>
<rule version="1">
<pattern>if \( (\w+) \) { free \( \1 \) ; }</pattern>
<message>
<id>redundantCondition</id>
<severity>style</severity>
<summary>Redundant condition. It is valid to free a NULL pointer.</summary>
</message>
</rule>
如果\(\w+){free\(\1\);}
冗余条件
风格
冗余条件。释放空指针是有效的。
其中,这些PCRE功能取代了原始示例的p
:
是一种单词模式(由字母数字字符和(\w)
)组成),包含在第1组中“
是对匹配模式的文本的反向引用\1
详细描述可以在Martin Moene的博客上找到:将p改为点(.),这样它就意味着任何字符后续问题。我有一个单行文件
foo=(char*)logMsg.c_str()
并使用“--rule=“.+””查找解析为“foo=logMsg”的内容。c_str()'。(char*)演员怎么了?如何在规则文件中测试该强制转换?在保存强制转换的内部存在“未简化”代码,但无法从规则访问此内部“未简化”代码。我想我们可以在规则文件中添加一个属性或其他东西,请求使用“未简化”代码。如果您需要,请随时在Cppcheck trac中打开一张票证。@DanielMarjamäki对-是否来自您的POV有任何评论?