در پروسه ساخت یک نرمافزار هدف این است که برنامه تولید شده از قابلیت اطمینان بالایی برخوردار باشد و تیم توسعه همواره در نظر دارد که سرعت توسعه بالا رود، لذا برای رسیدن به این مقصود تست کردن نرمافزار امری ضروری است و تحلیل کد استاتیک تست کردن را آسان میکند،اما نمی توان آن را جایگزین ابزارهای تست انتها به انتها دانست.تحلیل کد استاتیک بر خلاف روشهای تست دستی یا اتوماتیک، قبلاز ساخت برنامه انجام میشود .یعنی تحلیل کد استاتیک به ما این امکان را میدهد تا باگ های احتمالی، کدهای مشکوک و آسیبپذیریهای امنیتی را حتی قبلاز اینکه کد وارد محیط تولید شود، شناسایی کنیم.بهطورکلی تحلیل کد استاتیک روشی برای رفع اشکال با بررسی کد منبع قبلاز اجرای برنامه است این کار با تجزیهوتحلیل مجموعهای از کدها در برابر مجموعهای از قوانین کدگذاری انجام میشود .
تحلیل استاتیک نمیتواند تمام ایرادات یک برنامه را تشخیص دهد همچنین تحلیل استاتیک دربرابر مسائلی چون عدم وجود درک از مقصود توسعهدهنده، نقصهای احتمالی منجر به مثبت کاذب و منفی کاذب و قوانینی که بهطور ایستا قابلاجرا نیستند نمیتواند پاسخی ارائه دهد.
مزایای ابزارهای تحلیل استاتیک عبارتند از: سرعت ، عمق و دقت باید توجه داشت که در هنگام تصمیمگیری اینکه کدام ابزار برای شما مناسب است مواردی چون زبان برنامهنویسی واستانداردها را در نظر بگیریم.
ابزار SonarQube : یکی از محبوبترین ابزارهای تحلیل کد استاتیک ابزارSonarQube است.این ابزار یک پلتفرم متن باز برای بازرسی مداوم کیفیت کد است و بررسیهای خودکار را از طریق تجزیهوتحلیل کد استاتیک انجام میدهد.این ابزار میتواند گزارشهای متنوع ازجمله گزارشات کدهای تکراری، استانداردهای کدگذاری، تستهای واحد، پوشش کد، پیچیدگی کد، اشکالات و آسیبپذیریهای امنیتی ارائه دهد .همچنین میتواند با محیطهای توسعه معروف همانندVisual studio codeوIntelliJ IDEAاز طریق پلاگینSonar Lint ادغام شود.درضمن این ابزار از بیشاز۲۵ زبان برنامهنویسی قابلتوجه همانندC#،Java،PHP پشتیبانی میکند.
منابع :
https://www.amazon.com/Secure-Programming-Static-Analysis-Brian/dp/0321424778
https://www.wiley.com/en-ie/Static+Analysis+of+Software:+The+Abstract+Interpretation-p-9781848213203
https://www.bitegarden.com/static-code-analysis-with-sonarqube