PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » Получить локальные переменные процедуры (Инструмент IDE)


Получить локальные переменные процедуры (Инструмент IDE)

Сообщений 1 страница 5 из 5

1

Ссылка на код

Бывает пишешь код и надо потом все переменные объявить в Protected и начинаешь копировать/вставить все переменные, потом запускаешь с EnableExplicit и выдаётся ошибки ещё на несколько переменных. Чтобы сделать автоматически и сделан этот инструмент. Он с помощью библиотеки SyntaxHighlighting.dll идеально находит все переменные, будь это объявление или приравнивание, с типом и без. То есть выделяем функцию от ключевого слова Procedure, включая его, до конца процедуры, жмём хоткей и в буфере обмена готовая строка для вставки. Переменные передаваемые в параметрах будут исключены. Дубликаты устраняются.

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

+1

2

Самое то штудировать мой старый код. Лайк однозначно!
А есть ли инструмент, выявляющий неиспользуемые переменные, константы, структуры, а также то, как они используются?
Иногда бывает и EnableExplicit есть, но некоторые тестовые объекты остаются на релизах.

Отредактировано Webarion (20.03.2023 02:18:38)

0

3

Webarion написал(а):

А есть ли инструмент, выявляющий неиспользуемые переменные, константы, структуры

SearchForUnusedIdentifiers
Можно ещё тут почитать.

Отредактировано AZJIO (20.03.2023 10:36:42)

0

4

Обновил код, сделал отдельный исходник для Linux. Собственный анализатор без использования SyntaxHighlighting.dll.

Алгоритм следующий
Сначала проходит посимвольный анализатор чтобы обнулить комментарии, строки, ASM-код, элементы структуры.
Потом подключаются регулярные выражения, чтобы почистить от API-функций, констант, чисел, объявления структур, взятие указателя с переменной, сделать захват разного рода переменных в отдельные массивы, например str$, List(), *Point и т.д., с очисткой уже захваченных.
Рядом с инструментом два списка - встроенные функции и ключевые слова. Проверяется что взятые со скобкой могут быть список, массив, карта, а могут быть функции, поэтому имя проверяется со списком функций (пока не сделал захват функций текущего кода, чтобы их тоже исключить). Также оставшиеся слова, которые могут быть переменными или ключевыми словами проверяются со списком ключевых слов.
В итоге остаётся минимум, почти идеально. Ещё бы хотелось взять подвыражения Global, чтобы вывести их отдельной строкой.

В качестве параметра задаются:
%SELECTION "%TEMPFILE"
выделенное может быть внутренняя часть функции.

Отредактировано AZJIO (04.04.2024 15:52:38)

0

5

Обновил исходник для Linux, который также применим и для Windows, и собственно добавил его скомпилированным.
1. Проверяет все функции исходника и добавляет их в список исключений, чтобы не определять их как списки (лист, карта, массив).
2. Определяет число захваченных функций, чтобы правильно использовать область видимости одну из Protected, Define, Global
3. Для последнего списка без типов добавил перенос если больше 10.
4. Добавил регвыры чистки: Hex-чисел, суффиксов-типов, чтобы не давали ложных списков.
5. Добавил ещё несколько ключевых слов в KeyWord.txt (надо большой код попробовать, чтобы исключить все ключевые слова)

Ещё обновление
Добавлено игнор макросов, модулей, импортов, объявление структур через точку (проверено на сложных инклудах pbi)

Отредактировано AZJIO (05.04.2024 17:15:16)

0


Вы здесь » PureBasic - форум » PureBasic для Windows » Получить локальные переменные процедуры (Инструмент IDE)