Số dòng mã của Eclipse


107

Tôi đã thử plugin Metrics và mặc dù nó rất hay nhưng nó không phải là thứ mà sếp của tôi đang tìm kiếm. Nó tính một dòng chỉ }với một dòng là một dòng và anh ấy không muốn điều đó được tính là "nó không phải là một dòng, nó là một lựa chọn phong cách". Tôi cũng cần tạo một số mẫu báo cáo về các chỉ số được cung cấp. Có bất kỳ công cụ tốt cho việc này?


1
Câu hỏi phụ: điều này có được sử dụng làm thước đo để cho thấy các nhà phát triển phần mềm của bạn đang làm việc tốt như thế nào không? Nếu vậy thì số lượng ký tự / không phải khoảng trắng có thể tốt hơn. Thậm chí nó vẫn có vẻ như là một số liệu thực sự tùy tiện ... Như một người bạn đã nói: "nói chung nhiều dòng mã hơn để giải quyết một vấn đề không tốt hơn (hoặc tệ hơn) so với ít dòng mã hơn để giải quyết cùng một vấn đề"
Sancarn

Câu trả lời:


93

Cài đặt Plugin số liệu Eclipse . Để tạo báo cáo HTML (với XML và CSV tùy chọn) right-click a project -> Export -> Other -> Metrics.

Bạn có thể điều chỉnh số liệu Dòng mã bằng cách bỏ qua các dòng trống và dòng chỉ nhận xét hoặc loại trừ Javadoc nếu bạn muốn. Để làm điều này, hãy kiểm tra tab tại Preferences -> Metrics -> LoC.

Đó là nó. Không có tùy chọn đặc biệt nào để loại trừ dấu ngoặc nhọn {}.

Plugin cung cấp một số liệu thay thế cho LoC được gọi là Số báo cáo . Đây là những gì tác giả phải nói về nó:

Số liệu này đại diện cho số lượng câu lệnh trong một phương pháp. Tôi coi đây là một biện pháp mạnh mẽ hơn so với Lines of Code vì nó rất mỏng manh đối với các quy ước định dạng khác nhau.

Biên tập:

Sau khi bạn làm rõ câu hỏi của mình, tôi hiểu rằng bạn cần xem các lỗi vi phạm số liệu thời gian thực, như cảnh báo hoặc lỗi trình biên dịch. Bạn cũng cần có chức năng báo cáo để tạo báo cáo cho sếp. Plugin mà tôi đã mô tả ở trên là để báo cáo vì bạn phải xuất các số liệu khi bạn muốn xem chúng.


Chính xác những gì tôi đang tìm kiếm và tính năng xuất tốt.
george_h

1
Phiên bản hiện tại của plugin này (3.14.1) dường như không hoạt động với Eclipse Luna (4.4). Đáng ngạc nhiên là plugin Metrics cổ xưa từ Sourceforge vẫn hoạt động ...
ejain

Nhiều người cho biết rằng nó không làm việc nữa, nhưng không ai tập tin lỗi tại SourceForge ...
Thomas Weller

6
Vâng. Tôi không thể thấy bất kỳ tùy chọn nào trong đó right click a project -> Export, tôi đã cài đặt plugin trực tiếp từ eclipse marketplace - phiên bản là - Eclipse Metrics 3.12.0, mọi người có thể giúp tôi không. cảm ơn!
OverrockSTAR

2
Có một phiên bản đang hoạt động - github.com/qxo/eclipse-metrics-plugin/blob/master/updatesite/…
Damian

263

Luôn luôn có "vũ phu":

  1. Tìm kiếm-> Tệp

  2. Nhập nội dung sau vào "Chứa văn bản" -> ^.*$. Sau đó, chọn hộp kiểm "Biểu thức chính quy"

  3. Nhập nội dung sau vào "Mẫu tên tệp" -> *.java

  4. Nhấp vào "Tìm kiếm"

  5. Kiểm tra số lượng kết quả phù hợp trong Tab "Tìm kiếm".


11
Điều này đã làm chính xác những gì tôi đang tìm kiếm. Nó không loại trừ dấu ngoặc hoặc bất cứ thứ gì lạ mắt, nhưng nó đưa ra câu trả lời mà tôi đang tìm kiếm, TRONG nhật thực, KHÔNG có plugin. Cảm ơn!
Luke

24
Bạn cũng có thể sử dụng \n[\s]*và nó cũng sẽ bỏ qua các dòng trống
Ascalonian

3
Giải pháp rất hay mà không cần plugin khác! +1
Stephan

2
Tác phẩm này với mới nhất (neon) eclipse nhưng số liệu plugin không
Anatoly Yakimchuk

2
Nhận xét @omerio cũng phải được nhập và là một phần cần thiết của bất kỳ mã nguồn nào. Không tính những điều đó gây ra chúng sẽ không quan trọng hoặc chỉ là văn bản mù - đó là một sai lầm nghiêm trọng.
Axel Amthor

23

Nếu sử dụng OSX hoặc * NIX

Nhận tất cả các dòng mã java thực tế từ các tệp * .java

find . -name "*.java" -exec grep "[a-zA-Z0-9{}]" {} \; | wc -l

Nhận tất cả các dòng từ tệp * .java, bao gồm các dòng trống và nhận xét

find . -name "*.java" -exec cat | wc -l

Nhận thông tin trên mỗi tệp, điều này sẽ cung cấp cho bạn [đường dẫn đến tệp + "," + số dòng]

find . -name "*.java" -exec wc -l {} \;

Chạy lệnh đầu tiên trên OSX tôi nhận được: grep: không hợp lệ nhân vật phạm vi 0
omerio

Điều này đã làm việc cho tôi tìm thấy. -tên "* .java" | mèo xargs | grep '[alnum]' | wc -l
omerio

2
nên đượcfind . -name "*.java" | xargs cat | grep "[a-zA-Z0-9{}]" | wc -l
chiến binh107

8

Một cách khác là sử dụng một tiện ích loc khác, chẳng hạn như LocMetrics .
Nó cũng liệt kê nhiều công cụ định vị khác . Việc tích hợp với Eclipse sẽ không luôn ở đó (cũng như với Metrics2 , bạn có thể kiểm tra vì nó là phiên bản mới hơn Metrics ), nhưng ít nhất những công cụ đó có thể suy luận theo các dòng logic (được tính bằng cách tính tổng dấu chấm phẩy đầu cuối và dấu ngoặc nhọn đầu cuối).
Bạn cũng có thể kiểm tra bằng các số liệu nhật thực được điều chỉnh phù hợp hơn với những gì bạn mong đợi.


7

Một công cụ khác là Google Analytix , cũng sẽ cho phép bạn chạy các chỉ số ngay cả khi bạn không thể xây dựng dự án trong trường hợp có lỗi


Mặc dù trang web nói rằng nó chỉ dành cho các phiên bản cũ hơn của nhật thực, nhưng nó hoạt động tốt trên Luna đối với tôi. Cảm ơn vì điều đó.
CamHart

7

Một cách có thể để đếm các dòng mã trong Eclipse:

bằng trình đơn Tìm kiếm / Tệp ..., chọn tab Tìm kiếm Tệp, chỉ định \ n [\ s] * cho Chứa văn bản (điều này sẽ không tính các dòng trống) và đánh dấu vào Biểu thức chính quy.

Mẹo đội mũ: www.monblocnotes.com/node/2030


wow, đó là siêu thiên tài. rất vui khi nó không tính dòng trống, miễn là bạn không được trả bằng số ...
JohnnyB

1

Tôi đã tạo một plugin Eclipse, có thể đếm số dòng mã nguồn. Nó hỗ trợ Kotlin, Java, Java Script, JSP, XML, C / C ++, C # và nhiều loại tệp khác.

Mời các bạn xem qua. Bất kỳ thông tin phản hồi sẽ được đánh giá cao!

kho lưu trữ git-hub ở đây


0

ProjectCodeMeter đếm LLOC (các dòng mã logic) chính xác như bạn đã mô tả (chỉ các dòng hiệu quả). nó tích hợp vào eclipse như một công cụ đo lường mã bên ngoài , tuy nhiên, nó không phải là thời gian thực, nó tạo ra một báo cáo. thực tế nó đếm nhiều chỉ số mã nguồn như độ phức tạp, phức tạp về số học, chuỗi mã cứng, hằng số .. thậm chí ước tính thời gian phát triển tính bằng giờ .


0

Đối với phân tích tĩnh, tôi đã sử dụng và đề xuất SonarQube chạy gần như tất cả các chỉ số bạn có thể muốn trên nhiều loại ngôn ngữ và miễn phí trong phiên bản cơ bản (bạn phải trả tiền để phân tích các loại ngôn ngữ mà tôi muốn. chỉ với một khẩu súng vào đầu tôi).

Bạn phải cài đặt nó dưới dạng ứng dụng web chạy phân tích từ kho mã nguồn của bạn, nhưng nó cũng có một plugin Eclipse .

Sẽ là quá mức cần thiết nếu bạn chỉ muốn biết một lần duy nhất, có bao nhiêu dòng mã trong dự án của bạn. Nếu bạn muốn theo dõi các chỉ số theo thời gian, so sánh giữa các dự án, cảnh báo cháy khi vượt quá ngưỡng, v.v., thật tuyệt vời.

Tiết lộ: Tôi không có mối quan hệ tài chính nào với SonarSource.


0

Điều đầu tiên cần làm là xác định định nghĩa của bạn về "dòng mã" (LOC). Trong cả câu hỏi của bạn

Nó tính một dòng chỉ với một} là một dòng và anh ấy không muốn điều đó được tính là "nó không phải là một dòng, nó là một lựa chọn phong cách"

và trong các câu trả lời, ví dụ:

Bạn có thể điều chỉnh số liệu Dòng mã bằng cách bỏ qua các dòng trống và dòng chỉ nhận xét hoặc loại trừ Javadoc nếu bạn muốn

bạn có thể nói rằng mọi người có ý kiến ​​khác nhau về những gì tạo nên một dòng mã. Đặc biệt, mọi người thường không chính xác về việc họ thực sự muốn số dòng mã hay số câu lệnh. Ví dụ: nếu bạn có dòng thực sự dài sau đây chứa đầy các câu lệnh, bạn muốn báo cáo điều gì, 1 LOC hay hàng trăm câu lệnh?

{ a = 1; b = 2; if (a==c) b++; /* etc. for another 1000 characters */ }

Và khi ai đó hỏi bạn rằng bạn đang gọi LOC là gì, hãy đảm bảo rằng bạn có thể trả lời, ngay cả khi đó chỉ là "định nghĩa của tôi về LOC là định nghĩa của Metrics2". Nói chung, đối với hầu hết các mã được định dạng phổ biến (không giống như ví dụ của tôi), các công cụ phổ biến sẽ cho các con số khá giống nhau, vì vậy Metrics2, SonarQube, v.v. đều ổn, miễn là bạn sử dụng chúng một cách nhất quán. Nói cách khác, không đếm LOC của một số mã bằng một công cụ và so sánh giá trị đó với phiên bản mới hơn của mã đó được đo bằng một công cụ khác.

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.