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