21

Các codebase tôi làm việc trên là rất lớn, và grepping nó mất khoảng 20 phút. Tôi đang tìm kiếm một công cụ tìm kiếm mã nguồn dựa trên web tốt .. giống như một phiên bản mạng nội bộ của koders.com.Công cụ tìm kiếm mã nguồn tốt là gì?

Điều duy nhất tôi tìm thấy là Krugle Enterprise Edition, không đăng giá của nó ... và nếu bạn phải hỏi, bạn không thể mua được.

Tôi thực sự thích một công cụ tìm kiếm cũ đơn giản hơn, không có nhiều chuông và còi khác.

Nguồn chủ yếu là ASP.NET/C# và Javascript.

+0

Bạn có thể giải thích chính xác mục tiêu là gì không, ví dụ: mã nguồn của riêng bạn cho mã, hay bạn cần một người xem mở rộng? Là tìm kiếm sử dụng chính/grep? Và những gì bạn mong đợi để "tìm". Tôi nhanh chóng xem xét các lập trình viên và tôi có thể tưởng tượng một trường hợp sử dụng cho một công ty, do đó câu hỏi. – Till

+0

Và nơi bạn lưu trữ cơ sở mã của mình? Nếu tất cả mọi người đều có một bản sao cục bộ đã được kiểm tra (như sẽ xảy ra trong các VCS hiện đại), nó sẽ khá nhanh. Nếu bạn đang làm việc trên NFS, bạn có thể tìm kiếm mã cơ sở chỉ nhanh như bạn có thể chuyển toàn bộ điều trên mạng LAN của bạn. –

+0

@David: ... nếu bạn nhấn mạnh vào việc đọc văn bản của từng tệp trong khi bạn tìm kiếm. Nếu bạn chỉ mục các tập tin đầu tiên, bạn không cần phải quét văn bản và nó có thể nhanh hơn rất nhiều. Xem câu trả lời của tôi. –

Trả lời

2

Lxr hoạt động tốt trên các cơ sở mã lớn, như được chứng minh với linux kernel. Tôi nghĩ rằng nó chỉ dành cho C (bạn đã không chỉ định ngôn ngữ được sử dụng).

1

Nếu bạn có nhiều mã nguồn, bạn có thể cần phải dành một chút thời gian để thiết lập công cụ tìm kiếm để lập chỉ mục. Tôi muốn giới thiệu Lucene - miễn phí, nhanh chóng, nó là khá dễ dàng để thiết lập một chỉ số mạnh mẽ trên bất kỳ nội dung cho bất cứ ai có kinh nghiệm lập trình.

http://lucene.apache.org/

+0

Tôi đã hy vọng cho một giải pháp shrinkwrapped tốt đẹp. Nhưng nếu chúng ta không thể tìm thấy, chúng ta có thể sẽ xây dựng một công cụ tìm kiếm xung quanh Lucene hoặc tương tự. – toohool

+0

Vâng - Tôi giả sử bạn thực sự có một tấn mã - chúng tôi xử lý ~ 1 triệu dòng và thấy rằng nó có thể được xử lý đầy đủ trong các IDE hiện đại tốt (ví dụ Intelli-J) trên một máy tính để bàn mạnh mẽ miễn là mọi thứ chia thành các mô-đun. – Peter

-1

Có lẽ bạn nên đầu tư một chút thời gian và/hoặc tiền trong một biên tập viên hoặc IDE có hỗ trợ gắn thẻ biểu tượng. Bạn chỉ cần thực hiện một lần thông qua toàn bộ cây nguồn để gắn thẻ nó, và sau đó trình soạn thảo sử dụng tìm kiếm chỉ mục hoặc tra cứu bản đồ để tìm định nghĩa biểu tượng hoặc tham chiếu.

Một số ví dụ về trình chỉnh sửa hoặc IDE hỗ trợ gắn thẻ là Eclipse, Visual Studio, SlickEdit. Một số IDE có thể gọi tính năng Symbol Browser hoặc một cái gì đó tương tự.

+0

Cách tiếp cận đó có hoạt động với mã chưa được biên dịch, như tệp ASPX hoặc Javascript không?Các nhận xét mã có thể tìm kiếm được không? Chúng tôi thực sự cần tìm kiếm toàn văn. – toohool

+0

Wow, vẫn nhận được downvotes sau 4.3 năm. Nếu tôi đã viết câu trả lời này hôm nay, tôi sẽ thay đổi giọng điệu. Khi tôi đọc lại nó, câu trả lời ban đầu có vẻ hơi thuyết giảng. – shoover

+0

Những ngày này tôi sử dụng Sublime Text, trong đó có tô sáng cú pháp cho mọi ngôn ngữ tôi đã sử dụng trong năm qua (Java, Groovy, Clojure, Javascript, CSS, Haskell, R), cộng đồng lành mạnh của người dùng và nhà phát triển plugin. Nó cũng có thể làm nổi bật ASP, và ai đó đã giúp cung cấp một tinh chỉnh cho [ASPX] (http://myfreakinname.blogspot.com/2013/06/adding-aspx-to-sublime-text-2s-syntax.html). Tìm kiếm toàn văn (có, bình luận quá) là siêu nhanh và bạn có thể tìm kiếm qua nhiều dự án từ bên trong trình chỉnh sửa. Tôi không có liên kết với ST; Tôi chỉ là một khách hàng trả tiền hạnh phúc. – shoover

6

20 phút là thái quá! Tôi đang làm việc với một triệu + mã nguồn cơ sở mã những ngày này và grepping mất một vài giây nhiều nhất (tôi sử dụng ack). Thư mục nhà của chúng tôi được lưu trữ trên một máy chủ tập tin và được gắn trên NFS, và để tăng tốc độ grepping chúng tôi làm điều đó trong khi đăng nhập vào máy chủ tập tin. Tôi không chắc là phải mất bao lâu trên NFS, nhưng nó chắc chắn lâu hơn.

Chúng tôi cũng thực hiện các thao tác kiểm soát nguồn khi đăng nhập vào máy chủ tệp, vì cùng lý do hiệu suất.

+0

ack thật tuyệt. Và bạn có lẽ có thể ném cùng một lối vào web thô sơ trong chưa đầy một giờ. – Thomas

1

Vì bạn đang nói 'grepping' tôi tưởng tượng bạn không quan tâm đến các giải pháp dòng lệnh.

Công cụ như ctags sẽ lập chỉ mục và tìm kiếm các mã C# và JavaScript (trong số nhiều trường hợp khác).

Điều rất gọn gàng về ctags là nó có thể được kết hợp với vim với plugin danh sách thẻ để cho phép duyệt mã nguồn hoặc với omimomplete vim để cho phép hoàn tất mã.

3

Trên Linux, tôi sử dụng GNU ID Utils Chúng có chức năng tương tự với grep nhưng hoạt động từ chỉ mục để chúng cực kỳ nhanh. Bạn chạy mkid để tạo chỉ mục và sau đó một trong các tiện ích khác như "gid" là phiên bản Công cụ ID của grep để grep trên chỉ mục. Tôi có một công việc cron chạy thỉnh thoảng mkid.

ID công cụ làm việc trên Windows là tốt, hoặc là với Cygwin hay như một standard windows program

8

Tôi khuyên bạn nên OpenGrok. Có một số công cụ khác, here là một đánh giá nhanh về chúng.

1

Tôi đã sử dụng cs2project trong một thời gian, nó là một công cụ tìm kiếm mã nguồn mở C# dựa trên Lucene.NET. Thật không may nó không còn được phát triển.

0

Xem SD Source Code Search Engine của chúng tôi. Ngôn ngữ nhận thức và xử lý nhiều ngôn ngữ (C, C++, C#, Java, ObjectiveC, PHP, VB.net, VB6, Ada, Fortran, COBOL, ...). Mất 2,8 giây để tìm kiếm trên Linux Kernal (7,3 triệu dòng, 18000+ tệp).

Vì nhận biết ngôn ngữ, nên bỏ qua yếu tố langauge không liên quan đến tìm kiếm của bạn (ví dụ: bỏ qua nhận xét, định dạng và khoảng trống nếu bạn chỉ quan tâm đến số nhận dạng hoặc biểu thức). Nó có thể tìm kiếm bên trong mã định danh, chuỗi và nhận xét. Nó có tùy chọn tìm kiếm chuỗi biểu thức chính quy đầy đủ nếu bạn thực sự muốn làm điều đó.

Nó đã được sử dụng cho các hệ thống 10s của hàng triệu dòng mã và trong một trường hợp chúng tôi biết, một hệ thống có hơn một triệu tệp.

0

Tôi đã có một vấn đề tương tự. Tôi làm việc cho một công ty phần mềm, nơi dự án liên quan đến C#, C++, asp.net, db script và thậm chí mã nguồn vb6 (vâng nó là một nhức đầu biên dịch nhiều dự án vb6 khi không có khái niệm về giải pháp như trong phiên bản sau của studio trực quan. ..)

Tôi đã sử dụng Visual Studio 2010 nhưng phải sử dụng trình soạn thảo văn bản bên thứ 3 để tìm kiếm trong các tập lệnh db và mã nguồn vb6.

Tôi đã thực hiện một số nghiên cứu và tìm thấy KodeEx (http://kodeex.com) và đã hài lòng với điều đó. Nó là một công cụ tìm kiếm mã nguồn dựa trên chỉ mục. Bạn không cần phải xây dựng bất cứ thứ gì (như những người khác đã đề xuất bạn làm với Lucene. Lucene là một dự án mã nguồn mở tốt đẹp theo cách =)). Chỉ cần cài đặt nó và để cho nó lập chỉ mục các dự án của bạn. Sau đó nó thường trả về kết quả trong vòng vài giây.

Các vấn đề liên quan