Компания Я работаю также имеет большой VB6 проект, который встречается ограничение идентификатора. Я разработал способ точно подсчитать количество оставшихся идентификаторов, и это было включено в наш процесс сборки для этого проекта.
После попытки нескольких инструментов без успеха я наконец понял, что сама VB6 IDE точно знает, сколько идентификаторов осталось. Фактически, VB6 IDE выдает ошибку «из памяти» при добавлении одной переменной за ее пределы.
Воспользовавшись этим фактом, я написал проект надстройки VB6, который сначала компилирует загруженный в настоящий момент проект в среде IDE, а затем добавляет в проект уникальные имена переменных, пока не выдает ошибку. Когда возникает ошибка, она записывает количество идентификаторов, добавленных до ошибки, в число оставшихся идентификаторов.
Этот номер хранится в файле в месте, известном нашему автоматизированному процессу сборки, который затем считывает это число и сообщает об этом команде разработчиков. Когда он становится ниже ценности, с которой нам удобно, мы планируем некоторое время рефакторинга и переходим больше кода из этого проекта в проекты DLL. Мы используем это в производстве уже несколько лет и зарекомендовали себя как надежный процесс.
Чтобы непосредственно ответить на вопрос, использование надстройки - единственный способ узнать точное количество оставшихся идентификаторов. Хотя я не могу использовать код надстройки, который использует наш проект, я могу сказать, что не так много кода, и разработка не заставила себя долго ждать.
Microsoft имеет приличное руководство для того, как создать Add-In, который может получить вы начали: https://support.microsoft.com/en-us/kb/189468
Вот некоторые важные детали, характерные для подсчета идентификаторов:
- VB6 IDE не будет последовательно вызывать ошибку, когда из идентификаторов до тех пор, пока не будет скомпилирован текущий загруженный проект. Наша надстройка программно делает это, прежде чем добавлять идентификаторы, чтобы гарантировать точный подсчет. Если проект не может быть скомпилирован, то точное количество не может быть получено.
- Для нового пустого проекта VB6 доступно 32 500 идентификаторов.
- Учитываются только имена уникальных идентификаторов. Две локальные переменные с одинаковым именем в двух разных подпрограммах считаются только одним идентификатором.
Я хочу, чтобы этот инструмент работал ... Он показывает количество объявлений переменных (как и CodeSMART), но он по-прежнему не показывает количество уникальных идентификаторов. Если у вас есть три подсетей, в которых все содержат одну и ту же переменную «myvar», то она считается тремя объявлениями переменных, но только одним уникальным идентификатором. Анализатор проекта показывает только количество объявлений ... –