Метод автоматического обнаружения случаев неправильного find_first_of () и семейства - PullRequest
2 голосов
/ 21 июня 2011

Я работаю над программным проектом и нашел множество примеров, где find_first_of (), find_first_not_of (), find_last_of () и find_last_not_of () используются неправильно.Эти методы std :: string принимают строковый аргумент для набора символов для поиска, тогда как на самом деле разработчик подразумевает использование compare (), find () или rfind (), которые принимают строковый аргумент для поиска строки.

Теперь было бы здорово обучить всех и никогда больше не повторять этого, однако я хотел бы создать инспектор кода, чтобы идентифицировать подозрительные использования и помечать их для проверки, чтобы попытаться полуавтоматизировать разрешение этого.проблема в полуобщем стиле.

Я ищу хорошую эвристику, чтобы найти большинство проблем с несколькими ложными срабатываниями.Какие шаблоны поиска регулярных выражений могут работать, или кто-то может подумать о других предложениях, чтобы попытаться автоматизировать решение этой проблемы, чтобы получить большинство случаев?

Пожалуйста, никаких быстрых ответов о найме лучших разработчиков или тому подобное, я хотел быулучшить ситуацию с учетом имеющихся ресурсов.

1 Ответ

2 голосов
/ 21 июня 2011

В действительности это может быть ситуация, когда вам нужно визуально проверять каждый звонок find_first_of и друзьям. Кажется, что звонков обычно не бывает много, и вы можете пометить их каким-то образом, когда убедитесь, что они правильные. Проверяя все звонки, вы уверены, что существующие проблемы решены.

Единственная эвристика, которую я могу себе представить, это то, что если строка «сравнить с» не является литералом или константой, скорее всего, она будет неправильной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...