2010-02-07 22 views
5

Có nhiều công cụ mà chúng ta có thể sử dụng để hiển thị các phụ thuộc giữa các mô-đun, các tệp mã nguồn, các lớp, hoặc các hàm vv Nhưng dường như không có công cụ để phân tích sự phụ thuộc giữa các biến. Với đồ thị phụ thuộc của các biến sẽ hữu ích cho việc hiểu và tái cấu trúc mã.Có công cụ nào có thể phân tích sự phụ thuộc giữa các biến trong các chương trình C# không?

Ví dụ, nếu biến b chỉ được sử dụng để tính giá trị của biến c như sau:

b = a; 
.... 
c = b + 2; 

Có lẽ chúng ta có thể loại bỏ biến b để làm cho mã dễ đọc hơn:

.... 
c = a + 2; 

Loại nhà máy này có thể rất khó nếu mã rất phức tạp hoặc có nhiều mùi hôi.

Có công cụ nào có thể phân tích sự phụ thuộc giữa các biến trong C# hoặc các ngôn ngữ lập trình khác không?

+1

Bằng cách "biến" làm bạn có nghĩa là "biến cục bộ" đặc biệt, hoặc làm bạn có ý nghĩa địa phương tham số, chính thức, mảng bạn có quan tâm về các biến bên ngoài của lambdas? Tham số Lambda? Người dân địa phương trong lambdas? Hoisted người dân địa phương trong các khối lặp? Phân tích các mối quan hệ betwe vi các biến tùy ý có thể khá phức tạp, phức tạp hơn nhiều so với người dân địa phương, đặc biệt khi bạn xem xét việc thay đổi bí danh thông qua các tham số "ref". –

+0

Eric Lippert: có thể phân tích nhiều loại "biến" hơn, công việc xử lý mã nguồn sẽ dễ dàng hơn. Tôi tìm thấy thường có nhiều phụ thuộc phức tạp khi tôi cố gắng refactor mã di sản. – askalee

Trả lời

1

Resharper là công cụ tốt để phân tích mã C#. Ít nhất nó sẽ cho bạn thấy biến không sử dụng và biến mà bạn gán giá trị nhưng không bao giờ được sử dụng.

Nếu bạn xem xét việc tái cấu trúc mã nghiêm ngặt, bạn có thể viết kiểm tra đơn vị để chắc chắn hơn rằng bạn không phá vỡ điều gì đó.

1

Phoenix Project tại Microsoft Research đã cho phép một số công cụ khá thú vị. Một bản demo tôi đã thấy cho thấy làm nổi bật dữ liệu phụ thuộc. Vì vậy, bạn có thể di chuột qua 'c' trong ví dụ của mình và tất cả các biểu thức đóng góp vào phép tính đó sẽ được highlighed. Đó là một bản demo của phượng hoàng, hơn là một công cụ phát triển hoàn toàn chính thức, nhưng rất tuyệt vời để thấy rằng nó có thể được thực hiện. Phoenix là free download, vì vậy bạn có thể xem loại ứng dụng mẫu nào được bao gồm.

0

Xem thảo luận về cách phân tích luồng dữ liệu DMS Software Reengineering Toolkit (kiểm soát và). Đây là cơ bản phân tích trình biên dịch thông tin của dòng chảy thông tin, trong đó bao gồm những gì được gọi là def-sử dụng chuỗi. Chuỗi sử dụng hiển thị cách một giá trị (một nhiệm vụ cụ thể) được tiêu thụ bởi các phần khác của chương trình.

Các luồng thông tin này được tính là cấu trúc dữ liệu và do đó chúng dễ thấy trực tiếp. (Trang web không hiển thị hình ảnh nhưng chúng được kết xuất đồ thị kết xuất vào dot. Để làm cho công cụ này trở thành một công cụ là nỗ lực nhiều hơn.

Chúng tôi đã xây dựng chương trình slicer với điều này, hiển thị thông tin này trong giao diện người dùng. không phải là thương mại có sẵn được nêu ra.

Grammatech làm cho máy thái chương trình như vậy cho C và Ada, tôi nghĩ vậy.

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