2008-09-10 39 views
37

Một điều tôi thực sự nhớ về Java là công cụ hỗ trợ. FindBugs, Checkstyle và PMD được tạo cho một bộ ba chỉ số chất lượng mã và kiểm tra lỗi tự động.Công cụ chất lượng mã tự động cho Ruby?

Có điều gì sẽ kiểm tra lỗi đơn giản và/hoặc vi phạm kiểu mã Ruby không? Điểm thưởng nếu tôi có thể điều chỉnh nó cho các khung như Rails để các thành ngữ của Rails được tôn trọng.

+0

Nội dung bạn mô tả là [linter] (http://en.wikipedia.org/wiki/Lint_ (phần mềm)). – meagar

+1

Tôi chưa bao giờ nghe cụm từ đó trước đây và liên kết mà bạn đã tham chiếu sử dụng "các công cụ giống như lint" và không bao giờ đề cập đến từ "linter". Hầu hết thời gian tôi nghe chúng được mô tả là "công cụ phân tích tĩnh". –

+0

"Linter" và "linting" khá [thuật ngữ phổ biến và tự giải thích] (https://www.google.ca/search?q=ruby+linter&aq=f&oq=ruby+linter&aqs=chrome.0.57j62j64.2072&sourceid= chrome & ie = UTF-8 # hl = vi & sclient = psy-ab & q = mã + linter & oq = mã + linter & gs_l = serp.3..0j0i30j0i5i30j0i7i5i30.8171.8712.0.8837.5.5.0.0.0.0.109.455.3j2.5.0 ... 0.0 .. .1c.1.7.psy-ab.YB_cRC0Tyy4 & pbx = 1 & bav = on.2, hoặc.r_cp.r_qf. & Bvm = bv.44158598, d.aWM & fp = 458327f821c3aced & biw = 1154 & bih = 1050). – meagar

Trả lời

17

Gần đây tôi đã bắt đầu tìm kiếm một cái gì đó như thế này cho Ruby. Những gì tôi đã chạy ngang qua cho đến nay:

Đây có thể là nơi để bắt đầu. Thật không may tôi đã không sử dụng bất kỳ của ba đủ chưa đưa ra một ý kiến ​​tốt.

3

Dust có vẻ như nó có thể giúp bạn tìm mã không sử dụng và vô dụng, có vẻ như nó phù hợp với những gì bạn đang theo dõi.

Tôi không biết bất kỳ công cụ nào khác như vậy.
Vấn đề này là khó khăn hơn nhiều để giải quyết trong ruby ​​hơn là trong java - bạn sẽ lưu ý rằng tất cả những công cụ java thương hiệu mình như sử dụng 'phân tích tĩnh' của mã.
Phân tích tĩnh mã ruby ​​thường không thể thực hiện được, vì không có bất kỳ thứ gì tĩnh mà bạn có thể phân tích (các phương thức thường được tạo khi chạy và cứ thế)

Ở bất kỳ mức nào, một số thứ này không cần thiết ruby vì ngôn ngữ xây dựng chúng. Ví dụ, bạn không cần một tiêu chuẩn mã hóa để thực thi các lớp của bạn là tất cả NamedLikeThis vì mã sẽ không hoạt động nếu chúng không hoạt động.

P.S. Tôi để thêm tuyên bố từ chối trách nhiệm tiêu chuẩn rằng các loại công cụ đó thường có thể là một chút cá trích đỏ. Bạn có thể dành cả ngày làm cho mã của bạn tuân theo những gì công cụ nghĩ rằng nó nên được, và kết thúc với nhiều lỗi hơn bạn bắt đầu với.
IMHO giải pháp tốt nhất là viết mã của bạn một cách trôi chảy để bạn có thể đọc mã dễ dàng hơn. Không có số lượng phân tích tĩnh sẽ được tốt như một mã đọc của con người trong đó nêu rõ những gì nó có nghĩa là để làm. Có thể làm được điều này là nơi ruby ​​là năm ánh sáng trước nhiều ngôn ngữ khác. Cá nhân tôi khuyên bạn nên nỗ lực tìm hiểu cách viết lưu loát hơn và giáo dục nhóm của bạn về những điều như vậy, hơn là dành thời gian cho phân tích tĩnh.

+0

Viết lưu loát và giáo dục nhóm chắc chắn là một mục tiêu; tuy nhiên, khi thành ngữ thay đổi (ví dụ ENV ['RAILS_ENV'] == 'phát triển' thành Rails.env.development?) thì những loại công cụ này có thể rất hữu ích trong việc ngăn ngừa những thói quen xấu khi bắt đầu. –

7

Saikuro và Flog có thể phù hợp để có ý tưởng cơ bản về độ phức tạp của mã. Bạn cũng có thể sử dụng một công cụ như rcov để xem xét phạm vi kiểm tra của bạn.
Có một plugin cho các dự án Rails kết hợp tất cả các số liệu đó thành một tác vụ cào đơn lẻ. Nó được gọi là metric_fu.

1

Tôi không thấy câu hỏi này khi được hỏi, nhưng một bài đăng trên blog tôi đã làm cũng có thể trợ giúp. Trong đó tôi bao gồm một loạt các công cụ Ruby và cụ thể bao gồm 4 công cụ chất lượng mã ...

  1. Roodi
  2. Bụi
  3. flog
  4. Saikuro

Nó cũng có thể là giá trị kiểm tra ra Towelie và Flay

http://devver.wordpress.com/2008/10/03/ruby-tools-roundup/

Bây giờ chúng tôi đã kết hợp rất nhiều công cụ thành một chỉ có chất lượng mã Ruby và công cụ giám sát số liệu gọi là Caliper. Điều này có thể phù hợp với nhu cầu của bạn tốt. Nó theo dõi các số liệu chất lượng khác nhau trong suốt vòng đời của một dự án.

Caliper - improve your Ruby code

3

Một công cụ tốt đẹp, mặc dù trong giai đoạn đầu theo tác giả là khói:

http://reek.rubyforge.org/

khói hiện bao gồm kiểm tra rất ngây thơ cho đoạn mã sau mùi:

  • Phương thức dài
  • Lớp lớn
  • Feature Envy
  • kín đáo Tên
  • Danh sách dài Parameter
  • Utility Chức năng
  • Nested Vòng lặp
  • kiểm soát Couple
  • Sao chép
  • List item

Cá nhân tôi nghĩ rằng nó vẫn có quá nhiều positi sai ves, nhưng chỉ cần nhìn vào đầu ra trong một số mã của tôi đã giúp tôi suy nghĩ lại một số quyết định về phong cách và kiến ​​trúc mã.

0

Ngoài ra còn có excellent. Tôi chưa thử nó, nhưng nó trông có vẻ đầy hứa hẹn.

6

dự án tôi đã tìm thấy và thử nghiệm gần đây:

2

Code Climate là một công cụ SaaS tích hợp thông qua git và tự động "lớp" mã của bạn. Nó thông báo cho bạn thông qua các kênh khác nhau nếu có chất lượng giảm đột ngột. Giao diện người dùng đẹp.

5

Bạn có thể muốn dùng thử RuboCop. Nó là một bộ kiểm tra kiểu mã Ruby dựa trên Ruby Style Guide. Nó được duy trì khá tích cực và nó dựa trên công cụ Ruby tiêu chuẩn (như thư viện ripper). Nó hoạt động tốt với Ruby 1.9 và 2.0 và có tích hợp Emacs tuyệt vời. Tôi hy vọng bạn sẽ thấy nó hữu ích!

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