Анализ исходного кода (или как присоединиться к OpenSource проекту)

Модератор: Модераторы разделов

Аватара пользователя
VoidExp
Сообщения: 208
Статус: Lead guitar adept
ОС: Ubuntu

Анализ исходного кода

Сообщение VoidExp »

Вот на днях решил принять участие в одном опенсурсном проекте, хотя проектов в которых хотелось что-то допилить несколько... Скажем так, есть свободное время по вечерам, иногда и выходные, хорошие знания С/C++ и разработки приложений в среде *NIX в частности, почему бы и не "отплатить" открытому сообществу за все то что оно мне предоставило, хоть и в мизерной мере? :) Собственно, чтобы не добавлять фичи методом костылей и изоленты, необходимо понимать архитектуру приложения, как все работает и быстро находить связи между отдельными модулями. Вот и решил спросить у форумчан, кто и как подходит к анализированию исходного кода? Какие методики и тулзы используете для этого? Было бы неплохо если знающий человек описал весь этот "процесс" step-by-step... Надеюсь высказал вопрос понятно.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Анализ исходного кода

Сообщение sash-kan »

1. чтение документации.
2. декомпозиция. осознание того, для чего служат те или иные части исходников программы.
2.1. самое крупное биение на части — каталоги.
2.2. дальше — файлы.
2.3. дальше — классы (если используются).
2.4. дальше — функции.
3. размышления. могут перемежаться с любым из предыдущих этапов.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
VoidExp
Сообщения: 208
Статус: Lead guitar adept
ОС: Ubuntu

Re: Анализ исходного кода

Сообщение VoidExp »

А можешь посоветовать и какую-то прогу которая помогает в этом?
Спасибо сказали:
Аватара пользователя
agentprog
Сообщения: 362
Статус: Ad Astra per aspera
ОС: openSUSE 11.4, Arch

Re: Анализ исходного кода

Сообщение agentprog »

VoidExp писал(а):
19.06.2010 16:03
А можешь посоветовать и какую-то прогу которая помогает в этом?

KWrite/GEdit? vim?
No problems - just solutions!
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: Анализ исходного кода

Сообщение Crazy »

Doxygen

Desipere in loco
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Анализ исходного кода

Сообщение sash-kan »

/usr/bin/man + /dev/brain
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
mix1m
Сообщения: 187
ОС: openSUSE 11.2

Re: Анализ исходного кода

Сообщение mix1m »

простите мне мою наивность, но неужели опенсорс проекты существуют без баг-трекинговых или еще каких-либо централизованных систем управления проектом (где храняться чейндж-реквесты и т.д.)?
Ну, и так как мне кажется что ответ на мой вопрос "нет", то можно предположить что существуют люди, которые знают "что" нужно делать, а в лучшем случае и "как".
Попытка - первый шаг к провалу (с) Гомер
Спасибо сказали:
Аватара пользователя
VoidExp
Сообщения: 208
Статус: Lead guitar adept
ОС: Ubuntu

Re: Анализ исходного кода

Сообщение VoidExp »

Вопрос не в том "как" или "что" нужно делать и я не совсем понял причем здесь баг-трекеры и системы реквестов. А выше упомянутый vim у меня уже который год установлен и работаю в нем давно, так что просьба такие остроумные ответы гуру-хацкеров придержать для себя. Вопрос в том, есть ли какие-то программы которые помогают эффективно анализировать исходный код, без тупого перечитывания оного строчку за строчкой, то есть позволяющие наглядно, "картинками" так сказать посмтреть на структуру проекта, а там уже по необходимоси можно и перечитать код интересующего модуля.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Анализ исходного кода

Сообщение diesel »

VoidExp писал(а):
19.06.2010 21:00
Вопрос в том, есть ли какие-то программы которые помогают эффективно анализировать исходный код, без тупого перечитывания оного строчку за строчкой, то есть позволяющие наглядно, "картинками" так сказать посмтреть на структуру проекта, а там уже по необходимоси можно и перечитать код интересующего модуля.

боюсь что в конечном счете Вы увидите что "король то голый" :)
то есть "с помощью ls, find, grep, vim/emacs и такой-то матери".
Спасибо сказали:
mix1m
Сообщения: 187
ОС: openSUSE 11.2

Re: Анализ исходного кода

Сообщение mix1m »

VoidExp писал(а):
19.06.2010 21:00

вам пытались намекнуть, что ни одна программа за вас ничего анализоровать не будет. Не говоря уже о том, что есть проекты, где больше тысячи строк кода и от "картинки" можно ошалеть поболее чем от смотрения непосредственно в код..
ну, а вообще - http://www.aivosto.com/visustin.html. За такое нежалко и денег заплатить)
Попытка - первый шаг к провалу (с) Гомер
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Анализ исходного кода

Сообщение Portnov »

ctags, cscope, global итп. Называются "браузеры кода". Для "въезжания в проект" толку от них обычно мало. Doxygen может, например, построить диаграмму классов (если проект на C++), но чаще всего и от неё толку мало. По опыту, единственный способ "въехать в проект" (по крайней мере, для больших и сложных проектов) - это пообщаться с архитектором. Часто архитектора могут заменить ведущие разработчики, но не всегда.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Анализ исходного кода

Сообщение sash-kan »

mix1m писал(а):
19.06.2010 21:26
ну, а вообще - http://www.aivosto.com/visustin.html. За такое нежалко и денег заплатить
да, отличная штука для семи строк кода.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
mix1m
Сообщения: 187
ОС: openSUSE 11.2

Re: Анализ исходного кода

Сообщение mix1m »

sash-kan писал(а):
19.06.2010 21:57
mix1m писал(а):
19.06.2010 21:26
ну, а вообще - http://www.aivosto.com/visustin.html. За такое нежалко и денег заплатить
да, отличная штука для семи строк кода.

как и все подобные штуки. Но топикстартер настойчиво требует=)
Попытка - первый шаг к провалу (с) Гомер
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: Анализ исходного кода

Сообщение eddy »

mix1m писал(а):
19.06.2010 21:26
Не говоря уже о том, что есть проекты, где больше тысячи строк кода и от "картинки" можно ошалеть поболее чем от смотрения непосредственно в код..

Не сказал бы, что тысяча строк - много. У меня дохленький проектик больше занимает:

Код: Выделить всё

23:38 /Data/documents/SAO/videoguide/videoguide-last
cat html/*[sl] |wc -l
664
23:38 /Data/documents/SAO/videoguide/videoguide-last
cat *[ch]|wc -l
3816
23:38 /Data/documents/SAO/videoguide/videoguide-last
cat *c|wc -l
3293


А по теме, честно говоря, сам бы хотел, чтобы была какая-нибудь программка, позволяющая по дереву кода строить зависимости в виде графов (какая функция в каком файле находится, из какой функции какая вызывается и т.п.), а то иногда приходится подымать старые проекты для модернизации, и уходит очень много времени, чтобы уловить структуру (это несмотря на то, что комментирую я все довольно тщательно).
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
mix1m
Сообщения: 187
ОС: openSUSE 11.2

Re: Анализ исходного кода

Сообщение mix1m »

eddy писал(а):
19.06.2010 23:39
Не сказал бы, что тысяча строк - много. У меня дохленький проектик больше занимает:

да я уже понял, что у меня с сарказмом сегодня плохо..
Попытка - первый шаг к провалу (с) Гомер
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Анализ исходного кода

Сообщение Portnov »

eddy писал(а):
19.06.2010 23:39
какая-нибудь программка, позволяющая по дереву кода строить зависимости в виде графов (какая функция в каком файле находится, из какой функции какая вызывается и т.п.),

Вот doxygen для поддерживаемых языков это умеет. Но для проекта "больше чем из семи строк" такой граф обычно сильно смахивает на полный граф на стопиццот вершин. Ничего кроме выкрикивания междометий разглядывание такого графа обычно не даёт.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
kamre
Сообщения: 243
ОС: Win7/Ubuntu 11.10

Re: Анализ исходного кода

Сообщение kamre »

Вообще у проекта должна быть документация, с нее и нужно начинать. А потом открываешь исходники в какой-нибудь нормальной IDE вроде Eclipse и будет там иерархия классов, навигация по коду и построение иерархии вывзовов для методов. Еще бывает полезно с отладчиком походить. Я примерно так пытался разбираться в исходниках CDT, когда хотел кое-что подправить.
Спасибо сказали: