سؤال

هل هناك أداة تقوم بتحليل رمز .NET وتجد ظروف السباق؟

لديّ القليل من الكود الذي يحتوي على خاصية ثابتة عامة تحصل أو تنشئ مجالًا ثابتًا خاصًا. كما أن لديها طريقة ثابتة عامة تضع هذا الحقل على NULL (... نعم ، أنا أعلم! ..)

نظرًا لعدم وجود أقفال حول أي من هذه الطرق ، فمن الرهان الآمن أن الأمور ستصبح خاطئة بشكل فظيع في المستقبل. أحتاج إلى أداة ستذهب بشكل متكرر من خلال الأشياء التي تسمي أيًا من هذه الطرق ومعرفة ما إذا كان أي شيء قد ولدت على موضوع آخر.

أنا أبحث عن أداة أو ربما برنامج نصي SQL NDEPEND (إذا كان ذلك ممكنًا).

هل كانت مفيدة؟

المحلول

ربما تبحث عن واحد من هذه:


ملاحظة: هذه الإجابة من عام 2010. كما هو الحال مع جميع إجابات التوصيات ، تميل التوصيات إلى التغيير بمرور الوقت. قد تكون هناك منتجات أخرى الآن ، شطرنج كان مشروع Microsoft Research Labs قد تطور إلى منتج نهائي أو تم إلغاؤه تمامًا. يرجى أخذ هذه الإجابة مع حبة من الملح وإجراء أبحاث جديدة هي المنتجات المناسبة الآن.

نصائح أخرى

نحس سأفعل ذلك في وقت التشغيل (وليس ثابتًا) ولكن قد يكون الأمر يستحق النظر إليه.

قد ترغب في التحقق شطرنج.

لقد كنت أجرب كيفية تتبع هؤلاء بسهولة. لقد كنت أعمل على تتبع بعض حالات الجمود ، خاصةً في السيناريوهات التي يتم فيها استخدام العديد من عبارات القفل المختلفة.

هدفي هو اكتشاف الجمود قبل حدوثها ، على سبيل المثال ، إذا كان لديك موردان ، فأنت تعلم أنه يتعين عليك دائمًا استخدامهما بنفس الترتيب ، وإلا ربما تحدث.

lock (lockObj1) 
lock (lockObj2) 
{ 
    // some code
} 

... في مكان آخر في التطبيق ...

lock (lockObj2) 
lock (lockObj1) // <- I expect some "possible deadlock" detection here 
{ 
    // some code
} 

في هذه الحالة ، أستخدم lockoBJ1 ثم lockoBJ2 في مكان واحد واستخدامها بالترتيب المعاكس في مكان آخر ، وهذا شيء ترغب في تجنبه في تطبيق بالطبع ، لا تحتاج إلى استخدام عبارات القفل واحدة بعد آخر مثل على سبيل المثال ، قد يحتوي تطبيقك المعقد على العديد من الكائنات المعقدة التي تتفاعل مع بعضها البعض

لقد قمت بتحميل الكود مع حالات الاختبار هناhttps://github.com/glmnet/locktracer

انظر الإجابات هنا: ما هي أدوات التحليل الثابت المتاحة لـ C#؟

يمكن أن تفعل بعض أدوات التحليل الثابت الكشف عن طريق المسدود.

حاول ايضا FXCOP من Microsoft.

هل نظرت إلى النمل الحمراء؟ لست متأكدًا مما إذا كان سيفعل كل ما تحتاجه ولكنه منتج جيد لـ:

  • تحديد اختناقات الأداء في غضون دقائق
  • تحسين أداء التطبيق .NET
  • انتقل لأسفل إلى خطوط بطيئة من الكود مع توقيت على مستوى الخط
  • ملف تعريف ASPX و ASP.NET و C# Code و VB.NET
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top