Таҳлили статикиро дар раванд татбиқ кунед, на аз он барои дарёфти хатогиҳо

Маро ба навиштани ин мақола миқдори зиёди маводҳо оид ба таҳлили статикӣ, ки ҳарчи бештар ба таваҷҷӯҳи ман меоянд, водор сохт. Аввалан, ин Блоги PVS-studio, ки худро дар Habré бо кӯмаки баррасиҳои хатогиҳое, ки тавассути асбоби онҳо дар лоиҳаҳои кушодаасос пайдо кардаанд, фаъолона пешбарӣ мекунад. Ба наздикӣ PVS-studio амалӣ карда шуд Дастгирии Java, ва албатта, таҳиягарони IntelliJ IDEA, ки таҳлилгари дарунсохтаи он эҳтимолан пешрафтатарин барои Java имрӯз аст, дур истода наметавонист.

Ҳангоми хондани чунин баррасиҳо, шумо эҳсос мекунед, ки мо дар бораи эликсири ҷодугарӣ гап мезанем: тугмаро пахш кунед ва ин аст - рӯйхати камбудиҳо дар пеши назари шумо. Чунин ба назар мерасад, ки ҳангоми такмил додани анализаторҳо, хатогиҳои бештар ва бештар ба таври худкор пайдо мешаванд ва маҳсулоти сканкардаи ин роботҳо бе кӯшиши мо беҳтар ва беҳтар мешаванд.

Аммо эликсирҳои ҷодугарӣ вуҷуд надоранд. Ман мехостам дар бораи он чизе, ки одатан дар паёмҳо сухан намеравад, ба монанди "инҳо он чизест, ки роботи мо метавонад пайдо кунад" сӯҳбат кунам: анализаторҳо чӣ кор карда наметавонанд, нақш ва ҷои воқеии онҳо дар раванди таҳвили нармафзор чист ва чӣ гуна дуруст татбиқ кардани онҳо. .

Таҳлили статикиро дар раванд татбиқ кунед, на аз он барои дарёфти хатогиҳо
Ratchet (манбаъ: wikipedia).

Он чизеро, ки анализаторҳои статикӣ ҳеҷ гоҳ карда наметавонанд

Таҳлили коди сарчашма аз нуқтаи назари амалӣ чист? Мо баъзе рамзи сарчашмаро ҳамчун вуруд ва ҳамчун баромад таъмин мекунем, дар муддати кӯтоҳ (аз санҷишҳои иҷрошаванда хеле кӯтоҳтар) мо дар бораи системаи худ баъзе маълумот мегирем. Маҳдудияти асосӣ ва аз ҷиҳати математикӣ бартарафнашаванда дар он аст, ки мо метавонем танҳо як синфи хеле танги иттилоотро бо ин роҳ ба даст орем.

Намунаи машҳуртарини мушкилоте, ки бо истифодаи таҳлили статикӣ ҳал карда намешавад мушкилоти хомӯш: Ин теоремаест, ки исбот мекунад, ки алгоритми умумиеро таҳия кардан ғайриимкон аст, ки метавонад аз коди сарчашмаи барнома муайян кунад, ки оё он дар як муддати ниҳоӣ давр мезанад ё қатъ мешавад. Тавсеаи ин теорема аст Теоремаи Райс, ки дар он гуфта мешавад, ки барои ҳама гуна хосиятҳои ғайриоддии функсияҳои ҳисобшаванда, муайян кардани он, ки оё барномаи худсарона функсияро бо чунин хосият арзёбӣ мекунад, як масъалаи аз ҷиҳати алгоритмӣ ҳалнашаванда аст. Масалан, навиштани анализаторе, ки аз ягон коди сарчашма муайян карда метавонад, имконнопазир аст, ки барномаи тахлилшаванда амали алгоритме мебошад, ки масалан квадрати ададро хисоб мекунад ё не.

Ҳамин тариқ, фаъолияти анализаторҳои статикӣ маҳдудиятҳои бартарафнашаванда дорад. Анализатори статикӣ ҳеҷ гоҳ наметавонад дар ҳама ҳолатҳо чизҳоеро, ба монанди пайдоиши "истиснои нул" дар забонҳое, ки арзиши нулро фароҳам меорад ё дар ҳама ҳолатҳо барои муайян кардани пайдоиши " атрибут ёфт нашуд" бо забонҳои ба таври динамикӣ чопшуда. Ҳама чизеро, ки таҳлилгари пешрафтаи статикӣ карда метавонад, таъкид кардани ҳолатҳои махсус аст, ки шумораи онҳо дар байни ҳама мушкилоти имконпазир бо коди сарчашмаи шумо, бе муболиға, пастшавии сатил аст.

Таҳлили статикӣ дар ҷустуҷӯи хатогиҳо нест

Аз гуфтахои боло хулоса мебарояд: тахлили статикй воситаи кам кардани нуксонхои программа нест. Ман мехостам бигӯям: вақте ки бори аввал ба лоиҳаи шумо муроҷиат кунед, он дар код ҷойҳои "ҷолиби" -ро пайдо мекунад, аммо, эҳтимоли зиёд, ягон камбудие, ки ба сифати барномаи шумо таъсир мерасонад, пайдо намекунад.

Намунаҳои нуқсонҳое, ки аз ҷониби анализаторҳо ба таври худкор пайдо мешаванд, таъсирбахшанд, аммо мо набояд фаромӯш кунем, ки ин мисолҳо тавассути скан кардани маҷмӯи калони кодҳои калон пайдо шудаанд. Бо ҳамин принсип, ҳакерҳо, ки имкони санҷидани якчанд паролҳои оддиро дар шумораи зиёди ҳисобҳо доранд, дар ниҳоят он ҳисобҳоеро пайдо мекунанд, ки пароли оддӣ доранд.

Оё ин маънои онро дорад, ки таҳлили статикӣ набояд истифода шавад? Албатта на! Ва маҳз бо ҳамин сабаб, ки ҳар як пароли навро тафтиш кардан лозим аст, то боварӣ ҳосил кунед, ки он ба рӯйхати қатъии паролҳои "оддӣ" дохил карда шудааст.

Таҳлили статикӣ бештар аз дарёфти хатоҳост

Дарвоқеъ, масъалаҳое, ки тавассути таҳлил амалан ҳал мешаванд, хеле васеътаранд. Дар ниҳоят, дар маҷмӯъ, таҳлили статикӣ ҳама гуна санҷиши рамзҳои ибтидоӣ мебошад, ки пеш аз ба кор андохтани онҳо анҷом дода мешавад. Инҳоянд баъзе корҳое, ки шумо метавонед иҷро кунед:

  • Тафтиши услуби рамзгузорӣ ба маънои васеътарини калима. Ба ин ҳам санҷиши форматкунӣ, ҳам ҷустуҷӯи истифодаи қавсҳои холӣ/иловагӣ, муқаррар кардани ҳадди меъёрҳо ба монанди шумораи сатрҳо/мураккабии сикломатии усул ва ғайра дохил мешаванд. Дар Java чунин асбоб Checkstyle аст, дар Python - flake8. Барномаҳои ин синф одатан "линтерҳо" номида мешаванд.
  • На танҳо коди иҷрошавандаро таҳлил кардан мумкин аст. Файлҳои захиравӣ ба монанди JSON, YAML, XML, .properties метавонанд (ва бояд!) ба таври худкор эътиборнокӣ тафтиш карда шаванд. Дар ниҳоят, фаҳмидан беҳтар аст, ки сохтори JSON аз сабаби баъзе нохунакҳои ҷудонашуда дар марҳилаи аввали санҷиши автоматии Pull Request вайрон шудааст, назар ба вақти иҷрои санҷиш ё вақти иҷро? Воситаҳои мувофиқ мавҷуданд: масалан. YAMLlint, JSONLint.
  • Компиляция (ё таҳлил барои забонҳои барномасозии динамикӣ) низ як намуди таҳлили статикӣ мебошад. Умуман, компиляторҳо қодиранд огоҳиҳое эҷод кунанд, ки мушкилотро бо сифати коди сарчашма нишон медиҳанд ва набояд сарфи назар карда шаванд.
  • Баъзан тартибдиҳӣ на танҳо тартиб додани коди иҷрошаванда аст. Масалан, агар шумо дар формат ҳуҷҷат дошта бошед Доктор АссийДоктор, пас дар лаҳзаи табдил додани он ба HTML/PDF коркардкунандаи AsciiDoctor (Васлкунаки Maven) метавонад огоҳӣ диҳад, масалан, дар бораи пайвандҳои дохилии вайроншуда. Ва ин як сабаби хубест барои қабул накардани дархости кашидан бо тағирот дар ҳуҷҷат.
  • Санҷиши имло инчунин як намуди таҳлили статикӣ мебошад. Утилита афсӯс қодир аст, ки на танҳо дар ҳуҷҷатҳо, балки дар кодҳои сарчашмаи барнома (шарҳҳо ва адабӣ) бо забонҳои гуногуни барномасозӣ, аз ҷумла C/C++, Java ва Python имлоро тафтиш кунад. Хатогии имло дар интерфейси корбар ё ҳуҷҷатҳо низ камбуди аст!
  • Санҷишҳои конфигуратсия (дар бораи чӣ будани онҳо - нигаред. ин и ин гузоришҳо), гарчанде ки дар вақти иҷроиши воҳиди санҷишӣ, ба монанди pytest иҷро карда мешаванд, дар асл як намуди таҳлили статикӣ мебошанд, зеро онҳо ҳангоми иҷрои онҳо кодҳои ибтидоиро иҷро намекунанд.

Тавре ки шумо мебинед, ҷустуҷӯи хатогиҳо дар ин рӯйхат нақши камтаринро мебозад ва ҳама чизи боқимонда бо истифода аз абзорҳои ройгони кушода дастрас аст.

Кадоме аз ин намуди таҳлили статикиро дар лоиҳаи худ истифода бурдан лозим аст? Албатта, ҳар қадар зиёдтар беҳтар аст! Чизи асосй дуруст ба амал баровардани он аст, ки минбаъд дар бораи он сухан меравад.

Қубури интиқол ҳамчун филтри бисёрзинагӣ ва таҳлили статикӣ ҳамчун марҳилаи аввали он

Истораи классикии ҳамгироии муттасил ин лӯлаест, ки тавассути он тағирот аз тағирёбии коди сарчашма то интиқол ба истеҳсолот ҷараён мегирад. Пайдарпаии стандартии марҳилаҳои ин қубур чунин аст:

  1. таҳлили статикӣ
  2. пурсиш
  3. санҷишҳои воҳиди
  4. санҷишҳои ҳамгироӣ
  5. Санҷишҳои UI
  6. тафтиши дастӣ

Тағйироте, ки дар марҳилаи N-уми лӯла рад карда шудаанд, ба марҳилаи N+1 интиқол дода намешаванд.

Чаро маҳз ҳамин тавр, на ба таври дигар? Дар қисми озмоишии қубур, озмоишгарон пирамидаи маъруфи санҷиширо эътироф мекунанд.

Таҳлили статикиро дар раванд татбиқ кунед, на аз он барои дарёфти хатогиҳо
Пирамидаи озмоишӣ. Сарчашма: мақола Мартин Фаулер.

Дар поёни ин пирамида санҷишҳое ҳастанд, ки навиштан осонтар, иҷроашон тезтар ва тамоюли нокомӣ надоранд. Аз ин рӯ, онҳо бояд бештар бошанд, онҳо бояд бештар кодро фаро гиранд ва аввал иҷро шаванд. Дар болои пирамида, баръакс дуруст аст, бинобар ин, шумораи санҷишҳои ҳамгироӣ ва UI бояд ба ҳадди ақали зарурӣ кам карда шавад. Шахси дар ин занҷир гаронбаҳотарин, сусттарин ва беэътимодтарин манбаи аст, бинобар ин, ӯ дар ниҳояти кор қарор дорад ва танҳо дар сурате анҷом медиҳад, ки дар марҳилаҳои қаблӣ ягон камбудие пайдо нашавад. Бо вуҷуди ин, ҳамон принсипҳо барои сохтани қубур дар қисматҳое истифода мешаванд, ки бевосита бо озмоиш алоқаманд нестанд!

Ман мехоҳам як аналогияро дар шакли системаи филтратсияи бисёрсатҳи об пешниҳод кунам. Оби ифлос (тағйирот бо нуқсонҳо) ба воридот ворид карда мешавад; дар баромад мо бояд оби тозаро гирем, ки дар он ҳама ифлоскунандаҳои номатлуб бартараф карда шудаанд.

Таҳлили статикиро дар раванд татбиқ кунед, на аз он барои дарёфти хатогиҳо
Филтри бисёрзинагӣ. Сарчашма: Викимедиаи Умумӣ

Тавре ки шумо медонед, филтрҳои тозакунӣ тавре тарҳрезӣ шудаанд, ки ҳар як каскади минбаъда метавонад як фраксияи ҳарчи бештари ифлоскунандаҳоро филтр кунад. Дар айни замон, каскадҳои тозакунии дағал дорои қобилияти баландтар ва арзиши камтар доранд. Дар муқоисаи мо, ин маънои онро дорад, ки дарвозаҳои сифати воридот тезтаранд, барои оғоз кардан кӯшиши камтарро талаб мекунанд ва дар амалиёт худашон соддатаранд - ва ин пайдарпаии сохтани онҳост. Нақши таҳлили статикӣ, ки чӣ тавре ки мо ҳоло мефаҳмем, қодир аст, ки танҳо камбудиҳои ҷиддиро бартараф созад, дар ибтидои каскади филтр нақши шабакаи «лой» мебошад.

Таҳлили статикӣ худ аз худ сифати маҳсулоти ниҳоиро беҳтар намекунад, ҳамон тавре ки «филтри лой» обро қобили нӯшидан намедиҳад. Ва аммо, дар якҷоягӣ бо дигар унсурҳои қубур аҳамияти он равшан аст. Ҳарчанд дар филтри бисёрзинагӣ марҳилаҳои баромади эҳтимолӣ қодиранд ҳама чизеро, ки марҳилаҳои воридотӣ анҷом медиҳанд, сабт кунанд, маълум аст, ки аз кӯшиши анҷом додани танҳо бо марҳилаҳои дақиқи тозакунӣ, бидуни марҳилаҳои вуруд чӣ натиҷаҳо ба бор меоранд.

Мақсади «доми лой» раҳо кардани каскадҳои минбаъда аз осеб дидани камбудиҳои хеле ҷиддӣ аст. Масалан, ҳадди аққал шахсе, ки азназаргузаронии кодро анҷом медиҳад, набояд аз коди нодуруст форматшуда ва вайрон кардани стандартҳои муқарраршудаи рамзгузорӣ (ба монанди қавсҳои иловагӣ ё шохаҳои хеле амиқ ҷойгиршуда) парешон шавад. Хатогиҳо ба монанди NPE-ҳо бояд тавассути санҷишҳои воҳидҳо ошкор карда шаванд, аммо агар ҳатто пеш аз санҷиш анализатор ба мо нишон диҳад, ки хатогӣ ҳатмист, ин ислоҳи онро ба таври назаррас суръат мебахшад.

Ман боварӣ дорам, ки ҳоло маълум аст, ки чаро таҳлили статикӣ сифати маҳсулотро беҳтар намекунад, агар баъзан истифода шавад ва бояд ҳамеша барои филтр кардани тағирот бо камбудиҳои ҷиддӣ истифода шавад. Саволе, ки оё истифодаи анализатори статикӣ сифати маҳсулоти шуморо беҳтар мекунад, тақрибан ба саволи "Оё оби аз ҳавзи ифлос гирифташуда, агар аз коланд гузаронида шавад, сифати нӯшокӣ беҳтар мешавад?"

Татбиқи лоиҳаи меросӣ

Саволи муҳими амалӣ: чӣ гуна таҳлили статикиро ба раванди муттаҳидшавӣ ҳамчун «дарвозаи сифат» татбиқ кардан мумкин аст? Дар мавриди санҷишҳои автоматӣ ҳама чиз аён аст: як қатор санҷишҳо вуҷуд доранд, нокомии ягонтои онҳо сабаби кофӣ барои боварӣ ҳосил кардан аст, ки монтаж аз дарвозаи сифат нагузаштааст. Кӯшиши насби дарвоза бо ҳамин тариқ дар асоси натиҷаҳои таҳлили статикӣ ноком мешавад: дар коди меросӣ огоҳиҳои таҳлилӣ аз ҳад зиёд мавҷуданд, шумо намехоҳед онҳоро комилан сарфи назар кунед, аммо интиқоли маҳсулотро қатъ кардан ғайриимкон аст. танҳо аз сабаби он ки он дорои огоҳиҳои анализатор аст.

Вақте ки бори аввал истифода мешавад, анализатор дар ҳама гуна лоиҳа миқдори зиёди огоҳӣ медиҳад, ки аксарияти онҳо ба кори дурусти маҳсулот алоқаманд нестанд. Хамаи ин эродхоро якбора ислох кардан мумкин нест ва бисьёрии онхо лозим нест. Дар ниҳоят, мо медонем, ки маҳсулоти мо дар маҷмӯъ ҳатто пеш аз ҷорӣ кардани таҳлили статикӣ кор мекунад!

Дар натиҷа, бисёриҳо бо истифодаи баъзан аз таҳлили статикӣ маҳдуд мешаванд ё онро танҳо дар ҳолати иттилоотӣ истифода мебаранд, вақте ки гузориши анализатор танҳо ҳангоми васлкунӣ дода мешавад. Ин ба мавҷуд набудани ягон таҳлил баробар аст, зеро агар мо аллакай огоҳиҳои зиёд дошта бошем, пас ҳангоми тағир додани код пайдоиши дигаре (чӣ қадар ҷиддӣ бошад) нодида мемонад.

Усулҳои зерини ҷорӣ намудани дарвозаҳои сифат маълуманд:

  • Муқаррар кардани маҳдудият дар шумораи умумии огоҳиҳо ё шумораи огоҳиҳо ба шумораи сатрҳои код тақсим карда мешавад. Ин бад кор мекунад, зеро чунин дарвоза озодона имкон медиҳад, ки тағирот бо нуқсонҳои нав гузаранд, ба шарте ки маҳдудияти онҳо аз ҳад зиёд набошад.
  • Дар як лаҳзаи муайян ислоҳ кардани ҳама огоҳиҳои кӯҳна дар код ҳамчун нодида гирифта шудааст ва ҳангоми рух додани огоҳиҳои нав рад кардани сохтан. Ин функсия аз ҷониби PVS-studio ва баъзе захираҳои онлайн, масалан, Codacy таъмин карда мешавад. Ман имкони кор кардан дар PVS-studio надоштам, зеро дар мавриди таҷрибаи ман бо Codacy, мушкилоти асосии онҳо ин аст, ки муайян кардани хатогии "кӯҳна" ва чӣ "нав" як алгоритми хеле мураккаб аст, ки на ҳамеша кор мекунад. дуруст, хусусан агар файлҳо ба таври ҷиддӣ тағир дода шаванд ё номашон иваз карда шавад. Дар таҷрибаи ман, Codacy метавонад огоҳиҳои навро дар дархости кашидан сарфи назар кунад ва ҳамзамон бо сабаби огоҳиҳо, ки бо тағирот дар рамзи PR-и додашуда алоқаманд набуданд, дархости кашиданро нагузаронад.
  • Ба андешаи ман, роҳи ҳалли самараноктаринест, ки дар китоб тасвир шудааст Таҳвили доимӣ «усули рахнакунӣ». Идеяи асосӣ ин аст, ки шумораи огоҳиҳои таҳлили статикӣ моликияти ҳар як нашр аст ва танҳо тағирот иҷозат дода мешавад, ки шумораи умумии огоҳиҳоро зиёд намекунад.

Ратчет

Он чунин кор мекунад:

  1. Дар марҳилаи аввал, дар метамаълумот дар бораи нашри шумораи огоҳиҳо дар коде, ки таҳлилгарон пайдо кардаанд, сабт карда мешавад. Ҳамин тавр, вақте ки шумо дар боло месозед, менеҷери анбори шумо на танҳо "барориши 7.0.2", балки "барориши 7.0.2-ро бо 100500 огоҳии услуби назоратӣ" менависад. Агар шумо мудири мукаммали анбори анборро истифода баред (ба монанди Artifactory), нигоҳ доштани чунин метамаълумот дар бораи нашри шумо осон аст.
  2. Ҳоло ҳар як дархости кашидан, ҳангоми сохта шудан, шумораи огоҳиҳои натиҷаро бо шумораи огоҳиҳои дар версияи ҷорӣ мавҷудбуда муқоиса мекунад. Агар PR боиси афзоиши ин рақам гардад, пас код барои таҳлили статикӣ аз дарвозаи сифат намегузарад. Агар шумораи огоҳиҳо кам шавад ё тағир наёбад, пас он мегузарад.
  3. Дар нашри навбатӣ, шумораи аз нав ҳисобшудаи огоҳиҳо боз дар метамаълумоти нашр сабт карда мешавад.

Ҳамин тавр, оҳиста-оҳиста, вале устуворона (масалан, вақте ки ратчет кор мекунад), шумораи огоҳиҳо ба сифр мерасад. Албатта, системаро бо ворид кардани огоҳии нав, вале ислоҳи ягон каси дигар фиреб додан мумкин аст. Ин муқаррарӣ аст, зеро дар масофаи дур натиҷа медиҳад: огоҳиҳо, чун қоида, на ба таври алоҳида, балки дар як гурӯҳи як намуди муайян якбора ислоҳ карда мешаванд ва ҳама огоҳиҳои ба осонӣ хориҷшаванда хеле зуд бартараф карда мешаванд.

Ин график шумораи умумии огоҳиҳои Checkstyle-ро дар шаш моҳи кори чунин "ратчет" нишон медиҳад яке аз лоиҳаҳои OpenSource мо. Шумораи огоҳиҳо ба андозаи зиёд кам шудааст ва ин табиист, ки дар баробари таҳияи маҳсулот рӯй дод!

Таҳлили статикиро дар раванд татбиқ кунед, на аз он барои дарёфти хатогиҳо

Ман як версияи тағирёфтаи ин усулро истифода мебарам, ки огоҳиҳоро аз рӯи модули лоиҳа ва асбоби таҳлил алоҳида ҳисоб мекунад, ки дар натиҷа файли YAML бо метамаълумоти бунёдӣ, ки чунин менамояд:

celesta-sql:
  checkstyle: 434
  spotbugs: 45
celesta-core:
  checkstyle: 206
  spotbugs: 13
celesta-maven-plugin:
  checkstyle: 19
  spotbugs: 0
celesta-unit:
  checkstyle: 0
  spotbugs: 0

Дар ҳама гуна системаи пешрафтаи CI, ратчетро барои ҳама асбобҳои таҳлили статикӣ бидуни такя ба плагинҳо ва абзорҳои тарафи сеюм амалӣ кардан мумкин аст. Ҳар як таҳлилгар гузориши худро дар матни оддӣ ё формати XML таҳия мекунад, ки таҳлилаш осон аст. Танҳо навиштани мантиқи зарурӣ дар скрипти CI боқӣ мемонад. Шумо мебинед, ки ин чӣ гуна дар лоиҳаҳои кушодаи мо дар асоси Ҷенкинс ва Артифактори амалӣ карда мешавад дар ин ҷо ё дар ин ҷо. Ҳарду мисол аз китобхона вобастаанд ратчетлиб: усул countWarnings() тегҳои xml-ро дар файлҳои аз ҷониби Checkstyle ва Spotbugs ба таври муқаррарӣ тавлидшуда ҳисоб мекунад ва compareWarningMaps() ҳамон ратчетро амалӣ карда, ҳангоми зиёд шудани шумораи огоҳиҳо дар ҳама гуна категорияҳо хатогӣ мекунад.

Татбиқи ҷолиби "ратчет" барои таҳлили имлои шарҳҳо, ҳарфҳои матнӣ ва ҳуҷҷатгузорӣ бо истифода аз aspell имконпазир аст. Тавре ки шумо медонед, ҳангоми санҷиши имло на ҳама калимаҳои ба луғати стандартӣ номаълум нодурустанд, онҳоро метавон ба луғати корбар илова кард. Агар шумо луғати фармоиширо як қисми рамзи сарчашмаи лоиҳа созед, он гоҳ дарвозаи сифати имлоро метавон чунин тартиб дод: иҷро кардани aspell бо луғати стандартӣ ва фармоишӣ набояд ягон хатои имлой наёбед.

Дар бораи аҳамияти ислоҳи версияи анализатор

Хулоса, бояд қайд кард, ки новобаста аз он ки шумо таҳлилро дар лӯлаи интиқоли худ чӣ гуна амалӣ мекунед, версияи анализатор бояд собит карда шавад. Агар шумо ба анализатор иҷозат диҳед, ки ба таври худкор навсозӣ шавад, пас ҳангоми васл кардани дархости навбатии кашидан, камбудиҳои нав метавонанд "пайдо шаванд", ки бо тағир додани код алоқаманд нестанд, аммо бо он алоқаманданд, ки анализатори нав метавонад камбудиҳои бештарро пайдо кунад - ва ин раванди қабули дархостҳои кашидани шуморо вайрон мекунад. Навсозии анализатор бояд як амали бошуурона бошад. Бо вуҷуди ин, ба таври қатъӣ муқаррар кардани версияи ҳар як ҷузъи васлкунӣ одатан талаботи зарурӣ ва мавзӯи муҳокимаи алоҳида мебошад.

натиҷаҳои

  • Таҳлили статикӣ барои шумо хатогиҳоро намеёбад ва сифати маҳсулоти шуморо дар натиҷаи як барнома беҳтар намекунад. Таъсири мусбат ба сифат танҳо тавассути истифодаи доимии он дар ҷараёни интиқол ба даст оварда мешавад.
  • Ҷустуҷӯи хатоҳо умуман вазифаи асосии таҳлил нест; аксарияти функсияҳои муфид дар абзорҳои кушодаасос мавҷуданд.
  • Дар асоси натиҷаҳои таҳлили статикӣ дар марҳилаи аввали лӯлаи интиқол бо истифода аз "ратчет" барои рамзи кӯҳна дарвозаҳои сифатро амалӣ кунед.

мурожиат

  1. Таҳвили доимӣ
  2. А.Кудрявцев: Таҳлили барномаҳо: чӣ тавр фаҳмидан мумкин аст, ки шумо барномасози хуб ҳастед гузориш дар бораи усулҳои гуногуни таҳлили код (на танҳо статикӣ!)

Манбаъ: will.com

Илова Эзоҳ