Мне нравится утилита поиска кода ack
. Он достаточно умен, чтобы просматривать Make-файлы, но не знает о файлах SConstcript и SConscript, которые используют sconscript. Как добавить их в файлы, на которые будет смотреть ack?Добавить файлы SCons в ack поиск
ответ
Это не может быть сделано с использованием наборов типов ack. Makefiles and Rakefiles are hard-coded в источнике. Я думал, вы можете добавить тип scons, изменив $HOME/.ackrc
и добавив --type-set=scons=SConstruct,SConscript
, но это будет поиск файла, который заканчивается на «.SConstruct» или «.SConscript».
Простейшим обходным путем является добавление флага -a (всех типов файлов) в ack.
Если вы хотите, чтобы ack искал и смог каким-то образом фильтровать SConstruct, вы можете добавить #!/usr/bin/python
в качестве первой строки файла SConstruct. Затем Ack обрабатывает файл как исходный код python, и вы можете фильтровать его с помощью --python
.
Вот патч, который лечит Scons файлы, как сделать файлы:
--- ~/bin/ack-old 2011-06-01 15:43:51.000000000 -0600
+++ ~/bin/ack 2011-06-01 15:42:09.000000000 -0600
@@ -1583,6 +1583,8 @@
return 'skipped' unless is_searchable($basename);
+ return ('python',TEXT) if $basename eq 'SConstruct' || $basename eq 'SConscript';
+
my $lc_basename = lc $basename;
return ('make',TEXT) if $lc_basename eq 'makefile' || $lc_basename eq 'gnumakefile';
return ('rake','ruby',TEXT) if $lc_basename eq 'rakefile';
Я запускаю deb-пакет ack версии 1.92 на Ubuntu 10.04, и тот же патч можно вручную применить к /usr/share/perl5/App/Ack.pm по строке 476. –
Новый ack2 находится в стадии разработки, которая позволит точное соответствие файла в файле .ackrc. Это позволит упростить поддержку Scons and Jam.
См. Http: // stackoverflow. com/questions/9508431/ack-binding-an-actual-file-name-to-a-filetype для получения дополнительной информации об этом. –
- 1. Ack поиск с пробелами
- 2. SCons: как добавить файлы cpp в список источников
- 3. Как сделать ack включить .conf файлы?
- 4. Добавить включить каталог для scons
- 5. SCons не очищает все файлы
- 6. Как добавить версию сборки в сборку scons
- 7. ack (ack-grep), чтобы игнорировать вложенные каталоги
- 8. Поиск нескольких шаблонов (слов) с помощью ack?
- 9. ack - поиск нескольких шаблонов (логический AND)
- 10. Как добавить существующий флаг в scons
- 11. Как создать nasm-файлы со Scons?
- 12. Scons копировать файлы заголовков для сборки каталога
- 13. Получить какие файлы были изменены файлы внутри Scons строителя действий
- 14. SCons - Как добавить поисковые каталоги существующего сканера
- 15. Scons: Я не добавить qt4 инструмент
- 16. Как сгенерировать объектные файлы в каталоге вариантов в scons
- 17. Как я могу выполнить поиск ack в «Gemfile»?
- 18. ack поиск содержимого в файлах шаблонов Smarty TPL
- 19. SCons не подбирает все файлы классов при создании фляги
- 20. SCons Вывод в каталоге Build
- 21. Как заставить SCons не включать базовый каталог в zip-файлы?
- 22. SCons env.Install ("path_to_folder") не показывает файлы папок в дереве зависимостей
- 23. TCP Ack-Fin после Ack-Push
- 24. Как добавить дополнительные чистые цели при использовании SCons
- 25. Scons - использование пользовательского препроцессора с кэшем scons
- 26. Как добавить действия до и после процесса для сборки SCons?
- 27. Условные поиски grep/ack?
- 28. Включите Ack в MacVIm
- 29. проблема лицензирования компилятора в scons
- 30. подсчитать время сборки в SCons
Это, похоже, работает только для файлов .scons, а не для SConstruct или SConscript. – jblocksom
Га, ты прав. Просто проверил источник - «makefile» и «rakefile» являются жестко закодированными исключениями. – richq
Спасибо, что посмотрели. Я смог изменить свою локальную версию, чтобы добавить SConstruct и SConscript таким же образом, как и make-файлы, возможно, я отправлю патч. Я должен сказать, что я не сумасшедший о решении дизайна scons использовать файлы без расширений, хотя я видел другие системы сборки, которые делают то же самое. – jblocksom