我在一个软件项目中工作,发现了许多错误使用find_first_of()、find_first_not_of()、find_last_of()和find_last_not_of()的例子。这些std::string方法接受要搜索的一组字符的字符串参数,而开发人员实际上是想使用compare()、find()或rfind(),它们接受要搜索的字符串的字符串参数。
现在教育每个人并不让这种情况再次发生是很棒的,然而,我想创建一个代码检查器来识别可疑的用法,并标记它们进行审查,试图以半自动化的方式解决这个问题。
我正在寻找好的启发式方法来发现大多数问题,几乎没有假阳性。什么正则表达式搜索模式可能有效,或者有人能想出其他建议来尝试自动解决此问题,以获得最多的出现次数?
请不要急于回答关于雇用更好的开发人员或类似的问题,我希望在现有资源的情况下改善这种情况。
发布于 2011-06-20 22:00:17
这实际上可能是一种情况,在这种情况下,您需要直观地检查对find_first_of
和朋友的每个调用。看起来通常不会有很多调用,当你验证它们是否正确时,你可以用某种方式对它们进行标记。通过检查所有呼叫,您可以确信现有问题已得到解决。
我能想到的唯一的启发式方法是,如果"compare to“字符串不是文字或常量,那么它更有可能是不正确的。
https://stackoverflow.com/questions/6417592
复制