איך אפשר לדבג את הקוד של FxCop
אז כמו שהבטחתי, בסוף הפוסט הקודם, הפוסט הנוכחי ידגים איך אפשר לדבג קוד של Code Analysis שאנחנו כותבים.
אז, בדרך כלל כשאנחנו רוצים לדבג Visual Studio, אנחנו פותחים עוד Visual Studio, ועושים Attach to Process, (תחת תפריט Debug) ובחרים את ה Process שזה בדרך כלל, אותו Visual Studio שאנחנו רוצים לדבג, וברגע שיש Exception, אנחנו מקבלים חיווי ב Visual Studio השני.
אבל, מסתבר שב Code Analysis זה פשוט לא עובד, אני לא סגור על הסיבות, אבל זה המציאות, וצריך להתמודד עם זה, ולכן כדי שנוכל לדבג את הקוד, אנחנו צריכים לעשות את התהליך הבא:
דבר ראשון בתוך הקוד של ה Code Analysis שאנחנו כותבים, אנחנו צריכים להודיע ל debugger שאנחנו רוצים שכשהוא יגיע לשורה מסוימת, שיעצור שם ושלא ימשיך, נסתכל על הקוד הבא:
1 public override ProblemCollection Check(Member member)
2 {
3 Debugger.Break();
4
5 Method method = member as Method;
6 if (method != null)
7 {
8 VisitMethod(method);
9 }
10
11 if (Problems.Count == 0)
12 {
13 return base.Check(member);
14 }
15
16 return Problems;
17 }
שימו לב לשורה 3, אנחנו מודיעים ל debugger בצורה חד משמעית, כשאתה מגיע להריץ את השורה הזאת, תעצור ואל תמשיך,
בשלב שני, נקמפל את הקוד שלנו, ונזרוק את ה dll ל: C:\Program Files\Microsoft Visual Studio 9.0\Team Tools\Static Analysis Tools\FxCop\Rules
(מי שלא זוכר או לא יודע לכתוב חוקים עבור Code Analysis מוזמן לקרוא את
הפוסט הקודם)
בשלב שלישי, תחת Tools->Options->Debugging->General, נוריד את הסימון מ Enable Just Ny Code.
בשלב רביעי, תחת Debug->Exceptions, נסמן את Common Language Runtime Exceptions ב Thrown
בשלב חמישי נפתח Visual Studio שני, שבו נמצא הקוד שאנחנו מריצים עליו את ה Code Analysis, ונריץ את Code Analisys,
(בשלב הזה אסור לעשות Attach ל Visual Studio שבו נמצא ה Code Analysis)
כשה Debugger יגיע להוראה שאומרת לו לעצור, אנחנו נקבל את המסך הבא:
במדה ונלחץ על Debug, נקבל את המסך הבא:
אנחנו כמובן נבחר ב Instance של הקוד שלנו (זה שמסומן)
בדרך כלל נקבל את ההודעה הבאה:
נוסיף BreakPoint לשורה, שאנחנו רוצים לעצור שם ונלחץ על F5, ואז נוכל לדבג.
תהנו.
ותודה לאלכס אבוגוב על העזרה.