2

私はソフトウェア プロジェクトに取り組んでおり、find_first_of()、find_first_not_of()、find_last_of()、および find_last_not_of() が誤って使用されている例を数多く見つけました。これらの std::string メソッドは、検索する文字セットの文字列引数を取りますが、開発者は実際には、検索する文字列の文字列引数を取る compare()、find()、または rfind() を使用することを意味します。

全員を教育し、二度とこのようなことが起こらないようにすることは素晴らしいことですが、コード インスペクターを作成して、疑わしい使用法を特定し、レビュー用にフラグを立てて、半一般的な方法でこの問題の解決を半自動化しようと考えています。ファッション。

誤検知がほとんどないほとんどの問題を見つけるための優れたヒューリスティックを探しています。どの正規表現検索パターンが機能する可能性がありますか、またはこの問題の解決策を自動化してほとんどの出現を取得するための他の提案を誰かが考えることができますか?

より優れた開発者を雇うことなどについて、きびきびとした回答はしないでください。利用可能なリソースを考慮して、状況を改善したいと考えています。

4

1 に答える 1

2

これは実際には、友人へのすべての呼び出しを視覚的に検査する必要がある状況である可能性がありますfind_first_of。通常は多くの呼び出しがあるようには見えません。正しいことを確認するときに、何らかの方法でそれらにタグを付けることができます。すべての呼び出しを検査することにより、既存の問題が解決されたことを確信できます。

私が想像できる唯一のヒューリスティックは、「比較対象」文字列がリテラルまたは定数でない場合、正しくない可能性が高いということです。

于 2011-06-20T22:00:17.067 に答える