Có một trình liên kết Java CLI đơn giản không? [đóng cửa]


86

Tôi đã cố gắng tìm một trình liên kết Java có khả năng chạy trên CLI tách biệt với Eclipse mà tôi có thể gọi là một hook cam kết cho git hoặc từ tập lệnh xây dựng tự động của chúng tôi. Có một điều như vậy tồn tại?

Lý tưởng nhất là nó cần phải kiểm tra các biến và nhập không sử dụng, tuân theo các nguyên tắc về kiểu dáng, các ngoại lệ được sử dụng đúng cách, v.v.


2
//, Đây không phải là yêu cầu đề xuất phần mềm sao?
Nathan Basanese

3
Tôi không biết mình nên hỏi ở đây hay trên meta, nhưng có gì sai với những câu hỏi như thế này mà yêu cầu đề xuất? Chắc chắn không có câu trả lời khách quan, duy nhất cho câu hỏi này nhưng một lần nữa, đó là trường hợp của nhiều câu hỏi kỹ thuật. Câu hỏi này có thể được diễn đạt lại thành "Tôi không có người nói chuyện và tôi không biết công cụ nào có sẵn, hiện tại và được sử dụng rộng rãi". Điều đó sẽ giúp đỡ? Tôi thà tìm một Q / A được sắp xếp, xếp hạng và ghi ngày tháng trên StackOverflow hơn là ở một nơi khác. Những người có loại câu hỏi này nên đi đâu, nếu không ở đây?
Kyle Krull

Câu trả lời:


78
  • SpotBugs ( Findbugs trước đó ) để tìm các lỗi hiện có. RẤT TỐT!
  • PMD để tìm các mẫu có thể dẫn đến lỗi (ví dụ: các biến không sử dụng)
  • Kiểu kiểm tra để thực thi các tiêu chuẩn và quy ước mã hóa (ví dụ: khoảng trắng, Javadoc)
  • Lỗi Prone móc ngay vào bước biên dịch ứng dụng của bạn

Tất cả các công cụ này có một số quy tắc chồng chéo. Có nhiều công cụ tương tự khác, nhưng đây là những công cụ phổ biến và được hỗ trợ nhiều nhất.


Bạn có nói rằng Findbugs và PMD làm những việc khác nhau không? Lần trước khi xem xét vấn đề này, tôi đã kết luận rằng chúng tương tự nhau đến mức chúng tôi chỉ cần một cái (và chọn PMD). Chúng tôi cũng đã chạy Checkstyle và vâng, nhận thấy rằng ngay cả PMD và Checkstyle cũng trùng lặp.
Tom Anderson

@TomAnderson - tôi sẽ nói rằng họ chắc chắn làm những điều khác biệt, vâng. có giá trị đối với cả hai (rõ ràng là cũng có chồng chéo).
jtahlborn

Vâng, các mục tiêu rất khác nhau. Findbugs cố gắng tìm ra các lỗi THỰC TẾ, đôi khi bằng cách phân tích sâu. PMD chỉ tìm kiếm các mẫu được biết là đôi khi dẫn đến lỗi. Cá nhân tôi sử dụng FindBugs và Checkstyle vì ít trùng lặp hơn.
mikeslattery

bạn có thể muốn đề cập rằng pmd có 2 loại kiểm tra khác nhau, pmd và cpd.
jtahlborn

4
Findbugs hiện là SpotBugs (trên GitHub )
Matruskan

12

Ngoài ra, hãy xem Sonar , kết hợp nhiều công cụ khác và cung cấp một cái nhìn đẹp cho nó.

các quy tắc từ Checkstyle, FindBugs, PMD, Clirr, fb-Contrib.


Không chắc chắn chính xác cách thêm nó vào hook post-commit, nhưng http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven có thể là một điểm khởi đầu tốt (đặc biệt nếu bạn đang sử dụng maven).

Thậm chí có thể cân nhắc sử dụng một trong các phương pháp được liệt kê trong http://docs.codehaus.org/display/SONAR/Continuous+Integration vì có vẻ như bạn đang cố gắng tìm kiếm công cụ tốt hơn cho cả nhóm của mình ("Mặc dù một số những tính năng đó sẽ tốt hơn những gì chúng ta có bây giờ - không có gì! "


2
+1 Bốn năm sau khi câu hỏi được đặt ra, SonarQube dường như hoạt động tích cực, hiện đại và hoàn thiện hơn. Nó được sử dụng để kết hợp các công cụ nêu trên, nhưng bây giờ nó thực hiện chúng natively tránh chồng chéo blog.sonarsource.com/...
user2518618

-1

Đây chính xác là những gì tôi đang làm: một công cụ thân thiện với CLI được sử dụng để kiểm tra chất lượng của mã Java. Nó cũng có một phương thức tương tác. Bạn có thể chạy các truy vấn đơn lẻ (để kiểm tra các cảnh báo đơn lẻ) hoặc tất cả các truy vấn cùng nhau.

Các công cụ đang ở giai đoạn đầu nhưng tôi đang làm việc trên nó hầu như mỗi ngày. Nó có sẵn ở đây:

https://github.com/ftomassetti/effectivejava

Vui lòng cho tôi biết bạn nghĩ gì về nó và hãy đặt câu hỏi.


3
Lần cam kết cuối cùng của dự án này là 2 năm trước. Không chắc liệu điều này có đang được phát triển tích cực hay không.
Daniel Eagle

Không có nó không phải là. Nhưng sau đó tôi bắt đầu làm việc trên JavaParser. Dự án đó không cung cấp cho bạn một CLI ma nó có thể được xây dựng trên nó.
Federico Tomassetti
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.