Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 什么是cppcheck规则文件<;模式>;语法?_Regex_Customization_Pcre_Cppcheck - Fatal编程技术网

Regex 什么是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

我已经找了一段时间了,但到处都找不到这个。我发现了一个很好的cppcheck规则文件示例,它显示了一个简单的模式

<?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有任何评论?