2010-05-25 33 views
6

Tôi đang cố gắng sử dụng sloccount từ bên trong hudson để thu thập thống kê về codebase của chúng tôi, tuy nhiên theo mặc định sloccount thu thập thông tin về tất cả các file, ngay cả những người đó là "ẩn" (ví dụ. .hideme). Điều này có nghĩa là số liệu thống kê bị sai lệch vì chúng bao gồm các số từ các tệp trong thư mục .svn.Làm cách nào để bỏ qua thư mục .svn khi sử dụng sloccount?

Có cách nào tôi có thể yêu cầu sloccount bỏ qua bất kỳ tệp/thư mục nào bắt đầu bằng . không?

Trả lời

4

cách tiếp cận cuối cùng của tôi là để loại bỏ các thư mục .svn từ đầu ra sed:

sloccount --wide --details $DIR | sed "/\/\.svn\//d" > sloccount.sc 
+0

Giải pháp của Dave không lãng phí thời gian vào các tệp trong thư mục '.svn' ở vị trí đầu tiên. –

6

Bạn có thể chỉnh sửa mã nguồn của sloccount để không tìm kiếm trong các thư mục bắt đầu bằng dấu chấm. Nếu không, đây là thứ tôi đã nấu trên dòng lệnh. Về cơ bản, bạn có thể chỉ định danh sách đường dẫn tệp trên dòng lệnh làm đối số cho sloccount và nó sẽ chỉ phân tích các tệp đó. Vì vậy, điều này sẽ tìm thấy tất cả các tập tin theo PWD, không bao gồm các tập tin ẩn, và sau đó vượt qua chúng như là đối số để sloccount.

find . \(! -regex '.*/\..*' \) -type f | \ 
tr '\n' ' ' | \ 
xargs sloccount 
+0

Bạn có chắc là bạn cần lệnh 'tr'? Làm thế nào về việc chuyển cờ '-print0' sang' find' và cờ '-0' tới' xargs' để xử lý đường dẫn và tên tệp có dấu cách? –

+0

Sử dụng hỗ trợ xargs tìm bao gồm: '-exec sloccount {} \ +' –

1

Tôi đang sử dụng các mục tiêu kiến ​​sau đây để xây dựng một "sloccount.sc" không có tập tin trong" svn ":

<target name="sloccount"> 
    <echo message="build sloccount report" /> 
    <exec executable="sloccount" failonerror="true"> 
     <arg value="--details" /> 
     <arg value="--wide" /> 
     <arg value="source_folder" /> 
     <redirector output="sloccount.sc"> 
      <outputfilterchain> 
       <linecontains negate="true"> 
        <contains value=".svn" /> 
       </linecontains> 
      </outputfilterchain> 
     </redirector> 
    </exec> 
</target> 

Chỉ cần thay thế" source_folder "bằng tên thư mục nguồn bạn muốn quét và yêu cầu Jenkins tạo mục tiêu kiến" sloccount ".

Lưu ý rằng điều này yêu cầu kiến ​​1.7.1 trở lên.

4

Sử dụng này:

find . -path '*/.*' -prune -o -type f -exec sloccount {} \+ 

-exec tránh được xargs hacks thấy trong một số các câu trả lời khác. Đây là hỗ trợ xargs được tìm thấy bao gồm. Không cần phải chạy regexps, globbing là đủ. Pruning subdirs cũng hiệu quả hơn.

Cập nhật: cũng có thể, bạn có thể muốn nâng cấp lên phiên bản phụ gần đây hơn. Định dạng thanh toán mới (sau svn upgrade) chỉ sử dụng một thư mục .svn duy nhất, vì vậy thường bạn chỉ có thể thực hiện sloccount src ngay bây giờ.

1

Người ta có thể bỏ qua .svn thư mục bằng cách thu thập các file từ tất cả các thư mục khác sử dụng find:

find . -not -wholename '*/.svn/*' -type f | xargs sloccount 
7

Cú pháp này là dễ dàng hơn để duy trì và mở rộng (đó là rất quan trọng khi bạn cần phải loại trừ một số thư mục):

sloccount --duplicates --wide --details . | grep -v -e '.svn' > sloccount.sc 

Ví dụ về chuỗi trừ:

sloccount --duplicates --wide --details . | grep -v -e '.svn' -e 'thirdparty' > sloccount.sc 


NB: Tôi sử dụng nó và nó hoạt động trên Jenkins của tôi

+0

Nên cẩn thận với điều này, nó thực sự chỉ lọc đầu ra không cập nhật bất kỳ tổng số. –

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