2008-11-18 34 views
5

Kể từ hôm qua, tôi đang phân tích một dự án của chúng tôi với Ndepend (miễn phí cho hầu hết các tính năng của nó) và tôi đang sử dụng nó, và tôi càng nghi ngờ về giá trị thực của loại phần mềm này (phần mềm phân tích mã).Ndepend và tự động phân tích mã khác revelence?

Hãy để tôi giải thích, Hệ thống xây dựng một báo cáo về sức khỏe của hệ thống và lớp học bằng cách xếp hạng mọi chỉ số. Tôi nghĩ rằng đó sẽ là một điểm khởi đầu tốt để thực hiện các thay đổi nhưng hầu hết kết quả hàng đầu đều ở đây vì chúng có hơn 100 dòng trong lớp (chúng tôi có các tiêu đề lớn và chúng tôi sử dụng các kiểu nhận xét của VS). hơn số lượng Afferent Coupling level (CA) luôn quá cao và điều này gần như rất đúng đối với Interface mà chúng ta sử dụng rất nhiều ... vì vậy tại thời điểm này tôi không thấy điều gì sai nhưng NDepend dường như không thích nó (nếu bạn có đề xuất cải thiện điều đó cho tôi biết vì tôi không thấy cần thiết). Đó là samething cho số liệu được gọi là "Ủy ban Olympic Quốc" cho Sô trẻ em rằng hầu hết các giao diện của tôi quá cao ...

Đối với thời điểm này, số liệu chỉ rất hữu ích là Cyclomatic phức tạp ...

Câu hỏi của tôi là: Bạn có thấy nó có giá trị khi phân tích mã bằng Trình phân tích mã tự động như NDepend không? Nếu có, làm thế nào để bạn lọc tất cả các thông tin mà tôi đã đề cập đến mà không thực sự cho thấy sức khỏe thực sự của hệ thống?

+0

hiển nhiên là hơi cũ, nhưng tôi nghĩ bạn phải xem xét các giao diện đó. Một số lượng lớn trẻ em rất có thể làm nổi bật sự phá vỡ Nguyên tắc Trách nhiệm Duy nhất. Điều đó lần lượt có thể sẽ có ảnh hưởng đến Couer Afferent của bạn. Điều này đến lượt nó có ảnh hưởng đến khả năng bảo trì mã của bạn (khớp nối cấp cao hơn dẫn đến đau nhiều hơn khi thực hiện thay đổi). Vì vậy, nó là hữu ích. IMHO, vâng. Nó chỉ xem xét mã của bạn và xem những gì bạn có thể làm với nó để làm cho nó tốt hơn và sự hiểu biết về những gì các số liệu đang cố gắng nói với bạn. – pms1969

Trả lời

2

Số liệu thực sự chỉ là một tính năng của NDepend, bạn có cố gắng sử dụng VisualNDepend cho phép bạn phân tích dự án của mình sâu hơn nhiều so với báo cáo không? Bằng cách đọc bình luận của bạn, tôi gần như chắc chắn bạn không chơi với NDepend UI (độc lập hoặc tích hợp trong Visual Studio), đó là cách tốt nhất để lọc dữ liệu về cơ sở mã của bạn.

Tôi là một trong những nhà phát triển NDepend và chúng tôi sử dụng nó rất nhiều để phân tích mã của riêng mình. Về cơ bản, chúng tôi viết các quy tắc chất lượng của riêng mình với Code Rules over LINQ Queries (CQLinq). Những quy tắc này tự động đảm bảo rằng chúng tôi không có hồi quy về thiết kế của chúng tôi. Ở đây bạn sẽ tìm thấy danh sách khoảng 200 default code rules.

Dưới đây là một số tính năng độc đáo của NDepend và không liên quan đến số liệu mã:

Để biết danh sách đầy đủ các tính năng nếu NDepend, hãy xem here.

+0

Tôi đã chơi một litte (2 giờ) với VisualNDepend. Tôi không nói cho sản phẩm không được thực hiện tốt, nhưng hãy nói rằng ma trận ... alright tôi có mô-đun LOG của tôi với một khớp nối cao .. đó là bình thường .. hơn tôi thấy khớp nối cao giữa Persistance Facade và BusinessObject ... nó bình thường ... –

+0

Tất cả những tình huống "bình thường" đều được điều chỉnh trong NDepend (và các phần mềm khác có chỉ số), chúng có thực sự phát triển không? Đây là câu hỏi của tôi. 1 Đối với câu trả lời của bạn, tôi muốn biết ý kiến ​​và kinh nghiệm cá nhân nhưng bạn chưa kết án tôi về việc sử dụng công cụ như thế;) –

2

Tôi không nhất thiết thấy kết quả NDepend là "tốt" hoặc "xấu" trong kỹ nghệ phần mềm, luôn có lý do chính đáng tại sao ứng dụng được thiết kế theo cách đó. Tôi thấy đó là một báo cáo có thể giúp tôi chỉ ra các vấn đề với thiết kế của mình, nhưng tôi có từ cuối cùng khi quyết định xem một phương pháp có cần được tái cấu trúc hay không hay cách tôi thiết kế nó. Nói chung, đừng quá cố gắng để trả lời nếu nó có giá trị hay không. Nó chắc chắn là, thay vào đó tôi sẽ đề nghị bạn xem xét cẩn thận các kết quả. Điều này sẽ giúp bạn xem thiết kế của bạn từ góc nhìn khác và có thể có những dịp bạn quyết định cách bạn thiết kế nó là cách tốt nhất để đạt được mục tiêu ứng dụng của bạn.

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