2010-06-21 20 views
5

Tôi muốn biết trên từng dòng, tỷ lệ phần trăm mã nguồn trong kho lưu trữ lật đổ đã được sửa đổi giữa hai lần commit.Subversion có thể báo cáo phần trăm mã được thay đổi theo thời gian không?

Ví dụ: nói phiên bản 2100 có 150.000 dòng mã - nhưng sửa đổi 2600 có 165.000 dòng mã, trong đó 8.000 dòng của mã 150.000 ban đầu được sửa đổi. Tôi sẽ báo cáo điều này là 142.000/165.000 = 86%, 14% "mới". Tôi không quan tâm để tách biệt Javadoc, XML, bình luận, hoặc kiểm tra đơn vị .... chỉ gộp chúng lại với nhau thành "nguồn".

Bất kỳ ý tưởng nào về cách thực hiện việc này?

Trả lời

4

Tôi vừa làm điều này ngay hôm nay bằng cách sử dụng công cụ mã nguồn mở miễn phí CLOC. Nó cho phép bạn so sánh hai thư mục một cách đệ quy, vì vậy tất cả những gì bạn cần làm là có cả hai phiên bản được kiểm tra và chạy chương trình trên nó.

Nó cũng cho tóm tắt cho các ngôn ngữ riêng biệt và tổng, ví dụ:

Language      files   blank  comment   code 
-------------------------------------------------------------------------------- 
SUM: 
same       1556    0   76662   165546 
modified      137    0   159   570 
added       2   241   257   1250 
removed       30   591   906   2271 

Như bạn có thể nhìn thấy từ số liệu thống kê 'trống' ở đó, nó không phải là hoàn hảo, nhưng nó chắc chắn mang đến cho bạn một sân chơi bóng chày.

2

Tôi không biết cách đơn giản để làm điều đó, nhưng bạn có thể phân tích cú pháp các khác biệt được tạo từ các tệp nguồn. Bằng cách sử dụng tùy chọn -r để phân biệt, bạn có thể chỉ định phạm vi bạn muốn, tức là 2100: 2600. Sử dụng sự khác biệt thống nhất, số lượng các dòng đã thay đổi (đã xóa hoặc chỉnh sửa) có thể là số dòng trong phần khác bắt đầu bằng '-'. So sánh chúng với tổng số dòng sẽ giúp bạn gần câu trả lời của mình. Đây là khóa học chỉ là một xấp xỉ. Nếu bạn đã làm việc với các bản vá lỗi trong một thời gian bạn sẽ biết rằng chỉ cần sắp xếp lại một số dòng sẽ tạo ra một diff cho thấy nhiều dòng thay đổi hơn bạn có thể mong đợi, do đó, lấy số trở lại với một hạt muối.

Wikipedia có số short description of the formats. Mặc định cho svn phải là một khác biệt thống nhất.

1

Bạn có thể sử dụng khác biệt như wds nói và thực hiện một số tập lệnh bash/awk/sed để có được các báo cáo khác nhau. Tôi không biết một công cụ cụ thể cho việc này, nhưng việc viết mã nó sẽ là một nhiệm vụ đơn giản và thú vị.

1

SVN không có công cụ tích hợp để thực hiện việc này. Có các công cụ thương mại như Fisheye có thể tạo ra các báo cáo khác nhau về hoạt động kho lưu trữ, cũng như cung cấp khả năng duyệt/tìm kiếm. Bạn có thể xem xét điều này và xem liệu nó có đáp ứng nhu cầu của bạn hay không.

Tùy chọn khác sẽ là sử dụng "nhật ký svn" và "svn diff", kết hợp với một số tập lệnh để cho bạn biết bạn đang tìm kiếm gì.

3

Số liệu bạn đang tìm kiếm (tôi tin) là code churn.

is a previous SO question trên đó!

+0

Thực ra điều tôi đang tìm kiếm là một loại mã cụ thể. Câu hỏi SO trước đây tham khảo StatSVN báo cáo mã hoạt động hàng ngày trong biểu đồ, nhưng dường như không hiển thị mã tổng hợp từ cấp độ sửa đổi này sang cấp độ khác ... trừ khi có API tôi không thể tìm thấy. Tuy nhiên, câu trả lời rất hữu ích ... và StatSVN trông rất tuyệt. – HDave

+0

Sự phát triển của StatSVN khá hữu ích. Tôi đã tương tác với anh ấy một vài lần. Ngoài ra - Tôi đặt cược bạn có thể lấy được thuật toán từ mã statsvn và viết một số Perl để làm cho nó xảy ra cho bạn. –

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