Анализатор параллельного кода

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

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

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

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

3 ответа

Решение

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

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

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

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

Еще немного:

Другие вопросы по тегам