2012-01-10 40 views
5

Có công cụ miễn phí nào cho phép phân tích tĩnh mã gia tăng (đối với SVN và tốt hơn là Git) không? Hiện nay chúng tôi đang sử dụng Sonar (2.12 tôi nghĩ?) Nhưng vấn đề là thời gian cần để phân tích tất cả các mã trong dự án của chúng tôi đó là 40-60minutes. Và chúng tôi cần phải nhân nó vì chúng tôi có một số chi nhánh làm việc trên các tiểu dự án khác nhau. Đó là lý do tại sao tôi đang tìm kiếm một công cụ có thể phân tích mã từ chỉ cam kết mới nhất (mà theo kiến ​​thức của tôi Sonar không hỗ trợ) hoặc chỉ mã đã được sửa đổi trong X giờ/ngày/bất cứ điều gì.Công cụ để phân tích tĩnh gia tăng của mã?

Tôi đã tìm thấy Plugin Cutoff cho Sonar, lẽ ra phải làm những gì tôi muốn (kiểm tra chỉ mã từ các tập tin đã được sửa đổi sau một ngày nhất định) nhưng:

  1. tôi vẫn cần phải kiểm tra xem nó hoạt động
  2. kiểm tra xem nó có hỗ trợ thay đổi ngày động hay không (do đó, nó chỉ xem xét mã từ ngày cuối cùng và không phải thay đổi ngày loại trừ theo cách thủ công hàng ngày).
  3. nó dường như không được hỗ trợ tốt (thay đổi cuối cùng vào năm 2010 và nó vẫn còn trong phiên bản 0,1)

Nó sẽ là hoàn hảo nếu nó chỉ kiểm tra mã từ cam kết cuối cùng, nhưng tôi thiên đường' t thấy rằng bất cứ nơi nào.

Cũng như một câu hỏi phụ: đang chạy phân tích sau mỗi lần commit (tức là sử dụng plugin sonar hudson) một điều hay nên tránh? Tại đội cuối cùng của tôi, chúng tôi đã có sonar chạy như vậy và chúng tôi sẽ nhận được một email ngay lập tức nếu chúng tôi "phá vỡ nó" (thêm một chính/quan trọng đối với mã). Điều này rất thuận tiện vì chúng tôi biết ai là người có lỗi (dựa trên thông tin từ cam kết). Hay chúng ta nên phân tích nó ít thường xuyên hơn (cho phép nói một lần một tuần)? Trong trường hợp đó tôi sẽ phải kiểm tra xem Sonar có thể nói ai đã cam kết mã có vấn đề không.

+0

bạn đang tìm kiếm các công cụ miễn phí? – kosa

+0

ah vâng tôi quên đề cập đến điều đó: nó phải miễn phí. Không phải hoàn toàn rõ ràng nhưng phải được tự do. –

Trả lời

3

Có rất ít, đặc biệt là vì có rất nhiều công cụ/quy tắc dựa vào việc đi bộ các ngăn xếp có thể để hạn chế số lượng dương tính giả. Vì vậy, một sự thay đổi trong một hội đồng sẽ yêu cầu đánh giá lại các hội đồng gọi điện thoại là tốt, nó không phải là đơn giản như nó trông từ bên ngoài.

Để tăng tốc phân tích tĩnh, hãy xem xét đầu tư vào một đĩa bộ nhớ hoặc SSD để lưu trữ nguồn và tệp nhị phân. Sử dụng máy đa lõi, có nhiều bộ nhớ và chạy phiên bản x64 của những công cụ này bất cứ khi nào có thể. Nhiều công cụ trong số này là I/O đầu tiên và sau đó là CPU bị hạn chế. Hầu hết các cải tiến có thể được tìm thấy bằng cách giảm độ trễ và thông lượng của hệ thống và lượng trao đổi cần thiết (bằng cách có đủ bộ nhớ) để giảm thêm I/O.

Bạn cũng có thể sử dụng build build/validate shelve set build trên máy chủ build để giảm tải thời gian xây dựng cho một máy khác có thể được chia sẻ giữa các nhà phát triển.

+0

ah muốn tôi có thể nhận được tất cả/bất kỳ thiết bị bạn đang nói về :) Bây giờ tôi phải đáp ứng với một xây dựng hàng ngày với các plugin cắt. Tốt hơn là không có gì tôi đoán. –

+0

hãy thử tổng hợp những gì bạn đang mất bằng cách không đầu tư vào những điều này Bạn sẽ ngạc nhiên về tốc độ bạn có thể đủ khả năng cải tiến với thời gian đã lưu. – jessehouwing

0

Ngoài ra còn có công cụ như vậy để phân tích tĩnh như:

  1. PMD
  2. Checkstyle
  3. FindBugs

cơ hội cao mà bạn sẽ tìm thấy nó thay thế hữu ích cho Sonar.

Bạn không đề cập đến việc bạn có sử dụng công cụ Tích hợp liên tục hay không.Có lẽ bạn sẽ cần nó và chạy để chạy kiểm tra bằng cách sử dụng bất kỳ của các công cụ này.

+0

Vâng, chúng tôi đã sử dụng tất cả 3 trước đây nhưng chuyển sang sonar mà hiện tất cả các công việc hiện nay. Cũng như một CI chúng tôi đang sử dụng Hudson. –

+0

Sau đó, có lẽ bạn chỉ cần giảm số lần kiểm tra đang chạy? – altern

+0

Vâng tôi đã thực hiện 2 cải tiến: đầu tiên tôi không chạy một công việc sonar riêng biệt trong hudson, đầu tiên sẽ xây dựng toàn bộ ứng dụng kiểu CI và sau đó làm lại cho sonar, nhưng tôi bắt đầu xây dựng sonar ngay sau một trong các Các TCTD. Sau đó, tôi không phải chạy thử nghiệm và tôi chỉ phân tích những thay đổi về thời gian trễ. Toàn bộ điều bây giờ là khoảng 10mins và tôi nghĩ rằng Ill có được một kết quả tốt hơn. –

0

Tôi nhận ra tôi là muộn để đảng, nhưng có một công cụ khác có thể thích hợp với bạn: Teamscale

Teamscale kết nối với kho lưu trữ của bạn (ví dụ như Git hoặc SVN) và phân tích mã của bạn từng bước, ngay sau khi mỗi cam kết. Với điều đó, bạn nhận được phản hồi về các vấn đề mã mới/cố định gần như ngay lập tức sau khi bạn cam kết. Bạn cũng có thể xem toàn bộ lịch sử mã của bạn, danh sách cấm xác thực sai và nhiều hơn nữa. (Tiết lộ đầy đủ: Tôi là một nhà phát triển Teamscale)

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