Анализатор параллельного кода - PullRequest
4 голосов
/ 23 мая 2011

Мне было интересно, существует ли какая-либо платформа или приложение (приложение) / программа, которая может анализировать параллелизм любого кода Java?

Если инструмент знает все реализации классов и методов, поставляемых jre, он сводится к простому анализу синхронизированных блоков и методов и их иерархий вызовов. Отсюда он может создать сеть Петри и точно сказать вам, можете ли вы когда-нибудь зайти в тупик.

Я что-то упускаю или это действительно так просто? Тогда должен быть какой-нибудь крутой инструмент, делающий подобные вещи? Или такой инструмент сообщит о слишком большом количестве возможных тупиков, которые полностью сохраняются из-за некоторой базовой программной / бизнес-логики? Сети Петри должны быть достаточно мощными, чтобы справляться с этими ситуациями?

Это сэкономило бы столько человеко-часов на поиск ошибок, которые могли бы или не могли быть связаны с проблемами мертвой блокировки.

Ответы [ 3 ]

5 голосов
/ 23 мая 2011

Хотя (много) ошибок, связанных с параллелизмом, можно найти с помощью статического анализа кода, это не относится к каждому типу ошибок.Некоторые ошибки появляются только во время выполнения при определенных условиях.

У IBM есть инструмент под названием ConTest , который "планирует выполнение потоков программы таким образом, чтобы программные сценарии, которые могут содержать условия гонки, взаимоблокировки и другие периодически возникающие ошибки (собирательно называемые проблемами синхронизации) вынуждены появляться с высокой частотой ".

Это требует запуска (модульных) тестов для инструментальной версии вашего приложения.Дополнительная справочная информация в этой статье developerWorks .

1 голос
/ 23 мая 2011

Этот документ описывает инструмент, который выполняет статический анализ библиотеки и определяет, возможен ли тупик.

0 голосов
/ 02 декабря 2011

Еще немного:

...