2011-06-20 23 views
2

我正在開發一個軟件項目,並發現了許多不正確使用find_first_of(),find_first_not_of(),find_last_of()和find_last_not_of()的示例。這些std :: string方法爲一組要搜索的字符提供一個字符串參數,而開發人員真正意味着使用compare(),find()或rfind(),它們需要一個字符串參數供字符串搜索。自動檢測不正確的find_first_of()和系列案例的方法

現在很好教育大家,永遠不會再發生這種情況,但是,我想創建一個代碼檢查器來識別可疑的用法並將它們標記爲審查,以試圖在此問題的解決方案中進行半自動化一個半通用的時尚。

我在尋找很好的啓發式方法來發現很少有誤報的大多數問題。什麼樣的正則表達式搜索模式可能會起作用,或者有人可能會想到其他建議,試圖自動解決此問題以獲得最多的事件?

請關於招聘更好的開發人員或類似問題的答案,我希望改善現有的資源情況。

+0

您可能有更好的運氣檢查程序的AST而不是使用正則表達式。 Dehydra或Treehydra項目可能很有用,LLVM也是如此。 – templatetypedef

回答

2

這實際上可能是您需要每直接檢查find_first_of和朋友的情況。似乎通常不會有很多電話,並且您可以通過某種方式標記它們,因爲您確認它們是正確的。通過檢查所有電話,您有信心解決現有問題。

我能想象的唯一啓發是如果「比較」字符串不是一個文字或常量,它更可能是不正確的。