Написать пост

UniversalCodeGrep — утилита для быстрого поиска по исходникам

Аватар Типичный программист

Обложка поста UniversalCodeGrep — утилита для быстрого поиска по исходникам

UniversalCodeGrep (ucg) создана, чтобы искать по коду быстрее, чем grep и так же удобно, как Ack. Исходный код доступен на GitHub, инструкции по установке и использованию есть далее в статье.

По замыслу создателей, ucg должна полностью удовлетворять нетерпеливых программистов, которым нужно быстро найти что-то в большом количестве файлов с исходниками. Утилита написана на С++11 и использует параллелизм (и другие фишки этого стандарта С++) для ускорения сканирования, одновременно улучшая за счёт этого возможности по портированию на различные системы. Регулярные выражения поддерживаются за счёт библиотеки PCRE с применением JIT компиляции, что также даёт неплохой буст скорости на большинстве платформ.

Для сравнения приводятся результаты сканирования исходников Boost 1.58.0 на Fedora 23, использовались ucg 0.2.0, ag 0.30.0, ack 2.14:

UniversalCodeGrep — утилита для быстрого поиска по исходникам 1

UniversalCodeGrep также быстрее самого grep на 25%.

Установка

На Ubuntu можно сделать так:

			sudo add-apt-repository ppa:grvs/ucg
sudo apt-get update
sudo apt-get install universalcodegrep
		

На Red Hat/Fedora/CentOS:

			sudo dnf copr enable grvs/UniversalCodeGrep
sudo dnf install universalcodegrep
		

Бинарные RPM для OpenSUSE доступны здесь.

Или можно установить из исходников:

			tar -xaf universalcodegrep-0.2.0.tar.gz
cd universalcodegrep-0.2.0.tar.gz
./configure
make
make install
		

Зависимости

Для установки вам понадобятся gcc версии не ниже 4.8 (в более ранних нет достаточной поддержки С++11), а также pcre версии 8.2 или выше.

Поддерживаемые ОС и дистрибутивы

Проверка была проведена на следующем:

  • Ubuntu 15.04
  • CentOS 7
  • Fedora 22
  • Fedora 23
  • RHEL 7
  • SLE 12
  • openSUSE 13.2
  • openSUSE Leap 42.1
  • Windows 7 + Cygwin 64-bit (однако скорость на винде почти как в ag)

Использование

Вызовы ucg такие же, как и для ack или ag:

			ucg [OPTION...] PATTERN [FILES OR DIRECTORIES]
		

Здесь PATTERN — это PCRE-совместимое регулярное выражение.

Подробнее

Более детально с инструментом можно ознакомиться на странице проекта.

Следите за новыми постами
Следите за новыми постами по любимым темам
4К открытий4К показов