Поймите, что API не может извлечь информацию о «вызовах» и «вызывается» для функций со многими ссылкамиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Поймите, что API не может извлечь информацию о «вызовах» и «вызывается» для функций со многими ссылками

Сообщение Anonymous »

Я использую API понимания для анализа своей базы кода и извлечения информации о том, какие функции вызывает данная функция и какие функции ее вызывают. Однако я столкнулся с проблемой, из-за которой сценарию не удается извлечь эту информацию для функций, которые имеют большое количество «вызовов» и «вызываемых» ссылок. Кажется, что сценарий зависает или автоматически завершает работу с ошибкой для этих функций, вероятно, из-за размера набора ссылок.
Вот сценарий, который я использую:

Код: Выделить всё

# Display the Info Browser for a search string
import understand
import sys

def sortKeyFunc(ent):
return str.lower(ent.longname())

def run(db, searchstring):
list = []
ents = db.lookup(searchstring, "function,method,procedure")
for func in sorted(ents, key=sortKeyFunc):
# If the file is from the Ada Standard library, skip to the next
if func.library() != "Standard":
list.append(func)
if list:
for line in list[-1].ib():
print(line, end="")
else:
print(f"No entities found for search string '{searchstring}'")
print("\n", end="")

if __name__ == '__main__':
# Check if two arguments are provided (database path and function name)
if len(sys.argv) < 3:
print("Usage: python script.py 
 ")
sys.exit(1)

# Open Database
db_path = sys.argv[1]
function_name = sys.argv[2]
db = understand.open(db_path)

# Run the search with the specified function name
run(db, function_name)

db.close()
Это отлично работает для большинства функций, но не работает, если функция имеет очень большое количество ссылок. В частности, метод ib(), похоже, борется с этой проблемой, и я подозреваю, что он пытается обработать слишком много данных одновременно. Для таких функций сценарий либо зависает, либо не выдает никаких результатов.
Есть ли более эффективный способ извлечь только данные «вызовов» и «вызываемых» для функции без получения всего представления информационного браузера?
Как мне справиться со случаями, когда количество ссылок слишком велико для обработки, или, по крайней мере, сделать процесс более надежным?
Будем очень признательны за любые идеи и предложения. Спасибо!


Подробнее здесь: https://stackoverflow.com/questions/792 ... r-function
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Поймите ошибку времени компиляции с помощью справочника по методу.
    Anonymous » » в форуме JAVA
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Когда использовать перемещение в вызовах функций [дубликат]
    Гость » » в форуме C++
    0 Ответы
    77 Просмотры
    Последнее сообщение Гость
  • Каково время жизни временных аргументов во вложенных вызовах функций?
    Гость » » в форуме C++
    0 Ответы
    23 Просмотры
    Последнее сообщение Гость
  • Странное время обработки при повторных вызовах функций. Чем это можно объяснить?
    Гость » » в форуме JAVA
    0 Ответы
    36 Просмотры
    Последнее сообщение Гость
  • Проблема параллелизма Python Asyncio: смешанные ответы при последовательных вызовах функций с GPT4
    Anonymous » » в форуме Python
    0 Ответы
    82 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»