Анализ чужого кода - кто как делает?
6530
14
GPRS_User
v.i.p.
Достался мне тут по наследству небольшой проектик (~4500 строк). На С, если кому интересно.
О проектике известно, что он работает, но в ряде случаев начинает глючить. Моя задача - поймать этот глюк.
Документирована программа отвратительно - описания нет, комментариев очччень мало и они, в большинстве случаев, бесполезны.
Прогнать тоже пока не на чем - платформа несколько отличается от PC
Поэтому на данный момент сижу, пытаюсь понять, что делает тот или иной кусок кода и откомментировать. И попутно у меня возникает вопрос - а нельзя ли этот процесс несколько облегчить? Нет ли инструментов, которые, проанализировав проект, вывели бы список вызовов, объявлений, определений и позволили бы быстро перемещаться по тексту от одного к другому? Нет ли каких-то общепринятых методик анализа?
Посоветуйте чего-нибудь :).
О проектике известно, что он работает, но в ряде случаев начинает глючить. Моя задача - поймать этот глюк.
Документирована программа отвратительно - описания нет, комментариев очччень мало и они, в большинстве случаев, бесполезны.
Прогнать тоже пока не на чем - платформа несколько отличается от PC
Поэтому на данный момент сижу, пытаюсь понять, что делает тот или иной кусок кода и откомментировать. И попутно у меня возникает вопрос - а нельзя ли этот процесс несколько облегчить? Нет ли инструментов, которые, проанализировав проект, вывели бы список вызовов, объявлений, определений и позволили бы быстро перемещаться по тексту от одного к другому? Нет ли каких-то общепринятых методик анализа?
Посоветуйте чего-нибудь :).
Ну а вот у вас хотя бы система контроля версий есть? А насчет поймать глюк - берешь и ловишь, в чем проблема?:)
Ну а вот у вас хотя бы система контроля версий есть?Откуда такое щастье?
А насчет поймать глюк - берешь и ловишь, в чем проблема?:)Ну я ж говорю, метод "запустил-посмотрел где глючит-подумал-поправил" мне не доступен по причине отсутсвия железяки, на которой ЭТО должно работать.
Не запуская код, сложно что-то отладить.
Можно прогнать разные инструменты, которые проверят, насколько "правильно" написан код, и даже что-то исправить. Но как вы поймете, что вы исправили именно то, что нужно?
В таких случаях я ставлю в код "затычки" - эмуляторы, которые позволяют программе исполняться на моем компьютере.
Можно прогнать разные инструменты, которые проверят, насколько "правильно" написан код, и даже что-то исправить. Но как вы поймете, что вы исправили именно то, что нужно?
В таких случаях я ставлю в код "затычки" - эмуляторы, которые позволяют программе исполняться на моем компьютере.
Бывает под камень фирма - производитель делает эмуляторы под ПС. Во всяком случае раньше видел подобное для какого-то микропроцессора...
Не запуская код, сложно что-то отладить.+1. Темболее 4500 строчек все-таки.
Сейчас читают
зимнее время (часть 2)
118292
1000
БЗОЖное (часть 4)
174304
1000
Мужика завести просто
51902
229
Было верно подмечено про эмуляторы. Надо поискать эмулятор платформы, под которую написан проект и попробовать запустить на нем.
Блин. Всего-то 4500строк, да еще и на языке... Нифига не понимаю куды мы котимся... делов-то. Каких-то 50 страниц текста. Помнится в году так 94-м разобрал 400кбайт кода с ассемблера на язык "С"... вручную и "между делом" под отладчиком. Ну уж больно игрушка понравилась...
И что стоит прогруммер, который телефонным тестом баг найти не могёт в таком малюсеньком куске... Фи.
И что стоит прогруммер, который телефонным тестом баг найти не могёт в таком малюсеньком куске... Фи.
О, какую тему вспомнили.
Значит, рассказываю.
Во-первых, проблема снялась сама по себе (не решилась, а снялась, да) - заказчик исчез в тумане.
Во-вторых, прошу учесть, что проектик был - самопальная GSM-сигналка на Atmel'ке, и ловить плавающий глюк в симуляторе и без периферии - задача та еще.
В-третьих, в заглавном посте темы вопрос, в основном, об инструментах, облегчающих навигацию в коде для более удобного его исследования.
PS: а кто такой телефонный тест? Гугл не знает.
Значит, рассказываю.
Во-первых, проблема снялась сама по себе (не решилась, а снялась, да) - заказчик исчез в тумане.
Во-вторых, прошу учесть, что проектик был - самопальная GSM-сигналка на Atmel'ке, и ловить плавающий глюк в симуляторе и без периферии - задача та еще.
В-третьих, в заглавном посте темы вопрос, в основном, об инструментах, облегчающих навигацию в коде для более удобного его исследования.
PS: а кто такой телефонный тест? Гугл не знает.
Эээ, я бы не был столь категоричен. 4500 строк это конечно не много, но все зависит от конкретной решаемой задачи (может там какая-нибудь математика, тогда вообще ж. еще и понять нужно а правильно ли формулы составили и насколько их адекватно запрограммировали), насколько грамотно и читабельно запрограммировано и т.п.
По теме: если ошибку не видно невооруженным взглядом, то можно сделать так: разобраться в коде и откомментировать его, при необходимости зарефакторить: сделать легко читаемым, модульным и т.п. Выделить железозависимый код в отдельные модули, для тестирования подменяя их заглушками (mocks). Написать тесты (смотри unit testing). Прогнать и посмотреть что получиться.
Не такая уж простая задача если что. Если железо так и не дадут, то наверное ошибку лучше править в исходном коде, а искать в отрефакторенном, во избежании привнесения своих багов, ну и пусть тестируют сами, добавить логирование, чтобы была возможность хотя бы проанализировать логи.
Кстати может добавить для начала логирование в программу, попросить их запустить ее, возможно анализ логов выявит проблему безо всяких остальных головняков.
По теме: если ошибку не видно невооруженным взглядом, то можно сделать так: разобраться в коде и откомментировать его, при необходимости зарефакторить: сделать легко читаемым, модульным и т.п. Выделить железозависимый код в отдельные модули, для тестирования подменяя их заглушками (mocks). Написать тесты (смотри unit testing). Прогнать и посмотреть что получиться.
Не такая уж простая задача если что. Если железо так и не дадут, то наверное ошибку лучше править в исходном коде, а искать в отрефакторенном, во избежании привнесения своих багов, ну и пусть тестируют сами, добавить логирование, чтобы была возможность хотя бы проанализировать логи.
Кстати может добавить для начала логирование в программу, попросить их запустить ее, возможно анализ логов выявит проблему безо всяких остальных головняков.
> опрос, в основном, об инструментах, облегчающих навигацию в коде для более удобного его исследования
IDE ?
IDE ?
Спасибо, конечно, но уже не актуально. Теме уже больше года ) Железки я так и не дождался, даже схему не дали, а потом и вообще скрылись в тумане. И черт с ними, честно говоря.
Гм, я что-то не обратил внимания, сорри
О, не посмотрел дату начала. А по-поводу каких-либо IDE на эту тему - помнится для "поскакаля" делали что-то в районе Севастопольского универа... году так 92... может чего и родилось за это время... типа автоматизированное преобразование (оптимизация кода) и тестирование (автопостроение тестов) на уровне языка... Тогда же было модное направление автопреобразователи С-Паскаль и наиборот...
ИМХО, "ручками" оно как-то привычнее и быстрее получается. 2 окошка: в одно смотришь, в другом правишь...
ИМХО, "ручками" оно как-то привычнее и быстрее получается. 2 окошка: в одно смотришь, в другом правишь...
ТОП 5
2
3
4