題:
通過軟件搜索您自己的源代碼庫?
panofish
2014-10-14 19:22:40 UTC
view on stackexchange narkive permalink

我以多種文件格式編寫/修改代碼,例如Python,MySQL,Perl,HTML,CSS,PHP,JavaScript,AutoHotkey等。

我經常在個人源代碼庫中搜索以下示例:語法或複雜邏輯以在新代碼中重用。有時我搜索諸如 =〜之類的神秘字符串,因為我正在我的一個Perl程序中搜索特定的正則表達式。

有時,我會使用 Copernic搜索現有代碼,但不幸的是,它只能搜索單詞並自動忽略任何編程語法。它還缺少編程語言語法顏色編碼。

我的問題是:如何搜索自己的源代碼庫?什麼軟件對此有好處? Copernic並不完美,但仍然是我為此找到的最好的工具。

Grep和類似grep的解決方案很好,但是我對具有UI且可在Windows中使用的程序最感興趣。 >

我使用Total Commander(您也可以使用Double Commander),它是免費的,然後按ALT + F7鍵進行搜索。當然,除了從TC搜索之外,我還擁有更多功能,並且*從不使用Windows資源管理器。
您也可以嘗試[Search Monkey](http://searchmonkey.embeddediq.com/),儘管Linux比Windows具有更全面的功能。
六 答案:
Ira Baxter
2015-06-08 07:57:47 UTC
view on stackexchange narkive permalink

Semantic Designs的源代碼搜索引擎(SCSE)使用特定於語言的掃描程序將每個源文件分解成其組成的詞位,對所有內容進行索引,然後在其中的代碼庫中提供基於GUI的搜索。

它的優點是可以在搜索中忽略(特定於語言的)空格和註釋,除非您要包含空格和註釋,而且可以根據其實際值搜索數字和字符串索引允許幾乎立即在數百萬行和數万個文件中進行搜索。

與之類似,使用grep的解決方案極快的FSA,將打開並讀取某個根目錄下的每個文件。如果擴展名很多或沒有擴展名,則使grep忽略所有非文本文件可能很困難。打開數万個文件並使用grep讀取它們需要很長時間(數十秒)。您會收到許多誤報,因為它會掃描程序代碼和註釋。您不能在正則表達式中輕易忽略空格(換行符或註釋),因此它們很難編寫。

  • 根據特定於語言的詞素為文件建立索引
  • 查詢可以混合使用語言通用(“標識符”)或特定於語言的實體(“圖片字符串”
  • 查詢跳過空白和註釋
  • 更少的誤報,比grep更快的搜索
  • 記錄功能可以記錄匹配項
  • 單擊匹配項以查看文件源中的找到的文本
  • 可以配置為在找到的位置中找到的文件上啟動編輯器
  • 在Windows上運行的索引器;結果可以在多個用戶之間共享
  • 在Windows和Linux上運行的基於Java的GUI

Screen shot of search across Linux code base

完整披露:我是語義設計負責人

Angelo Fuchs
2014-10-15 15:38:16 UTC
view on stackexchange narkive permalink

我使用 grep。當我將所有代碼存儲在文件系統中的同一路徑下時,我打開了Linux shell(但也可以通過cygwin在Windows上運行)並cd到目錄中。

Grep是非常複雜的文本可以搜索各種文本並且對您要查找的內容沒有限制的搜索工具。

您的 =〜將會這樣搜索:

  grep -r“ =〜”。 

引用當前目錄,而 -r 使搜索遞歸。因此,如果您按語言對程序進行分組,則可以將其CD到perl目錄中並僅在其中進行搜索。

grep確實有缺點,首先是速度。它沒有索引,因此每次搜索都會順序搜索所有代碼,直到發現某些內容為止。通常,我對要查找的特定代碼的位置有一個大概的了解,因此我只在適當的目錄上進行grep操作。

另一個缺點是複雜性。為了使這種方法變得更好,您將需要花一些時間。

grep變得越來越有用,因為您知道更多的linux / unix命令。例如,您可以使用 find 查找所需的所有文件(如所有perl文件),然後使用 grep 知道其中是否包含某些內容。我(作為Java開發人員)有時需要在一個jar中搜索一個類文件,但是卻有成千上萬的jar躺在周圍,卻不知道它在哪裡。因此,我碰巧有一個命令行,可以找到jar,列出其內容並僅輸出其中包含所需文件的jar。我可以使用相同的技術來搜索文件等的內容。

所以對於這個特定問題:grep。但總的來說,我建議您使用UNIX隨附的整個工具鏈。

a_henderson
2014-12-14 23:30:37 UTC
view on stackexchange narkive permalink

我傾向於為此使用 Agent Ransack

  • 免費
  • Microsoft Windows XP(SP3)/ 2003 / Vista / 2008 / 7/2012/8 / 8.1
  • 支持文件名和查詢文本的正則表達式
  • 從搜索窗口中預覽文件中的匹配行
  • 用於導出結果的選項,並保存搜索條件

屏幕截圖

Screenshot of Agent Ransack window

Tymric
2014-10-15 14:19:34 UTC
view on stackexchange narkive permalink

您可以嘗試 CodeSearch,因為它是專門為此目的而製作的。功能包括:

  • 跨平台
  • 開放源代碼
  • 索引源代碼文件以加快搜索速度
  • 支持正則表達式
  • 支持搜索代碼語法
  • 具有Emacs軟件包,因此您可以從編輯器內部運行它
kenorb
2015-06-08 18:34:51 UTC
view on stackexchange narkive permalink

以下是一些有用的工具:

  • ack,它是grep之類的工具,已針對程序員進行了優化,
  • rak是純Ruby中的grep替換,
  • 咧嘴可以幫助搜索完整的源代碼目錄(基於Python),
  • Silver Searcher是一種用於搜索代碼的工具(Ack的一個克隆,但自那時起功能有所不同)。
值得一提的是grin支持完整的python re,默認情況下會跳過.git,.svn等目錄。
veritaS
2017-12-06 02:23:41 UTC
view on stackexchange narkive permalink

我學會了嚴重依賴於信息快速搜索& replace Link

起初,我對此非常懷疑,因為UI看起來真的很舊(2003年,使用Windows 10 ),但使用了幾次之後,我意識到該程序是我所有問題的答案,可以用於各種目的。

  • 搜索和替換
  • 所有文件類型
  • 具有多個子文件夾
  • 用於私人許可證的免費軟件
  • 商業許可證25€
  • 快速搜索
  • 文件路徑,文件&(多個)行聲明
  • 保存搜索會話
  • 同時啟動多個搜索會話

enter image description here

對於等效的[tag:gratis],請查看我們的http://findandreplace.sourceforge.net/


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...