−1°C
завтра: 3°C
Погода в Перми
−1°C
утром−1°C
днем6°C
завтра3°C
Подробно
 64,68
+0.6996
Курс USD ЦБ РФна 26 апреля
64,6794
+0.6996
 72,11
+0.3961
Курс EUR ЦБ РФна 26 апреля
72,1111
+0.3961
PRM.Форум /Компьютеры Интернет Связь / Программирование /

Анализ чужого кода - кто как делает?

  • guru

    Сообщений: 3884

    Достался мне тут по наследству небольшой проектик (~4500 строк). На С, если кому интересно.
    О проектике известно, что он работает, но в ряде случаев начинает глючить. Моя задача - поймать этот глюк.
    Документирована программа отвратительно - описания нет, комментариев очччень мало и они, в большинстве случаев, бесполезны.
    Прогнать тоже пока не на чем - платформа несколько отличается от PC:улыб:
    Поэтому на данный момент сижу, пытаюсь понять, что делает тот или иной кусок кода и откомментировать. И попутно у меня возникает вопрос - а нельзя ли этот процесс несколько облегчить? Нет ли инструментов, которые, проанализировав проект, вывели бы список вызовов, объявлений, определений и позволили бы быстро перемещаться по тексту от одного к другому? Нет ли каких-то общепринятых методик анализа?
    Посоветуйте чего-нибудь :).

    У вас такая красивая машина. Это Ферарри? - Не, это Лада Калина.

  • veteran

    Сообщений: 1583

    Ну а вот у вас хотя бы система контроля версий есть? А насчет поймать глюк - берешь и ловишь, в чем проблема?:)

  • junior

    Сообщений: 12

    Understand for C++ scitools

  • guru

    Сообщений: 3884

    В ответ на: Ну а вот у вас хотя бы система контроля версий есть?
    Откуда такое щастье?:улыб:
    В ответ на: А насчет поймать глюк - берешь и ловишь, в чем проблема?:)
    Ну я ж говорю, метод "запустил-посмотрел где глючит-подумал-поправил" мне не доступен по причине отсутсвия железяки, на которой ЭТО должно работать.

    У вас такая красивая машина. Это Ферарри? - Не, это Лада Калина.

  • guru

    Сообщений: 5269

    Не запуская код, сложно что-то отладить.
    Можно прогнать разные инструменты, которые проверят, насколько "правильно" написан код, и даже что-то исправить. Но как вы поймете, что вы исправили именно то, что нужно?

    В таких случаях я ставлю в код "затычки" - эмуляторы, которые позволяют программе исполняться на моем компьютере.

  • wii-й

    Сообщений: 31786

    Бывает под камень фирма - производитель делает эмуляторы под ПС. Во всяком случае раньше видел подобное для какого-то микропроцессора...

    Фантастические твари. Теперь вы знаете, где они обитают...

  • guru

    Сообщений: 3499

    В ответ на: Не запуская код, сложно что-то отладить.
    +1. Темболее 4500 строчек все-таки.

  • junior

    Сообщений: 22

    Было верно подмечено про эмуляторы. Надо поискать эмулятор платформы, под которую написан проект и попробовать запустить на нем.

  • v.i.p.

    Сообщений: 13142

    Блин. Всего-то 4500строк, да еще и на языке... Нифига не понимаю куды мы котимся... делов-то. Каких-то 50 страниц текста. Помнится в году так 94-м разобрал 400кбайт кода с ассемблера на язык "С"... вручную и "между делом" под отладчиком. Ну уж больно игрушка понравилась...

    И что стоит прогруммер, который телефонным тестом баг найти не могёт в таком малюсеньком куске... Фи. :death:

    "Только так, только личная инициатива и напряженная работа над собой. Вот я вас хочу именно к этому призвать .. Нужно своей собственной рукой все делать" (с) В.В. Путин :)

  • guru

    Сообщений: 3884

    О, какую тему вспомнили.
    Значит, рассказываю.
    Во-первых, проблема снялась сама по себе (не решилась, а снялась, да) - заказчик исчез в тумане.
    Во-вторых, прошу учесть, что проектик был - самопальная GSM-сигналка на Atmel'ке, и ловить плавающий глюк в симуляторе и без периферии - задача та еще.
    В-третьих, в заглавном посте темы вопрос, в основном, об инструментах, облегчающих навигацию в коде для более удобного его исследования.

    PS: а кто такой телефонный тест? Гугл не знает.

    У вас такая красивая машина. Это Ферарри? - Не, это Лада Калина.

  • veteran

    Сообщений: 1604

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

    По теме: если ошибку не видно невооруженным взглядом, то можно сделать так: разобраться в коде и откомментировать его, при необходимости зарефакторить: сделать легко читаемым, модульным и т.п. Выделить железозависимый код в отдельные модули, для тестирования подменяя их заглушками (mocks). Написать тесты (смотри unit testing). Прогнать и посмотреть что получиться.

    Не такая уж простая задача если что. Если железо так и не дадут, то наверное ошибку лучше править в исходном коде, а искать в отрефакторенном, во избежании привнесения своих багов, ну и пусть тестируют сами, добавить логирование, чтобы была возможность хотя бы проанализировать логи.

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

  • veteran

    Сообщений: 1604

    > опрос, в основном, об инструментах, облегчающих навигацию в коде для более удобного его исследования

    IDE ?

  • guru

    Сообщений: 3884

    Спасибо, конечно, но уже не актуально. Теме уже больше года ) Железки я так и не дождался, даже схему не дали, а потом и вообще скрылись в тумане. И черт с ними, честно говоря.:улыб:

    У вас такая красивая машина. Это Ферарри? - Не, это Лада Калина.

  • veteran

    Сообщений: 1604

    Гм, я что-то не обратил внимания, сорри :смущ:

  • v.i.p.

    Сообщений: 13142

    О, не посмотрел дату начала. А по-поводу каких-либо IDE на эту тему - помнится для "поскакаля" делали что-то в районе Севастопольского универа... году так 92... может чего и родилось за это время... типа автоматизированное преобразование (оптимизация кода) и тестирование (автопостроение тестов) на уровне языка... Тогда же было модное направление автопреобразователи С-Паскаль и наиборот...

    ИМХО, "ручками" оно как-то привычнее и быстрее получается. 2 окошка: в одно смотришь, в другом правишь...:миг:

    "Только так, только личная инициатива и напряженная работа над собой. Вот я вас хочу именно к этому призвать .. Нужно своей собственной рукой все делать" (с) В.В. Путин :)

Записей на странице:

Перейти в форум

Модератор: