Анализ кода C ++ с неявными конструкторами и перегруженными операторами - PullRequest
0 голосов
/ 02 февраля 2019

В C ++ можно определить множество вещей, которые будут выполняться неявно в других частях кода.Наиболее яркими примерами, вероятно, являются:

  • перегруженные операторы
  • Неявные вызовы конструктора

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

Но как мы можем анализировать код, использующий эти функции, или даже код, в котором мы не знаем, является ли этоcase?

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

К сожалению, по моему опыту, IDE также не оказывают большой помощи.(В основном я работаю с VS 2015 и 2017.)

Какие методы могут быть полезны для ответа на такие вопросы, как:

  • Есть ли какие-либо перегруженные операторы или неявные вызовы конструктора вкусок кода?

  • Где данный перегруженный оператор или неявный конструктор используется в кодовой базе?

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

...