Способ статического анализа, оборудование и устройство и компьютерно-читаемый носитель данных

1. Способ статического анализа, содержащий этапы, на которых:
принимают первый запрос, при этом первый запрос используется, чтобы выполнять анализ проблемы в отношении первого объекта, и первый объект содержит по меньшей мере один исходный файл;
выполняют анализ проблемы в отношении единицы трансляции (TU), ассоциированной с первым объектом, чтобы формировать результат анализа проблемы для первого объекта; и
отправляют результат анализа проблемы.
2. Способ по п. 1, в котором выполнение анализа проблемы в отношении TU, ассоциированной с первым объектом, для формирования результата анализа проблемы для первого объекта содержит этапы, на которых:
сканируют исходный файл, содержащийся в первом объекте, чтобы формировать очередь TU, при этом очередь TU содержит N TU, причем каждая TU в очереди TU ассоциирована с по меньшей мере одной функцией в одном исходном файле, и N является целым числом, большим или равным 1; и
выполняют, на основе очереди TU, анализ проблемы в отношении функции, ассоциированной с N TU в очереди TU, чтобы формировать результат анализа проблемы для первого объекта.
3. Способ по п. 2, в котором выполнение, на основе очереди TU, анализа проблемы в отношении функции, ассоциированной с N TU в очереди TU, для формирования результата анализа проблемы первого объекта содержит этапы, на которых:
выбирают первую TU в очереди TU и определяют первый набор функций, ассоциированный с первой TU, при этом первый набор функций содержит по меньшей мере одну функцию в исходном файле, ассоциированном с первой TU;
анализируют первую функцию и определяют результат анализа первой функции, при этом первая функция является любой функцией в первом наборе функций, и результат анализа первой функции содержит по меньшей мере одно из соотношения вызовов первой функции и проблемы качества первой функции;
когда существует функция, имеющая соотношение вызовов с первой функцией, анализируют второй набор функций и определяют результат анализа функции во втором наборе функций, при этом второй набор функций содержит по меньшей мере одну функцию, имеющую соотношение вызовов с первой функцией; и
формируют результат анализа проблемы для первого объекта, когда анализ всех TU в очереди TU завершается.
4. Способ по п. 3, при этом способ дополнительно содержит этап, на котором удаляют первую TU из очереди TU, после того как анализ всех функций, ассоциированных с первой TU в очереди TU, завершен.
5. Способ по п. 3, в котором каждая TU в очереди TU содержит популярность, причем популярность используется, чтобы идентифицировать количество раз, которое вызывается функция в TU, ассоциированной с популярностью, и при упомянутом выборе первой TU в очереди TU первую TU выбирают на основе популярности TU в очереди TU, при этом идентификатор популярности первой TU выше первого порогового значения.
6. Способ по п. 5, при этом способ дополнительно содержит этапы, на которых:
обновляют популярность TU в очереди TU на основе популярности функции, ассоциированной с TU в очереди TU; и
ранжируют TU в очереди TU на основе обновленной популярности.
7. Устройство статического анализа, содержащее:
принимающий модуль, причем принимающий модуль выполнен с возможностью принимать первый запрос, при этом первый запрос используется, чтобы выполнять анализ проблемы в отношении первого объекта, и первый объект содержит по меньшей мере один исходный файл;
модуль обработки, при этом модуль обработки выполнен с возможностью осуществлять анализ проблемы в отношении единицы трансляции (TU), ассоциированной с первым объектом, чтобы формировать результат анализа проблемы для первого объекта; и
отправляющий модуль, при этом отправляющий модуль выполнен с возможностью отправлять результат анализа проблемы.
8. Устройство по п. 7, в котором модуль обработки конкретно выполнен с возможностью:
сканировать исходный файл, содержащийся в первом объекте, чтобы формировать очередь TU, при этом очередь TU содержит N TU, причем каждая TU в очереди TU ассоциирована с по меньшей мере одной функцией в одном исходном файле, и N является целым числом, большим или равным 1; и
выполнять, на основе очереди TU, анализ проблемы в отношении функции, ассоциированной с N TU в очереди TU, чтобы формировать результат анализа проблемы для первого объекта.
9. Устройство по п. 8, в котором модуль обработки конкретно выполнен с возможностью:
выбирать первую TU в очереди TU и определять первый набор функций, ассоциированный с первой TU, при этом первый набор функций содержит по меньшей мере одну функцию в исходном файле, ассоциированном с первой TU;
анализировать первую функцию и определять результат анализа первой функции, при этом первая функция является любой функцией в первом наборе функций, и результат анализа первой функции содержит по меньшей мере одно из соотношения вызовов первой функции и проблемы качества первой функции;
когда существует функция, имеющая соотношение вызовов с первой функцией, анализировать второй набор функций и определять результат анализа функции во втором наборе функций, при этом второй набор функций содержит по меньшей мере одну функцию, имеющую соотношение вызовов с первой функцией; и
формировать результат анализа проблемы для первого объекта, когда анализ всех TU в очереди TU завершается.
10. Устройство по п. 9, в котором модуль обработки конкретно выполнен с возможностью удалять первую TU из очереди TU, после того как анализ всех функций, ассоциированных с первой TU в очереди TU, завершен.
11. Устройство по п. 9, при этом каждая TU в очереди TU содержит популярность, причем популярность используется для идентификации количества раз, которое вызывается функция в TU, ассоциированной с популярностью, и модуль обработки конкретно выполнен с возможностью выбирать первую TU на основе популярности TU в очереди TU, при этом идентификатор популярности первой TU выше первого порогового значения.
12. Устройство по п. 11, в котором модуль обработки конкретно выполнен с возможностью:
обновлять популярность TU в очереди TU на основе популярности функции, ассоциированной с TU в очереди TU; и
ранжировать TU в очереди TU на основе обновленной популярности.
13. Устройство статического анализа, содержащее процессор, причем процессор соединен с памятью, при этом память приспособлена хранить компьютерную программу или инструкции, и процессор выполнен с возможностью исполнять компьютерную программу или инструкции в памяти, с тем чтобы устройство выполняло способ по любому одному из пп. 1-6.
14. Машиночитаемый носитель данных, при этом машиночитаемый носитель данных хранит компьютерную программу или инструкции, и когда компьютерная программа или инструкции исполняются, обеспечивается выполнение компьютером способа по любому одному из пп. 1-6.