C/С++ сравнение исходного кода браузера, поиск мнения
Недавно наша команда унаследовала огромную базу кода, около 1 гигабайта c/С++ исходных кодов. Основная часть (которую мы можем изменять или обновлять время от времени) составляет около 650 МБ и 57 000 файлов. Поэтому я получил прекрасный тестовый пример, чтобы увидеть, какие браузеры исходных кодов на самом деле так хороши, как они утверждают. Ниже приведены результаты моих тестов, и я хотел бы видеть другие мнения. Я знаю, что эта тема была поднята несколько раз в stackoverflow, но я не удовлетворен ни одним из их ответов (или, может быть, я пропустил их, если это так, пожалуйста, дайте мне знать). BTW, с помощью браузера исходного кода, я имею в виду, что он может помочь вам легко найти определение класса/функции; показать дерево вызовов, перекрестные ссылки, что-то вроде этого.
-
visual С++ 2010 express edition (бесплатный). Слишком плохо, он не утруждает себя какой-либо аналитической работой, просто жалуется, что не может найти файлы head. Кстати, почему я никогда не люблю визуальный С++; он всегда хочет, чтобы вы делали что-то на своем пути, а не упрощали для вас.
-
навигатор источника. Я использовал навигатор источника пару лет назад. И я узнал, что он снова разрабатывается с новым именем source navigaor NG, поэтому я решил попробовать. Слишком плохо, добавив к проекту 650 МБ кодов, он просто умер.
-
Понять С++. Я видел, что кто-то порекомендовал понять С++ здесь, поэтому я также попробовал. Нехорошо. С добавлением 1G файлов в проект, он тоже скончался. С 650 МБ он может работать, но не впечатлен. Поскольку это коммерческий инструмент, я просто передал его.
-
блок кода. Файлы 1G сделают его мертвым, но с 650 МБ он может работать. Он не может автоматически показывать определение функции, когда ваша мышь указывает на функцию (например, представление источника и slickedit do), но он может найти функцию defition большую часть времени (хорошие новости), когда вы щелкаете правой кнопкой мыши по функции и выбираете поп пункт меню "перейти к определению функции". Плохая новость заключается в том, что когда я закрываю проект и открываю его снова, он все равно занимает много времени.
-
codelite. codelite выглядит как блок кода (ведь оба они используют wxWidget). Но я считаю, что codelite лучше кода, потому что, когда я снова открываю закрытый проект, он загружается намного быстрее, чем блок кода (с файлами 650 МБ). Он также может найти определения функций во всплывающем меню. Поэтому, если кто-то хочет выбрать бесплатную среду c/С++, мой голос идет на кодовое название.
-
Cscope. Когда я работал в отделе GSM Motorola, мы использовали cscope и было миллион строк кодов. Но проблема в том, что ни один из моих членов команды не хорош в vim или emacs, и мы просто хотим, чтобы IDE упростила нашу жизнь (я думаю, эти замечания могут кому-то помогать. Извините за это)
-
источник понимания. Конечно, мой тест не пропустит понимание источника. И понимание источника делает его работу довольно хорошей. Но его пользовательский интерфейс является своего рода "уродливым" и не поддерживает юникод. Это очень плохо.
-
slick edit. В моем тестовом слайке редактирование и понимание источника - это всего лишь два инструмента, которые могут обрабатывать файлы 1G и автоматически деинсталлировать функцию, когда вы указываете на функцию и выполняете функцию при вводе. На мой взгляд, пользовательский интерфейс slick edit намного лучше, чем исходное представление. Единственная проблема, с которой я сталкиваюсь, заключается в том, что ни один из них не обеспечивает сворачивание кода (в то время как свободный, например, кодовый и кодовый блок). Одна коррекция здесь: slickedit на самом деле имеет сворачивание кода (с выборочным отображением в меню вида), это просто не так очевидно, вам нужно сначала установить свой выборочный дисплей!
Я не пытаюсь использовать java-среду IDE, например, eclispe CDT или netbean, потому что я не думаю, что они могут хранить 1G файлы.
Итак, чтобы подвести итог тому, что я сделал, я скажу, если вы хотите использовать коммерческий инструмент, мой голос идет за slickedit (это не продажа, я никоим образом не связан с slick edit); если вы хотите бесплатный, убедитесь, что он определенно.
Но я бы хотел услышать мнение других.
Ответы
Ответ 1
Другая возможность (требующая времени и усилий, но для такой большой базы кода, это того стоит) - разработать свой собственный плагин GCC или расширение для изучения вашего конкретного кода. Недавняя возможность плагина в GCC позволяет пользователю настраивать поведение компилятора GCC для своих конкретных потребностей.
В частности, вы можете использовать GCC MELT, который является языком высокого уровня для домена, предназначенным для расширений GCC. (MELT реализуется как плагин GCC, это бесплатное программное обеспечение, лицензия GPLv3 +).
Отказ от ответственности, я главный автор GCC MELT, но я был бы рад помочь вам.
Базиль Старинкевич
Ответ 2
У нас есть аналогичная проблема (1GB-код базы, 15k файлов), и на самом деле Eclipse CDT работает для нас, если вы даете ему достаточно памяти. 1GB RAM, предназначенная для Eclipse, кажется, это сладкое место.
Ответ 3
Попробуйте doxygen с включенными диаграммами вызовов и совместной работы. Он должен отлично работать даже для крупных проектов.
Ответ 4
Если ваша проблема - это просто поиск кода, возможно, наша Поисковая система исходного кода поможет. Этот инструмент индексирует вашу базу кода с использованием языковой структуры (lexemes), а затем предоставляет возможность для поиска базы кода с использованием этого индекса, предоставляя графический интерфейс для составления запросов, показывая совпадения с запросами и отображая фактический код, соответствующий любому выбранному запрос.
Он работает на многих языках, включая С++. И, похоже, он очень полезен для кодовых баз, таких как Linux, которые, по-видимому, имеют такой размер. Возможности поиска, возможно, упрощают "просмотр" кода.
Я дам это, это тождественно от моего возражения против Doxygen (см. комментарий в другом ответе). Но тогда он не претендует на разрешение имен вообще.