我正在进行一个软件项目,发现了许多错误使用find_first_of()、find_first_not_of()、find_last_of(。这些std::string方法为一组要搜索的字符使用字符串参数,而开发人员真正的意思是使用compare()、find()或rfind(),它们为一个要搜索的字符串使用字符串参数。
现在,如果能教育每个人,再也不会发生这种情况,那就太好了。然而,我想创建一个代码检查器来识别可疑的用法,并标记它们以供审查,试图以半通用的方式半自动化地解决这个问题。
我正在寻找好的启发式方法来发现大多数问题,很少有误报。什么样的正则表达式搜索模式可能有效,或者有人能想出其他建议来尝试自动解决这个问题,以获得大多数出现的情况吗?
请不要草率地回答雇佣更好的开发人员之类的问题,我希望在现有资源的情况下改善这种情况。
实际上,在这种情况下,您需要目视检查对find_first_of
和朋友的每次调用。看起来通常不会有很多电话,当你验证它们是否正确时,你可以用某种方式对它们进行标记。通过检查所有电话,您可以确信现有问题已得到解决。
我能想到的唯一启发式方法是,如果"compare to"字符串不是文字或常量,那么它更有可能是不正确的。