2010-08-21 22 views
10

Thông thường khi phát triển với VS2010 Ultimate, tôi muốn kiểm tra vị trí của một giá trị mã (codebase) đang được thiết lập (vì vậy đây là một nhiệm vụ).Tìm tất cả các địa điểm mà một biến đã được đặt?

Có cách nào, sử dụng VS2010 Ultimate hoặc công cụ gỡ lỗi bên thứ 3 để có thể nhận tất cả các địa điểm trong một cơ sở mã nơi biến đã được đặt hoặc đã nhận?

+1

Bạn có ý nghĩa gì bởi 'biến'? Cụ thể hơn, bạn có bao gồm các trường và thuộc tính hay bạn đang đề cập cụ thể đến các biến phương pháp cục bộ? –

+0

@dotnetdev: Tôi khuyên bạn nên: a) xóa "hoặc đã nhận" khỏi câu hỏi của bạn hoặc b) thay đổi để nói "chỉ đặt hoặc chỉ nhận" so với "đặt hoặc nhận". Như vậy, câu hỏi của bạn (theo quy tắc ngữ pháp tiếng Anh và lập trình) có nghĩa là bạn không quan tâm nếu đọc tham khảo cũng * ngoài ra * để viết tham khảo (trong trường hợp này bạn chỉ có thể sử dụng tính năng Find All References của VS) . Tôi khá chắc chắn bạn đang tìm kiếm một cách để tìm tài liệu tham khảo viết * chỉ *. – Tom

Trả lời

0

Bạn có thể sử dụng lệnh "Tìm tài liệu tham khảo" (Ctrl + K, Ctrl + R)

-1

Như Daniel Pratt hỏi trên, tôi không chắc chắn cho dù bạn có nghĩa là tài sản, biến hay cái gì khác. Tuy nhiên, một chức năng liên quan mà tôi sử dụng rất nhiều là "Tìm Usages", có thể đạt được bằng cách nhấp chuột phải vào các phương thức, lớp học, thành viên vv. để sàng lọc thông qua thủ công sau khi các bài tập.

-1

Đôi khi các kỹ thuật cũ trở thành tốt nhất. Có thể bạn có thể tìm kiếm toàn bộ giải pháp với tổ hợp phím CTRL + Shift + F

+0

Ctrl + Shift + F sẽ hữu ích. Tôi đã sử dụng để giữ điều này như là hình nền máy tính để bàn. http://www.microsoft.com/downloads/details.aspx?FamilyID=92CED922-D505-457A-8C9C-84036160639F&displaylang=en HTH :) –

+0

-1. Điều này sẽ tìm tất cả các tham chiếu, đó là cả khi giá trị đang được đặt hoặc được tham chiếu. –

+0

cũng thậm chí còn tồi tệ hơn "Tìm Usages" –

8

Vâng, đó là tính năng Value Origins đó là có sẵn trong Reshaper 5.

Tìm kiếm trên toàn bộ giải pháp với tổ hợp phím Ctrl + Shift + F hoặc sử dụng Tìm Usages như một số người đã đề xuất không trả lời câu hỏi của OP - nó sẽ hiển thị mọi cách sử dụng biến, không chỉ các bài tập, và nhanh chóng thông qua danh sách đó có thể tẻ nhạt và tốn thời gian.

7

Bạn có thể sử dụng CTRL + SHIFT + F với cụm từ thông dụng: MyVariable [\ t \ r \ n \ v \ f] * = [^ =], điều này sẽ tìm kiếm "myVariable" bên trái của " = "dấu.

+1

Đối với VB.Net (kể từ khi OP không chỉ định), điều này cũng sẽ đưa ra tất cả các tài liệu tham khảo, nơi có một kiểm tra bình đẳng, kể từ VB.Net không sử dụng == . – Flater

+0

Điều gì sẽ xảy ra nếu biến đó được chuyển thành tham số 'ref' hoặc' out' sang một số phương thức khác để sửa đổi nó? –

+0

Giống như bạn, 'variableName =' là những gì tôi tìm kiếm trong mã hầu hết các lần, khi không có 'ref' hoặc' out' hiện tại. –

2

Disclaimer: Tôi đang liên kết với OzCode

Bạn có thể các Gỡ lỗi add-on OzCode nó có một tính năng gọi là Setter phá vỡ điểm Setter phá vỡ điểm mà lượt truy cập khi một tài sản của một đối tượng thay đổi.

enter image description here

0

Dưới đây là một giải pháp mạnh mẽ hơn sử dụng Visual Studio mà không cần công cụ của bên thứ 3:

1. Đối với tất cả ngoại trừ sau thông/Pre-sửa chữa Tăng và Shift Nhiệm vụ:

(^|[^\w.])MyVariable\s*([\+\-\*/%&|\^]|)=[\w\s] 

2. Đối với bài tập gia tăng và sửa chữa sau/sửa chữa trước:

((^|[^\w.])MyVariable\s*(\+\+|--)|(\+\+|--)\s*MyVariable[^\w.]|(^|[^\w.])MyVariable\s*(<<|>>)=) 

3. Đối Out/Ref Các tham số (N/A cho Properties):

(^|[^\w.])(out|ref)\s+MyVariable[^\w.] 

hãy cẩn thận:

  1. C# chỉ .NET.
  2. Chỉ Visual Studio 2012+.
  3. Không hoạt động nếu "=" được theo sau bởi EOL.
  4. Không hoạt động nếu "MyVariable" được theo sau bởi EOL.
  5. Tùy thuộc vào điểm xuất phát và phạm vi Tìm và phạm vi của Biến/Thuộc tính, có thể tìm thấy nhiều tham chiếu hơn/ít hơn mức cần thiết. Khi nghi ngờ, lỗi trên mặt của "nhiều hơn", vì vậy bạn sẽ không bỏ lỡ bất cứ điều gì.
  6. Không hoạt động đối với "." - Biến số/Thuộc tính có tiền tố. 6.1. Trừ khi bạn bao gồm nó như một phần của "MyVariable" (nghĩa là "MyStructVariable.MyStructField" hoặc "MyObjectVariable.MyObjectField") nhưng bạn có nguy cơ tìm kiếm quá ít tài liệu tham khảo vì có thể có các biến cấu trúc hoặc đối tượng khác được sử dụng để thực hiện nhiệm vụ cho cùng một cấu trúc hoặc Trường đối tượng hoặc thuộc tính.
Các vấn đề liên quan