На жаль, не так багато підручників з цієї теми. Я думаю, що найкращий спосіб сьогодні вивчити програмний аналіз - це оглянути різні доступні курси, пограти з кількома реалізаціями, а потім переглянути декілька наукових робіт для ваших конкретних потреб. Далі йде дуже невеликий вибірки того, що там є. Оскільки ви спеціально згадали про орієнтовані на компілятори аналізи, було легко знайти, я не висвітлюю такий матеріал нижче.
Веб-ресурси
Це статті, які наголошують на застосуванні статичного аналізу поза контекстом компіляції.
Обговорення Reverse Engineering Reddit з аналізу програм має багато корисних посилань.
Mozilla Wiki про абстрактне тлумачення.
Розгортання статичного аналізу , стаття доктора Доббса від Флеш Шерідан
Кілька мільярдів рядків коду пізніше: Використання статичного аналізу для пошуку помилок у реальному світі , Ел Бессі, Кен Блок, Бен Челф, Енді Чоу, Брайан Фултон, Сет Халлем, Чарльз Анрі-Грос, Ася Камський, Скотт Макпік, Доусон Енглер в комунікаціях ОСББ.
Університетські курси з програмного аналізу
- Андер Мёллер в університеті Архуса викладає курс, який охоплює об’єктно-орієнтовані та веб-технології.
- Бор-Юх Еван Чанг в Університеті Колорадо Боулдер має фундаментальний курс, який передбачає реалізацію OCaml та аспірантуру .
- Бен Хардекопф в Каліфорнійському університеті Санта-Барбара раніше мав чудовий набір завдань, але вони більше не доступні в Інтернеті. Деякі студенти, які пройшли його курс, схоже, зробили доступною реалізацію Python .
- Маркус Мюллер-Ольм має аспірантуру з аналізу Android .
- Рейнхард Вільгельм в Університеті Сарбрюккен викладає аспірантуру, яка охоплює програми статичного аналізу, такі як аналіз часу, прогнозування поведінки кеша та деякий аналіз форми.
- Суміт Гулвані з MSR виклав хороший курс зі статистичного оцінювання споживання ресурсів програм (часу / пам'яті) в літній школі штату Орегон з мов програмування .
- Кушик Сен в Каліфорнійському університеті в Берклі викладає курс, який фокусується на пошуку помилок і теми якого охоплюють конкламічне виконання та перевірку моделей програмного забезпечення.
- Джефрі Фостер в університеті Меріленда викладає курс, який охоплює системи типів, перевірку моделей, аналіз псевдонімів та багато іншого звичайного матеріалу.
- Патрік Кузот провів рік у MIT та викладав всебічний, фундаментальний курс з абстрактної інтерпретації. Завдання включають в себе реалізацію OCaml, яка переходить від конкретної семантики збирання до деяких алгоритмічно нетривіальних ідей.
- Аспірантура по абстрактної інтерпретації викладається деякими лідерами в цій галузі є хорошим місцем , щоб нагнати ще більше теорії.
- У 2009 році Патрік Кузо виклав короткий курс з абстрактної інтерпретації в літній школі в Орегоні з мов програмування .
Інструменти для гри
Я не перераховую тут багато інструментів дослідження. Є багато таких, але я спробував перерахувати декілька, які ви можете завантажити та грати, щоб краще зрозуміти область.
Interproc - це дуже навчальний інструмент, з яким можна дізнатися про числовий статичний аналіз.
Бібліотека обчислення числових фартухів, якщо ви справді займаєтеся числовим аналізом.
Slayer - це інструмент аналізу фігур від Microsoft Research.
jStar - це аналізатор для Java, заснований на логіці розділення.
Microsoft Research має численні групи, що розробляють численні інструменти, багато з яких доступні для завантаження або мають веб-демонстрації. Я не можу тут перерахувати все, і пропоную вам пограти з ними.
Є набагато більше, але цього, мабуть, достатньо, щоб ви не зайнялися на деякий час.