කණ්ඩායම පහත් කිරීමකින් තොරව උරුම ව්‍යාපෘතියක ස්ථිතික කේත විශ්ලේෂකය ක්‍රියාත්මක කරන්නේ කෙසේද

කණ්ඩායම පහත් කිරීමකින් තොරව උරුම ව්‍යාපෘතියක ස්ථිතික කේත විශ්ලේෂකය ක්‍රියාත්මක කරන්නේ කෙසේද
ස්ථිතික කේත විශ්ලේෂකය උත්සාහ කිරීම පහසුය. නමුත් එය ක්රියාත්මක කිරීම සඳහා, විශේෂයෙන්ම විශාල පැරණි ව්යාපෘතියක් සංවර්ධනය කිරීමේදී, නිපුණතා අවශ්ය වේ. වැරදි ලෙස සිදු කළහොත්, විශ්ලේෂකයට වැඩ එකතු කිරීමට, සංවර්ධනය මන්දගාමී කිරීමට සහ කණ්ඩායම පහත් කිරීමට හැකිය. සංවර්ධන ක්‍රියාවලියට ස්ථිතික විශ්ලේෂණ අනුකලනය නිසි ලෙස ප්‍රවේශ කර එය CI/CD හි කොටසක් ලෙස භාවිතා කිරීම ආරම්භ කරන්නේ කෙසේද යන්න ගැන කෙටියෙන් කතා කරමු.

හැඳින්වීම

මෑතකදී මගේ අවධානය යොමු වූයේ ප්රකාශනය වෙතය.කණ්ඩායම යටපත් නොකර ස්ථිතික විශ්ලේෂණය සමඟ ආරම්භ කිරීම". මේක එක අතකට හුරු වෙන්න වටින හොඳ ලිපියක්.අනික් අතට ගොඩක් තියෙන ව්‍යාපෘතියක ස්ථිතික විග්‍රහය වේදනා රහිතව ක්‍රියාවට නංවන්නේ කොහොමද කියන එක ගැන සම්පූර්ණ උත්තරයක් තාම මේකෙන් නෑ කියලයි මට පේන්නේ. ඔෆ් ලෙගසි කෝඩ්, ඔබට තාක්ෂණික ණය පිළිගෙන නව කේතය මත පමණක් වැඩ කළ හැකි බව ලිපියේ සඳහන් වේ, නමුත් මෙම තාක්ෂණික ණය සමඟ පසුව කුමක් කළ යුතුද යන්නට පිළිතුරක් නොමැත.

අපගේ PVS-Studio කණ්ඩායම මෙම මාතෘකාව පිළිබඳ සිය දැක්ම ඉදිරිපත් කරයි. ස්ථිතික කේත විශ්ලේෂකයක් ක්‍රියාත්මක කිරීමේ ගැටලුව මුලින්ම පැන නගින්නේ කෙසේද, මෙම ගැටලුව ජය ගන්නේ කෙසේද සහ තාක්ෂණික ණය ක්‍රමයෙන් වේදනා රහිතව ඉවත් කරන්නේ කෙසේද යන්න බලමු.

ගැටලු

සාමාන්‍යයෙන් දියත් කිරීම සහ ස්ථිතික විශ්ලේෂකය ක්‍රියා කරන ආකාරය බැලීම අපහසු නැත [1]. ඔබට කේතය තුළ සිත්ගන්නා දෝෂ හෝ භයානක විභව දුර්වලතා දැකිය හැකිය. ඔබට යමක් නිවැරදි කළ හැකිය, නමුත් බොහෝ ක්‍රමලේඛකයින් එය අත්හරිති.

සියලුම ස්ථිතික විශ්ලේෂක ව්‍යාජ ධනාත්මක නිෂ්පාදනය කරයි. මෙය ස්ථිතික කේත විශ්ලේෂණ ක්‍රමවේදයේ ලක්ෂණයක් වන අතර ඒ ගැන කිසිවක් කළ නොහැක. පොදුවේ ගත් කල, මෙය රයිස්ගේ ප්‍රමේයය මගින් තහවුරු කර ඇති පරිදි විසඳිය නොහැකි ගැටලුවකි.2]. යන්ත්‍ර ඉගෙනීමේ ඇල්ගොරිතමද උදව් නොවනු ඇත [3]. පුද්ගලයෙකුට මෙම හෝ එම කේතය වැරදිද යන්න සැමවිටම පැවසිය නොහැකි වුවද, ඔබ මෙය වැඩසටහනෙන් බලාපොරොත්තු නොවිය යුතුය :).

ස්ථිතික විශ්ලේෂකය දැනටමත් වින්‍යාස කර ඇත්නම් ව්‍යාජ ධනාත්මක ගැටළුවක් නොවේ:

  • අනදාල රීති කට්ටල අබල කර ඇත;
  • සමහර අදාළ නොවන රෝග විනිශ්චය අක්‍රිය කර ඇත;
  • අපි C හෝ C++ ගැන කතා කරන්නේ නම්, එවැනි මැක්‍රෝ භාවිතා කරන සෑම ස්ථානයකම නිෂ්ඵල අනතුරු ඇඟවීම් ඇති කිරීමට හේතු වන විශේෂිත ඉදිකිරීම් අඩංගු මැක්‍රෝ සලකුණු කර ඇත;
  • පද්ධති ශ්‍රිතවලට සමාන ක්‍රියා සිදු කරන තමන්ගේම කාර්යයන් සලකුණු කර ඇත (එහිම ප්‍රතිසමයක් මහජන හෝ printf) [4];
  • ව්‍යාජ ධනාත්මක කරුණු අදහස් දැක්වීම් භාවිතයෙන් විශේෂයෙන් අබල කර ඇත;
  • ඒ නිසා.

මෙම අවස්ථාවේ දී, අපට 10-15% ක පමණ අඩු ව්‍යාජ ධනාත්මක අනුපාතයක් අපේක්ෂා කළ හැකිය.5]. වෙනත් වචන වලින් කිවහොත්, විශ්ලේෂක අනතුරු ඇඟවීම් 9 න් 10 ක්ම කේතයේ සැබෑ ගැටළුවක් හෝ අවම වශයෙන් “දැඩි සුවඳ කේතයක්” පෙන්නුම් කරයි. එකඟ වන්න, මෙම දර්ශනය අතිශයින්ම ප්රසන්න වන අතර, විශ්ලේෂකය ක්රමලේඛකයාගේ සැබෑ මිතුරෙකි.

කණ්ඩායම පහත් කිරීමකින් තොරව උරුම ව්‍යාපෘතියක ස්ථිතික කේත විශ්ලේෂකය ක්‍රියාත්මක කරන්නේ කෙසේද
යථාර්ථයේ දී, විශාල ව්යාපෘතියක් තුළ, ආරම්භක පින්තූරය සම්පූර්ණයෙන්ම වෙනස් වනු ඇත. විශ්ලේෂකය උරුම කේතය සඳහා අනතුරු ඇඟවීම් සිය ගණනක් හෝ දහස් ගණනක් නිකුත් කරයි. මෙම අනතුරු ඇඟවීම් වලින් අදාළ වන්නේ කුමක්ද සහ නොවන්නේ කුමක්ද යන්න ඉක්මනින් තේරුම් ගත නොහැක. මෙම නඩුවේ ප්රධාන කාර්යය දින හෝ සති සඳහා නතර වන බැවින්, වාඩි වී මෙම සියලු අනතුරු ඇඟවීම් සමඟ කටයුතු කිරීමට පටන් ගැනීම අතාර්කික ය. සාමාන්‍යයෙන්, කණ්ඩායමකට එවැනි අවස්ථාවක් දරාගත නොහැක. වෙනස් කිරීමේ ඉතිහාසය නරක් කරන විශාල වෙනස්කම් සංඛ්‍යාවක් ද වනු ඇත. තවද කේතයේ ඇති බොහෝ කොටස් සීඝ්‍රයෙන් විශාල ලෙස සංස්කරණය කිරීම අනිවාර්යයෙන්ම නව අක්ෂර වින්‍යාස සහ දෝෂ ඇති කරයි.

වැදගත්ම දෙය නම්, අනතුරු ඇඟවීම් වලට එරෙහි සටනේ එවැනි ජයග්‍රහණයක් එතරම් තේරුමක් නැති දෙයක්. වසර ගණනාවක් තිස්සේ ව්‍යාපෘතිය සාර්ථකව ක්‍රියාත්මක වන බැවින්, එහි ඇති බරපතල දෝෂ බොහොමයක් දැනටමත් නිවැරදි කර ඇති බවට එකඟ වන්න. ඔව්, මෙම නිවැරදි කිරීම් ඉතා මිල අධික විය, නිදොස් කිරීමට සිදු විය, දෝෂ පිළිබඳ ඍණාත්මක පරිශීලක ප්‍රතිපෝෂණ ලැබුණි, යනාදිය. ස්ථිතික විශ්ලේෂකය මෙම දෝෂ බොහොමයක් කේතීකරණ අදියරේදී ඉක්මනින් සහ ලාභදායී ලෙස නිවැරදි කිරීමට උපකාරී වේ. නමුත් මේ මොහොතේ, එක් ආකාරයකින් හෝ වෙනත් ආකාරයකින්, මෙම දෝෂ නිවැරදි කර ඇති අතර, විශ්ලේෂකය ප්රධාන වශයෙන් පැරණි කේතයේ විවේචනාත්මක නොවන දෝෂ හඳුනා ගනී. මෙම කේතය භාවිතා නොකළ හැකිය, එය ඉතා කලාතුරකින් භාවිතා කළ හැකි අතර, එහි දෝෂයක් සැලකිය යුතු ප්රතිවිපාකවලට තුඩු නොදෙනු ඇත. සමහර විට කොතැනක හෝ බොත්තමේ සෙවනැල්ල වැරදි වර්ණයකි, නමුත් මෙය කිසිවෙකුගේ නිෂ්පාදනයේ භාවිතයට බාධා නොකරයි.

ඇත්ත වශයෙන්ම, කුඩා වැරදි පවා තවමත් වැරදියි. සමහර විට වැරදීමක් සැබෑ අවදානමක් සැඟවිය හැක. කෙසේ වෙතත්, සියල්ල අතහැර දමා යන්තම් ප්‍රකාශ වන අඩුපාඩු සමඟ කටයුතු කරමින් දින/සති ගත කිරීම සැක සහිත අදහසක් ලෙස පෙනේ.

ක්‍රමලේඛකයින් පැරණි ක්‍රියාකාරී කේතය පිළිබඳ මෙම සියලු අනතුරු ඇඟවීම් දෙස බලන්න, බලන්න, බලන්න ... ඔවුන් සිතන්නේ: අපට ස්ථිතික විශ්ලේෂණයකින් තොරව කළ හැකිය. අපි අලුත් ප්‍රයෝජනවත් ක්‍රියාකාරීත්වයක් ලියන්න යමු.

ඔවුන්ගේම ආකාරයෙන්, ඔවුන් හරි ය. ඔවුන් සිතන්නේ පළමුව ඔවුන් කෙසේ හෝ මෙම අනතුරු ඇඟවීම්වලින් මිදිය යුතු බවයි. කේත විශ්ලේෂකය නිතිපතා භාවිතා කිරීමෙන් ඔවුන්ට ප්‍රතිලාභ ලබා ගත හැක්කේ එවිට පමණි. එසේ නොවුවහොත්, නව අනතුරු ඇඟවීම් හුදෙක් පැරණි ඒවා තුළ ගිලී යනු ඇත, කිසිවෙකු ඔවුන් කෙරෙහි අවධානය යොමු නොකරනු ඇත.

මෙය සම්පාදක අනතුරු ඇඟවීම් හා සමාන සමානතාවයකි. සම්පාදක අනතුරු ඇඟවීම් සංඛ්‍යාව 0 ට තබා ගැනීමට ඔවුන් නිර්දේශ කරන්නේ හේතුවක් නොමැතිව නොවේ. අනතුරු ඇඟවීම් 1000 ක් තිබේ නම්, 1001 ක් ඇති විට, කිසිවෙකු ඒ ගැන අවධානය යොමු නොකරනු ඇති අතර, මෙම නවතම අනතුරු ඇඟවීම කොතැනක සොයන්නේද යන්න පැහැදිලි නැත.

කණ්ඩායම පහත් කිරීමකින් තොරව උරුම ව්‍යාපෘතියක ස්ථිතික කේත විශ්ලේෂකය ක්‍රියාත්මක කරන්නේ කෙසේද
මෙම කතාවේ ඇති නරකම දෙය නම්, මේ මොහොතේ ඉහළින් කෙනෙකු ඔබට ස්ථිතික කේත විශ්ලේෂණය භාවිතා කිරීමට බල කරන්නේ නම්. මෙය කණ්ඩායම පහත් කිරීමක් පමණක් වනු ඇත, මන්ද ඔවුන්ගේ දෘෂ්ටි කෝණයෙන් අමතර නිලධාරිවාදී සංකීර්ණතාවයක් ඇති වන අතර එය බාධාවක් වනු ඇත. කිසිවෙකු විශ්ලේෂකයාගේ වාර්තා දෙස නොබලන අතර, සියලු භාවිතය "කඩදාසි මත" පමණක් වනු ඇත. එම. විධිමත් ලෙස, විශ්ලේෂණය DevOps ක්‍රියාවලියට ගොඩනගා ඇත, නමුත් ප්‍රායෝගිකව මෙය කිසිවකුට ප්‍රයෝජනයක් නොවේ. සම්මන්ත්‍රණවලට සහභාගී වූවන්ගෙන් අපි කුටිවල සවිස්තරාත්මක කථා අසා ඇත්තෙමු. එවැනි අත්දැකීමක් සදහටම නොවේ නම්, දිගු කාලයක් තිස්සේ ස්ථිතික විශ්ලේෂණ මෙවලම් භාවිතා කිරීමෙන් වැඩසටහන්කරුවන් අධෛර්යමත් කළ හැකිය.

තාක්ෂණික ණය ක්රියාත්මක කිරීම සහ ඉවත් කිරීම

ඇත්ත වශයෙන්ම, විශාල පැරණි ව්යාපෘතියකට පවා ස්ථිතික විශ්ලේෂණය හඳුන්වා දීම සඳහා අපහසු හෝ බියජනක කිසිවක් නොමැත.

සීඅයි / සීඩී

එපමණක් නොව, විශ්ලේෂකය වහාම අඛණ්ඩ සංවර්ධන ක්රියාවලියේ කොටසක් බවට පත් කළ හැකිය. උදාහරණයක් ලෙස, PVS-Studio බෙදාහැරීමේ ඔබට අවශ්‍ය ආකෘතියෙන් වාර්තාව පහසුවෙන් බැලීම සඳහා උපයෝගිතා සහ කේතයේ ගැටළු සහගත කොටස් ලියා ඇති සංවර්ධකයින්ට දැනුම්දීම් අඩංගු වේ. CI/CD පද්ධති වලින් PVS-Studio දියත් කිරීමට වැඩි උනන්දුවක් දක්වන අය සඳහා, ඔබ අනුරූපීව හුරුපුරුදු වන ලෙස මම නිර්දේශ කරමි. අංශය ලේඛන සහ ලිපි මාලාවක්:

නමුත් කේත විශ්ලේෂණ මෙවලම් ක්‍රියාත්මක කිරීමේ පළමු අදියරේදී ව්‍යාජ ධනාත්මක විශාල සංඛ්‍යාවක් පිළිබඳ ගැටළුව වෙත ආපසු යමු.

පවතින තාක්ෂණික ණය නිවැරදි කිරීම සහ නව අනතුරු ඇඟවීම් සමඟ කටයුතු කිරීම

නවීන වාණිජ ස්ථිතික විශ්ලේෂක ඔබට නව හෝ වෙනස් කළ කේතයේ දිස්වන නව අනතුරු ඇඟවීම් පමණක් අධ්‍යයනය කිරීමට ඉඩ සලසයි. මෙම යාන්ත්රණය ක්රියාත්මක කිරීම වෙනස් වේ, නමුත් සාරය සමාන වේ. PVS-Studio ස්ථිතික විශ්ලේෂකය තුළ, මෙම ක්රියාකාරිත්වය පහත පරිදි ක්රියාත්මක වේ.

ස්ථිතික විශ්ලේෂණය භාවිතා කිරීම ඉක්මනින් ආරම්භ කිරීම සඳහා, PVS-Studio පරිශීලකයින්ට අනතුරු ඇඟවීම් විශාල වශයෙන් මැඩපැවැත්වීම සඳහා යාන්ත්‍රණය භාවිතා කිරීමට අපි යෝජනා කරමු [6]. පොදු අදහස පහත දැක්වේ. පරිශීලකයා විශ්ලේෂකය දියත් කළ අතර බොහෝ අනතුරු ඇඟවීම් ලැබුණි. වසර ගණනාවක් තිස්සේ සංවර්ධනය වෙමින් පවතින ව්‍යාපෘතියක් සජීවී, සංවර්ධනය වෙමින් සහ මුදල් උපයන බැවින්, බොහෝ විට වාර්තාවේ විවේචනාත්මක දෝෂ පෙන්නුම් කරන බොහෝ අනතුරු ඇඟවීම් නොතිබෙනු ඇත. වෙනත් වචන වලින් කිවහොත්, වඩාත් මිල අධික ක්‍රම භාවිතා කරමින් හෝ පාරිභෝගිකයින්ගේ ප්‍රතිපෝෂණයට ස්තූතිවන්ත වෙමින් විවේචනාත්මක දෝෂ දැනටමත් එක් ආකාරයකින් හෝ වෙනත් ආකාරයකින් විසඳා ඇත. ඒ අනුව, විශ්ලේෂකය දැනට සොයා ගන්නා සෑම දෙයක්ම තාක්ෂණික ණය ලෙස සැලකිය හැකිය, එය වහාම ඉවත් කිරීමට උත්සාහ කිරීම ප්රායෝගික නොවේ.

ඔබට PVS-Studio හට මෙම අනතුරු ඇඟවීම් අදාළ නොවන ලෙස සලකන ලෙස පැවසිය හැකිය (තාක්ෂණික ණය පසුව ඉතිරි කරන්න), එය තවදුරටත් ඒවා නොපෙන්වයි. විශ්ලේෂකය විශේෂ ගොනුවක් නිර්මාණය කරයි, එහිදී එය තවමත් සිත්ගන්නා සුළු නොවන දෝෂ පිළිබඳ තොරතුරු සුරකියි. දැන් PVS-Studio නව හෝ වෙනස් කළ කේතය සඳහා පමණක් අනතුරු ඇඟවීම් නිකුත් කරනු ඇත. එපමණක් නොව, මේ සියල්ල දක්ෂ ලෙස ක්රියාත්මක වේ. උදාහරණයක් ලෙස, මූලාශ්‍ර කේත ගොනුවේ ආරම්භයට හිස් පේළියක් එකතු කළහොත්, ඇත්ත වශයෙන්ම, කිසිවක් වෙනස් වී නැති බවත්, නිශ්ශබ්දව පවතින බවත් විශ්ලේෂකය තේරුම් ගනී. මෙම සලකුණු ගොනුව අනුවාද පාලන පද්ධතියකට දැමිය හැකිය. ගොනුව විශාලයි, නමුත් මෙය ගැටළුවක් නොවේ, මන්ද එය නිතර ගබඩා කිරීමේ තේරුමක් නැත.

දැන් සියලුම ක්‍රමලේඛකයින් නව හෝ වෙනස් කළ කේතයට අදාළ අනතුරු ඇඟවීම් දකිනු ඇත. මේ අනුව, ඔබට ඊළඟ දවසේ සිට ඔවුන් පවසන පරිදි විශ්ලේෂකය භාවිතා කිරීම ආරම්භ කළ හැකිය. ඔබට පසුව තාක්ෂණික ණය වෙත ආපසු යා හැකි අතර, ක්‍රමයෙන් දෝෂ නිවැරදි කර විශ්ලේෂකය වින්‍යාස කරන්න.

ඉතින්, විශාල පැරණි ව්යාපෘතියක විශ්ලේෂකය ක්රියාත්මක කිරීමේ පළමු ගැටළුව විසඳා ඇත. දැන් අපි තාක්ෂණික ණය සමඟ කළ යුතු දේ සොයා බලමු.

දෝෂ නිවැරදි කිරීම් සහ නැවත සකස් කිරීම්

සරලම සහ ස්වභාවික දෙය නම් දැවැන්ත ලෙස යටපත් කර ඇති විශ්ලේෂක අනතුරු ඇඟවීම් විශ්ලේෂණය කිරීමට සහ ඒවා සමඟ ක්‍රමයෙන් ගනුදෙනු කිරීමට යම් කාලයක් වෙන් කිරීමයි. කොතැනක හෝ ඔබ කේතයේ දෝෂ නිවැරදි කළ යුතුය, කොතැනක හෝ කේතය ගැටළුකාරී නොවන බව විශ්ලේෂකය වෙත පැවසීමට ඔබ නැවත සකස් කළ යුතුය. සරල උදාහරණයක්:

if (a = b)

බොහෝ C++ සම්පාදකයින් සහ විශ්ලේෂකයින් එවැනි කේතයක් ගැන පැමිණිලි කරයි, මන්ද ඔවුන්ට සැබවින්ම ලිවීමට අවශ්‍ය වීමේ ඉහළ සම්භාවිතාවක් ඇත. (අ == ආ). නමුත් ප්‍රකාශ නොකළ එකඟතාවයක් ඇති අතර, මෙය සාමාන්‍යයෙන් ලේඛනවල සටහන් කර ඇත, අමතර වරහන් තිබේ නම්, ක්‍රමලේඛකයා හිතාමතාම එවැනි කේතයක් ලියා ඇති බව සලකනු ලබන අතර දිවුරුම් දීමට අවශ්‍ය නැත. උදාහරණයක් ලෙස, රෝග විනිශ්චය සඳහා PVS-Studio ලේඛන තුළ V559 (CWE-481) පහත දැක්වෙන පේළිය නිවැරදි සහ ආරක්ෂිත ලෙස සලකනු ලබන බව පැහැදිලිව ලියා ඇත:

if ((a = b))

තවත් උදාහරණයක්. ඒක මේ C++ code එකේ අමතක වෙලාද? බිඳීම නැත්ද?

case A:
  foo();
case B:
  bar();
  break;

PVS-Studio විශ්ලේෂකය මෙහි අනතුරු ඇඟවීමක් නිකුත් කරනු ඇත V796 (CWE-484). මෙය දෝෂයක් නොවිය හැක, මෙම අවස්ථාවේදී ඔබ උපලක්ෂණය එකතු කිරීමෙන් විග්‍රහ කරන්නාට ඉඟියක් ලබා දිය යුතුය. [[වැටීම]] හෝ, උදාහරණයක් ලෙස, __attribute__((වැටීම)):

case A:
  foo();
  [[fallthrough]];
case B:
  bar();
  break;

එවැනි කේත වෙනස් කිරීම් දෝෂය නිවැරදි නොකරන බව පැවසිය හැකිය. ඔව්, මෙය සත්යයකි, නමුත් එය ප්රයෝජනවත් දේවල් දෙකක් කරයි. පළමුව, විශ්ලේෂක වාර්තාව ව්‍යාජ ධනාත්මක කරුණු ඉවත් කරයි. දෙවනුව, කේතය එහි නඩත්තුවට සම්බන්ධ පුද්ගලයින්ට වඩාත් තේරුම්ගත හැකිය. තවද මෙය ඉතා වැදගත් වේ! මේ සඳහා පමණක්, කේතය වඩාත් පැහැදිලි සහ නඩත්තු කිරීමට පහසු කිරීම සඳහා සුළු ප්රතිනිර්මාණයන් සිදු කිරීම වටී. "බිඳීම" අවශ්යද නැද්ද යන්න විශ්ලේෂකය තේරුම් නොගන්නා බැවින්, එය සෙසු වැඩසටහන්කරුවන්ටද අපැහැදිලි වනු ඇත.

දෝෂ නිවැරදි කිරීම් සහ ප්‍රතිනිර්මාණය කිරීම් වලට අමතරව, ඔබට පැහැදිලිවම ව්‍යාජ විශ්ලේෂක අනතුරු ඇඟවීම් විශේෂයෙන් යටපත් කළ හැකිය. සමහර අදාළ නොවන රෝග විනිශ්චය අක්‍රිය කළ හැක. නිදසුනක් වශයෙන්, යමෙකු සිතන්නේ අනතුරු ඇඟවීම් තේරුමක් නැති බවයි V550 float/double අගයන් සංසන්දනය කිරීම ගැන. සමහර ඒවා වැදගත් සහ අධ්‍යයනයට සුදුසු ලෙස වර්ගීකරණය කරයි [7]. කුමන අනතුරු ඇඟවීම් අදාළ යැයි සලකනු ලබන්නේද සහ ඒවා නොවන්නේද යන්න තීරණය කිරීම සංවර්ධන කණ්ඩායම සතුය.

වැරදි ඇඟවීම් යටපත් කිරීමට වෙනත් ක්රම තිබේ. උදාහරණයක් ලෙස, macro markup කලින් සඳහන් කර ඇත. මේ සියල්ල ලේඛනවල වඩාත් විස්තරාත්මකව විස්තර කර ඇත. වැදගත්ම දෙය නම්, ඔබ ව්‍යාජ ධනාත්මක සමඟ වැඩ කිරීමට ක්‍රමානුකූලව හා ක්‍රමානුකූලව ප්‍රවේශ වන්නේ නම්, ඒවායේ වරදක් නොමැති බව තේරුම් ගැනීමයි. උනන්දුවක් නොදක්වන අනතුරු ඇඟවීම්වලින් අතිමහත් බහුතරයක් වින්‍යාස කිරීමෙන් පසු අතුරුදහන් වන අතර, සැබවින්ම ප්‍රවේශමෙන් අධ්‍යයනය කිරීම සහ කේතයේ යම් වෙනස්කම් අවශ්‍ය ස්ථාන පමණක් ඉතිරිව පවතී.

එසේම, කිසියම් දුෂ්කරතාවයක් ඇති වුවහොත් PVS-Studio පිහිටුවීමට අපි සැමවිටම අපගේ සේවාදායකයින්ට උදව් කරන්නෙමු. එපමණක් නොව, අප විසින්ම ව්‍යාජ අනතුරු ඇඟවීම් ඉවත් කර වැරදි නිවැරදි කළ අවස්ථා තිබේ.8]. යම් අවස්ථාවක දී, දීර්ඝ සහයෝගීතාව සඳහා මෙම විකල්පය ද හැකි බව සඳහන් කිරීමට මම තීරණය කළෙමි :).

රැට්චෙට් ක්රමය

ස්ථිතික විශ්ලේෂක අනතුරු ඇඟවීම ඉවත් කිරීමෙන් කේතයේ ගුණාත්මක භාවය ක්‍රමයෙන් වැඩි දියුණු කිරීමට තවත් රසවත් ප්‍රවේශයක් තිබේ. අවසාන කරුණ නම් අනතුරු ඇඟවීම් ගණන අඩු විය හැකි බවයි.

කණ්ඩායම පහත් කිරීමකින් තොරව උරුම ව්‍යාපෘතියක ස්ථිතික කේත විශ්ලේෂකය ක්‍රියාත්මක කරන්නේ කෙසේද

ස්ථිතික විශ්ලේෂකය විසින් නිකුත් කරන ලද අනතුරු ඇඟවීම් ගණන සටහන් කර ඇත. ගුණාත්මක ගේට්ටුව දැන් ඔබට ඇතුළත් කළ හැක්කේ මෙහෙයුම් ගණන වැඩි නොකරන කේතයක් පමණක් වන ආකාරයට වින්‍යාස කර ඇත. එහි ප්රතිඵලයක් වශයෙන්, විශ්ලේෂකය සකස් කිරීම සහ දෝෂ නිවැරදි කිරීම මගින් අනතුරු ඇඟවීමේ සංඛ්යාව ක්රමයෙන් අඩු කිරීමේ ක්රියාවලිය ආරම්භ වේ.

පුද්ගලයෙකුට ටිකක් වංචා කිරීමට අවශ්‍ය වුවද, ඔහුගේ නව කේතයේ අනතුරු ඇඟවීම් ඉවත් කිරීමෙන් නොව, පැරණි තෙවන පාර්ශවීය කේතය වැඩිදියුණු කිරීමෙන් ගුණාත්මක ගේට්ටුව පසු කිරීමට තීරණය කළත්, මෙය බියජනක නොවේ. එකම, රැට්චට් එක දිශාවකට භ්රමණය වන අතර, ක්රමයෙන් දෝෂ සංඛ්යාව අඩු වනු ඇත. පුද්ගලයෙකුට තමාගේම නව දෝෂ නිවැරදි කිරීමට අවශ්ය නැති වුවද, ඔහු තවමත් අසල්වැසි කේතයේ යමක් වැඩිදියුණු කිරීමට සිදු වනු ඇත. යම් අවස්ථාවක දී, අනතුරු ඇඟවීම් ගණන අඩු කිරීමට පහසු ක්‍රම අවසන් වන අතර, සැබෑ දෝෂ නිරාකරණය වන අවස්ථාවක් පැමිණේ.

මෙම ක්‍රමය වඩාත් විස්තරාත්මකව විස්තර කර ඇත්තේ අයිවන් පොනොමරෙව්ගේ ඉතා රසවත් ලිපියක ය.දෝෂ සෙවීමට එය භාවිතා කරනවාට වඩා ක්‍රියාවලියට ස්ථිතික විශ්ලේෂණය ක්‍රියාත්මක කරන්න", කේතයේ ගුණාත්මකභාවය වැඩි දියුණු කිරීමට කැමති ඕනෑම කෙනෙකුට කියවීමට මම නිර්දේශ කරමි.

ලිපියේ කතුවරයාට මෙම මාතෘකාව පිළිබඳ වාර්තාවක් ද ඇත: "අඛණ්ඩ ස්ථිතික විශ්ලේෂණය".

නිගමනය

මෙම ලිපියෙන් පසුව, පාඨකයින් ස්ථිතික විශ්ලේෂණ මෙවලම් වඩාත් පිළිගනු ඇති අතර ඒවා සංවර්ධන ක්‍රියාවලියට ක්‍රියාත්මක කිරීමට අවශ්‍ය වනු ඇතැයි මම බලාපොරොත්තු වෙමි. ඔබට කිසියම් ප්‍රශ්නයක් ඇත්නම්, අපි සැමවිටම සූදානම් උපදෙස් දෙන්න අපගේ ස්ථිතික විශ්ලේෂක PVS-Studio භාවිතා කරන්නන් සහ එය ක්‍රියාත්මක කිරීමට උදවු කරන්න.

ස්ථිතික විශ්ලේෂණය සැබවින්ම පහසු සහ ප්‍රයෝජනවත් විය හැකිද යන්න පිළිබඳ වෙනත් සාමාන්‍ය සැකයන් තිබේ. "PVS-Studio ස්ථිතික කේත විශ්ලේෂකය සංවර්ධන ක්‍රියාවලියට හඳුන්වා දීමට හේතු" යන ප්‍රකාශනයේ මෙම සැකයන් බොහොමයක් දුරු කිරීමට මම උත්සාහ කළෙමි.9].

ඔබගේ අවධානයට සහ පැමිණීමට ස්තූතියි скачать සහ PVS-Studio විශ්ලේෂකය උත්සාහ කරන්න.

අමතර සබැඳි

  1. Andrey Karpov. PVS-Studio විශ්ලේෂකය C සහ C++ කේත සඳහා නිපදවන රසවත් අනතුරු ඇඟවීම් ඉක්මනින් දකින්නේ කෙසේද?
  2. විකිපීඩියා සහල් ප්‍රමේයය.
  3. Andrey Karpov, Victoria Khanieva. වැඩසටහන් මූල කේතයේ ස්ථිතික විශ්ලේෂණයේදී යන්ත්‍ර ඉගෙනීම භාවිතා කිරීම.
  4. PVS-Studio. ලේඛනගත කිරීම. අතිරේක රෝග විනිශ්චය සැකසුම්.
  5. Andrey Karpov. EFL Core Libraries, 10-15% ව්‍යාජ ධනාත්මක උදාහරණ භාවිතා කරමින් PVS-Studio විශ්ලේෂකයේ ලක්ෂණ.
  6. PVS-Studio. ලේඛනගත කිරීම. විශ්ලේෂක පණිවිඩ විශාල වශයෙන් යටපත් කිරීම.
  7. අයිවන් ඇන්ඩ්‍රියාෂින්. එක්ස් කිරණ එන්ඩෝවාස්කියුලර් සැත්කම් පිළිබඳ අධ්‍යාපනික සිමියුලේටරයක අපගේ ව්‍යාපෘතියේ ස්ථිතික විශ්ලේෂණය පරීක්ෂා කළ ආකාරය ගැන.
  8. Pavel Eremeev, Svyatoslav Razmyslov. PVS-Studio කණ්ඩායම Unreal Engine කේතය වැඩිදියුණු කළ ආකාරය.
  9. Andrey Karpov. ස්ථිතික කේත විශ්ලේෂකය PVS-Studio සංවර්ධන ක්‍රියාවලියට හඳුන්වා දීමට හේතු.

කණ්ඩායම පහත් කිරීමකින් තොරව උරුම ව්‍යාපෘතියක ස්ථිතික කේත විශ්ලේෂකය ක්‍රියාත්මක කරන්නේ කෙසේද

ඔබට මෙම ලිපිය ඉංග්‍රීසි කතා කරන ප්‍රේක්ෂකයින් සමඟ බෙදා ගැනීමට අවශ්‍ය නම්, කරුණාකර පරිවර්තන සබැඳිය භාවිතා කරන්න: Andrey Karpov. ලෙගසි ව්‍යාපෘතියක ස්ථිතික කේත විශ්ලේෂකයක් හඳුන්වා දෙන්නේ කෙසේද සහ කණ්ඩායම අධෛර්යමත් නොකිරීමට.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න