LINUX.ORG.RU

C/C++: система для поиска по кодобазе большого объема?

 ,


0

6

Требуется искать декларации/реализации/вызовы функций/методов/классов. grep медленный. Нужно что-то с предварительной индексацией, полагаю. UI не обязателен, достаточно командной строки. И чтобы выдавало путь к файлу и строку, где найдено искомое. Есть такое?

Ответ на: комментарий от archie

ctags и cscope могут только определения, не вызовы. А вот GNU global вроде умеет («locate not only definitions but also references.»), посмотрю, спасибо.

anonymous ()
Ответ на: комментарий от foror

Ну grep хотя бы не будет прибит OOM-killer'ом после получасовой попытки импортировать сырцы ядра в отличии от Eclipse :)

Человеку надо быстро (т.е. типа global), а ты что советуешь?

Stanson ★★★★★ ()

Если имелось ввиду что-то вроде Doxygen, то в нем есть поиск и возможность связать функции/методы/классы с кодом.

anonymous ()
Ответ на: комментарий от Stanson

:)

Блин, это реально? Я думал eclipse умеет вовремя остановиться.

deterok ★★★★★ ()

Если тебя не устраивает по скорости:

find \( -name '*.cpp' -or -name '*.h' \) -exec grep -Hn <expr> {} \;

Можно попробовать что то типа ack.

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

pon4ik ★★★★★ ()
Ответ на: комментарий от Noob_Linux

У меня есть код где даже он сдыхает. Там 10 гигов какого-то говна намешано. Приходится по частям импортировать. Хотя нет, он даже ворочается неспеша, но отжирает гигов 6 рамы. Если на компе 64 гига рамы, то думаю он справится.

Gorthauer ★★★★★ ()
Последнее исправление: Gorthauer (всего исправлений: 1 )
Ответ на: комментарий от Gorthauer

Хренасе, ну тогда понятно. Думаю здесь не может быть ничего быстрого если нет достаточно мощного компа.

Noob_Linux ★★★★ ()
Ответ на: комментарий от foror

Лол. Хорошая шутка. Возьму на вооружение.

EXL ★★★★★ ()
Ответ на: комментарий от unt1tled

Давай я найду другую работу, где не будет такого же кода, а потом брошу. Там нет надежды что-то изменить, только валить.

Gorthauer ★★★★★ ()
% find -s . -type f -exec grep -H {} \; > grepfile

% grep 'foo' grepfile
slovazap ★★★★★ ()

Я использую комбинацию emacs + rtags + ggtags. Rtags точный, но медленный, а ggtags неточный, но очень быстрый. Хорошо работает для достаточно большого количества кода.

rupert ★★★★★ ()
Ответ на: комментарий от Gorthauer

А если это всё по swap'u пустить? По идее, оно будет не молниеносно, но работать.

pon4ik ★★★★★ ()
Ответ на: комментарий от SystemD-hater

+1 OpenGrok, но пришлось изрядно потрахаться с TomCat-ом, в доках по настройке путаница.

Doxygen (но под него должны быть изначально заточены все комменарии в коде). + GraphWiz к нему, который будет генерить графы с Call и Callers, это супер полезная вещь!

Все это генерит html-код, по которому можно лазать в браузере, а если нахлобучить Doxygen на веб-сервер, то и поиск по исходникам работает.

bugs-bunny ()
Ответ на: комментарий от bugs-bunny

Ну, по моей ссылке предлагается opengrok в Docker-е, так что с TomCat-ом трахаться не придётся.

А вот готового контейнера с doxygen и веб-сервером, показывающим html, я не нашёл.

SystemD-hater ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.