К сожалению у меня последнее время не хватает времени на написание статей для бложика, но буду стараться его выцарапать. А пока что ловите перевод статьи про статический анализатор C - Saturn. Мне он нужен был только для экзамена по английскому, но пару комментариев я здесь оставлю.
Оригинал и перевод здесь.
А теперь комментарии. Сразу скажу, что на практике сие счастье я не тестировал.
Оригинал и перевод здесь.
А теперь комментарии. Сразу скажу, что на практике сие счастье я не тестировал.
Анализы, разработанные для Saturn нашли тысячи неизвестных ранее ошибок в широко используемых программных системахЭмм... ну, ок.
Размер функции ограничен константой. Понятно, что разработчик анализа не может отвечать за размер функции, но на практике можно убедиться, что это ограничение хорошо сопоставимо с реальными программами.
Моя практика расходится с их практикой. Я каждый день сталкиваюсь с функциями по нескольку тысяч строк, которые надо как-то обрабатывать. Суть в том, что ядро написано руками и не самыми глупыми людьми, поэтому больших функций там быть не может. Но стоит запустить какой-нибудь кодогенератор по типу bison, и гигантский switch на несколько сотен вариантов вам гарантирован.
Тем не менее другое достоинство анализа функций по отдельности том, что этот процесс легко параллелизуется, ограничиваясь только анализом зависимостей между функциями. Мы используем кластер из 40-100 ядер для запуска анализов Saturn в параллельном режиме, и обычно достигаем 80-90% эффективности.
Да, языки логического программирования отлично параллелизуются, но не у всех есть кластер на 40-100 ядер...
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.