cppcheck 2.6 کی ریلیز، C++ اور C زبانوں کے لیے ایک جامد کوڈ تجزیہ کار

جامد کوڈ تجزیہ کار cppcheck 2.6 کا ایک نیا ورژن جاری کیا گیا ہے، جو آپ کو C اور C++ زبانوں میں کوڈ میں مختلف قسم کی غلطیوں کی نشاندہی کرنے کی اجازت دیتا ہے، بشمول غیر معیاری نحو کا استعمال کرتے ہوئے، جو ایمبیڈڈ سسٹمز کے لیے عام ہے۔ پلگ انز کا ایک مجموعہ فراہم کیا جاتا ہے جس کے ذریعے cppcheck کو مختلف ترقی، مسلسل انضمام اور جانچ کے نظام کے ساتھ مربوط کیا جاتا ہے، اور کوڈ کے انداز کے ساتھ کوڈ کی تعمیل کو چیک کرنے جیسی خصوصیات بھی فراہم کرتا ہے۔ کوڈ کو پارس کرنے کے لیے، آپ یا تو اپنا پارسر استعمال کرسکتے ہیں یا کلینگ سے ایک بیرونی پارسر۔ اس میں ڈونیٹ-cpu.py اسکرپٹ بھی شامل ہے تاکہ ڈیبین پیکجز کے لیے کوڈ کا جائزہ لینے کا کام کرنے کے لیے مقامی وسائل فراہم کیے جائیں۔ پروجیکٹ کا سورس کوڈ GPLv3 لائسنس کے تحت تقسیم کیا گیا ہے۔

سی پی پی چیک کی ترقی غیر متعینہ رویے سے منسلک مسائل کی نشاندہی کرنے اور ایسے ڈیزائن کے استعمال پر مرکوز ہے جو حفاظتی نقطہ نظر سے خطرناک ہیں۔ مقصد غلط مثبت کو کم کرنا بھی ہے۔ شناخت شدہ مسائل میں سے: غیر موجود اشیاء کی طرف اشارہ، صفر سے تقسیم، انٹیجر اوور فلو، غلط بٹ شفٹ آپریشنز، غلط تبدیلیاں، میموری کے ساتھ کام کرتے وقت مسائل، STL کا غلط استعمال، null pointer dereferences، اصل رسائی کے بعد چیک کا استعمال بفر، بفر اووررنز، غیر شروع متغیرات کا استعمال۔

نئے ورژن میں:

  • تجزیہ کار کور میں درج ذیل چیک شامل کیے گئے ہیں:
    • فنکشن باڈی میں ریٹرن آپریٹر کی عدم موجودگی؛
    • اوورلیپنگ ڈیٹا کو ریکارڈ کرتا ہے، غیر متعینہ رویے کا تعین کرتا ہے۔
    • جس قدر کا موازنہ کیا جا رہا ہے وہ قسم کی قدر کی نمائندگی سے باہر ہے۔
    • کاپی آپٹیمائزیشن واپسی پر لاگو نہیں ہوتی std::move(local);
    • فائل کو مختلف اسٹریمز (سٹریم) میں پڑھنے اور لکھنے کے لیے بیک وقت نہیں کھولا جا سکتا۔
  • یونکس پلیٹ فارمز کے لیے، مختلف رنگوں میں تشخیصی پیغامات کی نمائش کے لیے معاونت شامل کی گئی ہے۔
  • ویلیو فلو کے لیے علامتی تجزیہ شامل کیا گیا۔ دو نامعلوم متغیرات کے درمیان فرق کا حساب لگاتے وقت سادہ ڈیلٹا استعمال کرتا ہے۔
  • ٹوکن "define" کی فہرست کے لیے استعمال ہونے والے قواعد بھی #include سے مل سکتے ہیں؛
  • لائبریری ٹیگ اب ایک ٹیگ پر مشتمل ہوسکتا ہے، اور اس کے مطابق مفت فنکشنز، جو کنٹینرز کو قبول کرسکتے ہیں جیسے std::size، std::empty، std::begin، std::end، وغیرہ۔ کنیکٹرز کے لیے یلڈ یا ایکشن کی وضاحت کر سکتا ہے۔
  • لائبریری ٹیگ اب سمارٹ پوائنٹرز کے لیے ایک ٹیگ پر مشتمل ہو سکتا ہے جن کی ملکیت منفرد ہے۔ اس قسم کے سمارٹ پوائنٹرز کے لٹکتے حوالوں کے بارے میں اب ایک انتباہ جاری کیا گیا ہے۔
  • -cppcheck-build-dir پیرامیٹر کی پروسیسنگ کے ساتھ طے شدہ مسائل؛
  • htmlreport اب مصنف کے بارے میں معلومات ظاہر کر سکتی ہے (گٹ بلیم کا استعمال کرتے ہوئے)
  • متغیرات کے بارے میں توسیع شدہ انتباہات جو مستقل نہیں ہیں، لیکن ہو سکتے ہیں۔
  • تجزیہ کار کی جمع شدہ غلطیوں اور کوتاہیوں کو درست کر دیا گیا ہے۔

مزید برآں، Misra C 2012 کے چیک، بشمول ترمیم 1 اور ترمیم 2، رولز 1.1، 1.2 اور 17.3 کے علاوہ، مکمل طور پر لاگو ہو چکے ہیں۔ چیک 1.1 اور 1.2 کو مرتب کرنے والے کے ذریعہ انجام دیا جانا چاہئے۔ توثیق 17.3 کو کمپائلر جیسے کہ جی سی سی کے ذریعہ انجام دیا جاسکتا ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں