C# සඳහා PVS-Studio භාවිතයෙන් GitLab හි ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය

C# සඳහා PVS-Studio භාවිතයෙන් GitLab හි ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය කිරීම
GitLab වලට ආදරය කරන අතර දෝෂ වලට වෛර කරනවාද? ඔබේ මූලාශ්‍ර කේතයේ ගුණාත්මකභාවය වැඩි දියුණු කිරීමට අවශ්‍යද? එවිට ඔබ නියම ස්ථානයට පැමිණ ඇත. ඒකාබද්ධ ඉල්ලීම් පරීක්ෂා කිරීම සඳහා PVS-Studio C# විශ්ලේෂකය වින්‍යාස කරන්නේ කෙසේදැයි අද අපි ඔබට කියමු. සියලු දෙනාටම යුනිකෝන් මනෝභාවයක් සහ ප්‍රීතිමත් කියවීමක් ලබා ගන්න.

පීවීඑස්-ස්ටුඩියෝ C, C++, C# සහ Java හි ලියා ඇති වැඩසටහන් වල මූල කේතයේ දෝෂ සහ විභව දුර්වලතා හඳුනාගැනීමේ මෙවලමකි. Windows, Linux සහ macOS මත 64-bit පද්ධති මත ක්‍රියා කරයි. 32-bit, 64-bit සහ embedded ARM වේදිකා සඳහා නිර්මාණය කර ඇති කේතය විශ්ලේෂණය කළ හැකිය.

මාර්ගය වන විට, අපි PVS-Studio 7.08 නිකුත් කළෙමු, එහි අපි බොහෝ දේ කළෙමු රසවත්. උදාහරණයක් ලෙස:

  • Linux සහ macOS සඳහා C# විශ්ලේෂකය;
  • රයිඩර් සඳහා ප්ලගිනය;
  • නව ගොනු ලැයිස්තු පරීක්ෂා කිරීමේ මාදිලිය.

ගොනු ලැයිස්තුව පරීක්ෂා කිරීමේ මාදිලිය

මීට පෙර, ඇතැම් ගොනු පරීක්ෂා කිරීම සඳහා, විශ්ලේෂකය වෙත ගොනු ලැයිස්තුවක් සමඟ .xml යැවීමට අවශ්ය විය. නමුත් මෙය එතරම් පහසු නොවන බැවින්, අපි .txt මාරු කිරීමේ හැකියාව එකතු කර ඇත, එය ජීවිතය ඉතා සරල කරයි.

නිශ්චිත ගොනු පරීක්ෂා කිරීම සඳහා, ඔබ ධජය සඳහන් කළ යුතුය --sourceFiles (-f) සහ ගොනු ලැයිස්තුවක් සමඟ .txt මාරු කරන්න. එය මෙසේ පෙනේ:

pvs-studio-dotnet -t path/to/solution.sln -f fileList.txt -o project.json

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

ඒකාබද්ධ ඉල්ලීමක් පරීක්ෂා කිරීමේ මූලධර්මය

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

ස්ථිතික විශ්ලේෂකය ක්‍රියාත්මක කිරීමට පෙර ඒකාබද්ධ ඉල්ලීමක් පෙනෙන්නේ මෙයයි:

C# සඳහා PVS-Studio භාවිතයෙන් GitLab හි ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය කිරීම
එනම්, ශාඛාවේ තිබූ සියලු දෝෂ වෙනස්කම්, ප්රධාන ශාඛාව වෙත ගමන් කරනු ඇත. අපට මෙය අවශ්‍ය නොවන බැවින්, අපි විශ්ලේෂණය එකතු කරන්නෙමු, දැන් රූප සටහන මේ ආකාරයට පෙනේ:

C# සඳහා PVS-Studio භාවිතයෙන් GitLab හි ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය කිරීම
අපි විශ්ලේෂණය කරන්නෙමු වෙනස්කම්2 සහ, දෝෂ නොමැති නම්, අපි ඒකාබද්ධ කිරීමේ ඉල්ලීම පිළිගනිමු, එසේ නොමැතිනම් අපි එය ප්‍රතික්ෂේප කරමු.

මාර්ගය වන විට, ඔබ C/C++ සඳහා කැපවීම් සහ අදින්න ඉල්ලීම් විශ්ලේෂණය කිරීමට කැමති නම්, ඔබට ඒ ගැන කියවිය හැක. මෙහි.

GitLab

GitLab යනු විවෘත මූලාශ්‍ර වෙබ්-පාදක DevOps ජීවන චක්‍ර මෙවලමක් වන අතර එය Git සඳහා එහිම විකි, නිකුතු ලුහුබැඳීමේ පද්ධතිය, CI/CD නල මාර්ගය සහ අනෙකුත් විශේෂාංග සමඟ කේත ගබඩා කළමනාකරණ පද්ධතියක් සපයයි.

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

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

දැන් සිදුවන්නේ කුමක්ද යන්න වඩා හොඳින් අවබෝධ කර ගැනීම සඳහා, පහත රූප සටහන දෙස බැලීමට මම යෝජනා කරමි:

C# සඳහා PVS-Studio භාවිතයෙන් GitLab හි ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය කිරීම
විශ්ලේෂකය ක්‍රියාත්මක වීමට .NET Core SDK 3 අවශ්‍ය වේ, එබැවින් විශ්ලේෂකය ස්ථාපනය කිරීමට පෙර ඔබ විශ්ලේෂකය සඳහා අවශ්‍ය පරායත්තතා ස්ථාපනය කරන Microsoft ගබඩාවන් එක් කළ යුතුය. විවිධ ලිනක්ස් බෙදාහැරීම් සඳහා Microsoft ගබඩා එකතු කිරීම අදාළ ලේඛනයේ විස්තර කර ඇත.

පැකේජ කළමනාකරු හරහා PVS-Studio ස්ථාපනය කිරීමට, ඔබට PVS-Studio ගබඩාවන් එක් කිරීමටද අවශ්‍ය වනු ඇත. විවිධ බෙදාහැරීම් සඳහා ගබඩා එකතු කිරීම වඩාත් විස්තරාත්මකව විස්තර කෙරේ ලේඛනවල අදාළ කොටස.

විශ්ලේෂකය ක්රියාත්මක කිරීමට බලපත්ර යතුරක් අවශ්ය වේ. ඔබට අත්හදා බැලීමේ බලපත්‍රයක් ලබා ගත හැකිය විශ්ලේෂක බාගත කිරීමේ පිටුව.

අදහස් දැක්වීම්. විස්තර කර ඇති මෙහෙයුම් ආකාරය (ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය) සඳහා ව්‍යවසාය බලපත්‍රයක් අවශ්‍ය බව කරුණාවෙන් සලකන්න. එබැවින්, ඔබට මෙම මෙහෙයුම් ආකාරය උත්සාහ කිරීමට අවශ්‍ය නම්, ඔබට ව්‍යවසාය බලපත්‍රයක් අවශ්‍ය බව “පණිවිඩ” ක්ෂේත්‍රයේ සඳහන් කිරීමට අමතක නොකරන්න.

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

දැන්, ඔබේ ඇස් ඉදිරිපිට වැඩ කිරීමේ ඇල්ගොරිතමයක් තිබීම, ඔබට පිටපතක් ලිවීමට ඉදිරියට යා හැකිය. මෙය සිදු කිරීම සඳහා, ඔබ ගොනුව වෙනස් කළ යුතුය .gitlab-ci.yml හෝ, එය නොපවතියි නම්, එය නිර්මාණය කරන්න. එය සෑදීමට, ඔබ ඔබේ ව්‍යාපෘතියේ නම මත ක්ලික් කළ යුතුය -> CI/CD සකසන්න.

C# සඳහා PVS-Studio භාවිතයෙන් GitLab හි ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය කිරීම
දැන් අපි පිටපත ලියන්න සූදානම්. විශ්ලේෂකය ස්ථාපනය කර බලපත්‍රය ඇතුළු කරන කේතය පළමුව ලියන්න:

before_script:
  - apt-get update && apt-get -y install wget gnupg 

  - apt-get -y install git
  - wget https://packages.microsoft.com/config/debian/10/
packages-microsoft-prod.deb -O packages-microsoft-prod.deb
  - dpkg -i packages-microsoft-prod.deb
  - apt-get update
  - apt-get install apt-transport-https
  - apt-get update
  
  - wget -q -O - https://files.viva64.com/etc/pubkey.txt | apt-key add -
  - wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
  - apt-get update
  - apt-get -y install pvs-studio-dotnet

  - pvs-studio-analyzer credentials $PVS_NAME $PVS_KEY
  - dotnet restore "$CI_PROJECT_DIR"/Test/Test.sln

අනෙකුත් සියලුම ස්ක්‍රිප්ට් වලට පෙර ස්ථාපනය සහ සක්‍රිය කිරීම සිදු විය යුතු බැවින්, අපි විශේෂ ලේබලයක් භාවිතා කරමු පෙර_ස්ක්‍රිප්ට්. මම මේ කොටස පොඩ්ඩක් පැහැදිලි කරන්නම්.

විශ්ලේෂකය ස්ථාපනය කිරීමට සූදානම් වෙමින්:

  - wget https://packages.microsoft.com/config/debian/10/
packages-microsoft-prod.deb -O packages-microsoft-prod.deb
  - dpkg -i packages-microsoft-prod.deb
  - apt-get update
  - apt-get install apt-transport-https
  - apt-get update

PVS-Studio ගබඩාවන් සහ විශ්ලේෂකය එකතු කිරීම:

  - wget -q -O - https://files.viva64.com/etc/pubkey.txt | apt-key add -
  - wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
  - apt-get update
  - apt-get -y install pvs-studio-dotnet

බලපත්ර සක්රිය කිරීම:

  - pvs-studio-analyzer credentials $PVS_NAME $PVS_KEY

$PVS_NAME - පරිශීලක නාමය.

$PVS_KEY - නිෂ්පාදන යතුර.

ව්‍යාපෘති පරායත්තතා නැවත ලබා ගැනීම $CI_PROJECT_DIR - ව්යාපෘති නාමාවලිය වෙත සම්පූර්ණ මාර්ගය:

  - dotnet restore "$CI_PROJECT_DIR"/Path/To/Solution.sln

නිවැරදි විශ්ලේෂණය සඳහා, ව්‍යාපෘතිය සාර්ථකව ගොඩනගා ගත යුතු අතර, එහි පරායත්තතා ප්‍රතිසාධනය කළ යුතුය (උදාහරණයක් ලෙස, අවශ්‍ය NuGet පැකේජ බාගත කළ යුතුය).

ක්ලික් කිරීමෙන් බලපත්‍ර තොරතුරු අඩංගු පරිසර විචල්‍ය ඔබට සැකසිය හැක සැකසුම, සහ පසු - මත CI/CD.

C# සඳහා PVS-Studio භාවිතයෙන් GitLab හි ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය කිරීම
විවෘත වන කවුළුව තුළ, අයිතමය සොයා ගන්න විචල්යයන්, දකුණු පස ඇති බොත්තම මත ක්ලික් කරන්න දිගු කරන්න සහ විචල්‍ය එකතු කරන්න. ප්රතිඵලය මේ ආකාරයෙන් විය යුතුය:

C# සඳහා PVS-Studio භාවිතයෙන් GitLab හි ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය කිරීම
දැන් ඔබට විශ්ලේෂණය වෙත යා හැකිය. පළමුව, සම්පූර්ණ විශ්ලේෂණයක් සඳහා ස්ක්‍රිප්ට් එකක් එකතු කරමු. කොඩියට -t අපි ධජයට විසඳුම සඳහා මාර්ගය පසු කරමු -o විශ්ලේෂණ ප්රතිඵල ලියා ඇති ගොනුව වෙත මාර්ගය ලියන්න. ආපසු එන කේතය ගැනද අපි උනන්දු වෙමු. මෙම අවස්ථාවෙහිදී, විශ්ලේෂණය අතරතුර අනතුරු ඇඟවීම් නිකුත් කරන ලද තොරතුරු ආපසු කේතයේ අඩංගු වන විට මෙහෙයුම නතර කිරීම ගැන අපි උනන්දු වෙමු. මෙම කොටස පෙනෙන්නේ මෙයයි:

job:
  script:
  - exit_code=0
  - pvs-studio-dotnet -t "$CI_PROJECT_DIR"/Test/Test.sln -o 
PVS-Studio.json || exit_code=$?
  - exit_code=$((($exit_code & 8)/8))
  - if [[ $exit_code == 1 ]]; then exit 1; else exit 0; fi

ආපසු එන කේත වැඩ කරන්නේ ටිකක් මාස්ක් මූලධර්මය මතය. උදාහරණයක් ලෙස, විශ්ලේෂණයේ ප්‍රතිඵලයක් ලෙස අනතුරු ඇඟවීම් නිකුත් කළේ නම්, ප්‍රතිලාභ කේතය 8 ට සමාන වනු ඇත. බලපත්‍රය මාසයක් ඇතුළත කල් ඉකුත් වුවහොත්, ප්‍රතිලාභ කේතය 4 ට සමාන වේ. විශ්ලේෂණය අතරතුර දෝෂ අනාවරණය වුවහොත්, සහ බලපත්‍රය මාසයක් ඇතුළත කල් ඉකුත් වේ, කේත ප්‍රතිලාභය, අගයන් දෙකම ලියා ඇත: අංක එකට එකතු කර අවසාන ප්‍රතිලාභ කේතය ලබා ගන්න - 8+4=12. මේ අනුව, අනුරූප බිටු පරීක්ෂා කිරීමෙන්, විශ්ලේෂණය අතරතුර විවිධ තත්වයන් පිළිබඳ තොරතුරු ලබා ගත හැකිය. ප්‍රතිලාභ කේත ලේඛනයේ "pvs-studio-dotnet (Linux / macOS) Return Codes" කොටසේ වඩාත් විස්තරාත්මකව විස්තර කර ඇත "PVS-Studio භාවිතයෙන් විධාන රේඛාවෙන් Visual Studio / MSBuild / .NET Core ව්‍යාපෘති පරීක්ෂා කිරීම".

මෙම අවස්ථාවෙහිදී, 8 දිස්වන සියලුම ආපසු කේතයන් ගැන අපි උනන්දු වෙමු.

  - exit_code=$((($exit_code & 8)/8))

ආපසු එන කේතයේ අප උනන්දුවක් දක්වන අංකයේ බිට් එක අඩංගු වන විට අපට 1 ලැබෙනු ඇත, එසේ නොමැතිනම් අපට 0 ලැබෙනු ඇත.

ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය එක් කිරීමට කාලයයි. අපි මෙය කිරීමට පෙර, අපි පිටපත සඳහා ස්ථානයක් සකස් කරමු. අපට එය ක්‍රියාත්මක කිරීමට අවශ්‍ය වන්නේ ඒකාබද්ධ කිරීමේ ඉල්ලීමක් සිදු වූ විට පමණි. එය මෙසේ පෙනේ:

merge:
  script:
  only:
  - merge_requests

අපි පිටපතටම යමු. අතථ්‍ය යන්ත්‍රය කිසිවක් නොදන්නා බවට මට මුහුණ දීමට සිදු විය සම්භවය / මාස්ටර්. ඉතින් අපි ඇයට ටිකක් උදව් කරමු:

  - git fetch origin

දැන් අපි අතු අතර වෙනස ලබාගෙන ප්රතිඵලය සුරකින්න txt ගොනුව:

  - git diff --name-only origin/master $CI_COMMIT_SHA > pvs-fl.txt

කොහෙද? $CI_COMMIT_SHA - අවසාන කැපවීමේ හැෂ්.

ඊළඟට, අපි ධජය භාවිතයෙන් ගොනු ලැයිස්තුව විශ්ලේෂණය කිරීමට පටන් ගනිමු -f. අපි කලින් ලැබුණු .txt ගොනුව එයට මාරු කරමු. හොඳයි, සම්පූර්ණ විශ්ලේෂණය සමඟ ප්‍රතිසමයෙන්, අපි ප්‍රතිලාභ කේත දෙස බලමු:

  - exit_code=0
  - pvs-studio-dotnet -t "$CI_PROJECT_DIR"/Test/Test.sln -f 
pvs-fl.txt -o PVS-Studio.json || exit_code=$?
  - exit_code=$((($exit_code & 8)/8))
  - if [[ $exit_code == 1 ]]; then exit 1; else exit 0; fi

ඒකාබද්ධ කිරීමේ ඉල්ලීමක් පරීක්ෂා කිරීම සඳහා සම්පූර්ණ ස්ක්‍රිප්ටය මේ ආකාරයෙන් පෙනෙනු ඇත:

merge:
  script:
  - git fetch origin
  - git diff --name-only origin/master $CI_COMMIT_SHA > pvs-fl.txt
  - exit_code=0
  - pvs-studio-dotnet -t "$CI_PROJECT_DIR"/Test/Test.sln -f 
pvs-fl.txt -o PVS-Studio.json || exit_code=$?
  - exit_code=$((($exit_code & 8)/8))
  - if [[ $exit_code == 1 ]]; then exit 1; else exit 0; fi
  only:
  - merge_requests

සියලුම ස්ක්‍රිප්ට් සැකසීමෙන් පසු ලොග් පරිවර්තනය එකතු කිරීම පමණක් ඉතිරිව ඇත. අපි ලේබලය භාවිතා කරමු පසු_ස්ක්‍රිප්ට් සහ උපයෝගීතාව ප්ලොග්-පරිවර්තකය:

after_script:
  - plog-converter -t html -o eLog ./PVS-Studio.json

උපයෝගීතාව ප්ලොග්-පරිවර්තකය විග්‍රහ කිරීමේ දෝෂ වාර්තා HTML වැනි විවිධ ආකාරවලට පරිවර්තනය කිරීමට භාවිතා කරන විවෘත මූලාශ්‍ර ව්‍යාපෘතියකි. උපයෝගීතාව පිළිබඳ වඩාත් සවිස්තරාත්මක විස්තරයක් "Plog Converter Utility" උපවගන්තියෙහි දක්වා ඇත. ලේඛනවල අදාළ කොටස.

මාර්ගය වන විට, ඔබට IDE වෙතින් දේශීයව .json වාර්තා සමඟ පහසුවෙන් වැඩ කිරීමට අවශ්‍ය නම්, මම යෝජනා කරන්නේ අපගේ ප්ලගිනය IDE Rider සඳහා. එහි භාවිතය වඩාත් විස්තරාත්මකව විස්තර කෙරේ අදාළ ලියවිල්ල.

පහසුව සඳහා, මෙන්න එයයි .gitlab-ci.yml සම්පුර්ණයෙන්:

image: debian

before_script:
  - apt-get update && apt-get -y install wget gnupg 

  - apt-get -y install git
  - wget https://packages.microsoft.com/config/debian/10/
packages-microsoft-prod.deb -O packages-microsoft-prod.deb
  - dpkg -i packages-microsoft-prod.deb
  - apt-get update
  - apt-get install apt-transport-https
  - apt-get update
  
  - wget -q -O - https://files.viva64.com/etc/pubkey.txt | apt-key add -
  - wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
  - apt-get update
  - apt-get -y install pvs-studio-dotnet

  - pvs-studio-analyzer credentials $PVS_NAME $PVS_KEY
  - dotnet restore "$CI_PROJECT_DIR"/Test/Test.sln

merge:
  script:
  - git fetch origin
  - git diff --name-only origin/master $CI_COMMIT_SHA > pvs-fl.txt
  - exit_code=0
  - pvs-studio-dotnet -t "$CI_PROJECT_DIR"/Test/Test.sln -f 
pvs-fl.txt -o PVS-Studio.json || exit_code=$?
  - exit_code=$((($exit_code & 8)/8))
  - if [[ $exit_code == 1 ]]; then exit 1; else exit 0; fi
  only:
  - merge_requests

job:
  script:
  - exit_code=0
  - pvs-studio-dotnet -t "$CI_PROJECT_DIR"/Test/Test.sln -o 
PVS-Studio.json || exit_code=$?
  - exit_code=$((($exit_code & 8)/8))
  - if [[ $exit_code == 1 ]]; then exit 1; else exit 0; fi
  
after_script:
  - plog-converter -t html -o eLog ./PVS-Studio.json

ඔබ ගොනුවට සියල්ල එකතු කළ පසු, ක්ලික් කරන්න වෙනස්කම් කරන්න. සෑම දෙයක්ම නිවැරදි බව බැලීමට, යන්න සීඅයි / සීඩී -> නල මාර්ග -> ධාවන. අතථ්‍ය යන්ත්‍ර කවුළුවක් විවෘත වනු ඇත, අවසානයේ පහත සඳහන් දෑ තිබිය යුතුය:

C# සඳහා PVS-Studio භාවිතයෙන් GitLab හි ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය කිරීම
දැක්කා රැකියාව සාර්ථක විය - සාර්ථකත්වය, හැම දෙයක්ම හොඳයි. දැන් ඔබට ඔබ කළ දේ පරීක්ෂා කළ හැකිය.

වැඩ උදාහරණ

වැඩ පිළිබඳ උදාහරණයක් සඳහා, අපි සරල ව්යාපෘතියක් නිර්මාණය කරමු (in ස්වාමියා) ගොනු කිහිපයක් අඩංගු වේ. ඊට පස්සේ, වෙනත් ශාඛාවක අපි එක ගොනුවක් පමණක් වෙනස් කර ඒකාබද්ධ ඉල්ලීමක් කිරීමට උත්සාහ කරමු.

අපි අවස්ථා දෙකක් සලකා බලමු: වෙනස් කරන ලද ගොනුවේ දෝෂයක් ඇති විට සහ එය නොමැති විට. පළමුව, දෝෂයක් සහිත උදාහරණයක්.

අපි හිතමු මාස්ටර් ශාඛාවේ ෆයිල් එකක් තියෙනවා කියලා Program.cs, එහි දෝෂ අඩංගු නොවේ, නමුත් වෙනත් ශාඛාවක සංවර්ධකයා වැරදි කේතයක් එක් කර ඇති අතර ඒකාබද්ධ ඉල්ලීමක් කිරීමට අවශ්‍ය වේ. ඔහු කුමන ආකාරයේ වැරැද්දක් කළේද යන්න එතරම් වැදගත් නොවේ, ප්රධාන දෙය නම් එය පවතින බවයි. උදාහරණයක් ලෙස, ක්රියාකරුට අමතක විය විසි (ඔව්, එතරම් වැරදියි):

void MyAwesomeMethod(String name)
{
  if (name == null)
    new ArgumentNullException(....);
  // do something
  ....
}

දෝෂයක් සමඟ උදාහරණයක් විශ්ලේෂණය කිරීමේ ප්රතිඵලය දෙස බලමු. එක් ගොනුවක් පමණක් විග්‍රහ කර ඇති බව සහතික කර ගැනීමට, මම ධජය එක් කළෙමි -r pvs-studio-dotnet දියත් කිරීමේ රේඛාව වෙත:

C# සඳහා PVS-Studio භාවිතයෙන් GitLab හි ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය කිරීම
විශ්ලේෂකය දෝෂයක් සොයාගෙන ඇති අතර ශාඛා ඒකාබද්ධ කිරීමට ඉඩ නොදුන් බව අපට පෙනේ.

දෝෂයකින් තොරව උදාහරණය පරීක්ෂා කර බලමු. කේතය නිවැරදි කිරීම:

void MyAwesomeMethod(String name)
{
  if (name == null)
    throw new ArgumentNullException(....);
  // do something
  ....
}

ඉල්ලීම් විශ්ලේෂණ ප්‍රතිඵල ඒකාබද්ධ කරන්න:

C# සඳහා PVS-Studio භාවිතයෙන් GitLab හි ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය කිරීම
අපට පෙනෙන පරිදි, කිසිදු දෝෂයක් සොයාගත නොහැකි වූ අතර, කාර්යය ක්රියාත්මක කිරීම සාර්ථක විය, එය අපට පරීක්ෂා කිරීමට අවශ්ය විය.

නිගමනය

ශාඛා ඒකාබද්ධ කිරීමට පෙර නරක කේතය ඉවත් කිරීම ඉතා පහසු සහ ප්රසන්න වේ. එබැවින් ඔබ CI/CD භාවිතා කරන්නේ නම්, පරීක්ෂා කිරීමට ස්ථිතික විශ්ලේෂකයක් කාවැද්දීමට උත්සාහ කරන්න. එපමණක්ද නොව, මෙය ඉතා සරලව සිදු කෙරේ.

ඔබේ අවධානය ඔබට ස්තුතියි.

C# සඳහා PVS-Studio භාවිතයෙන් GitLab හි ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය කිරීම
ඔබට මෙම ලිපිය ඉංග්‍රීසි කතා කරන ප්‍රේක්ෂකයින් සමඟ බෙදා ගැනීමට අවශ්‍ය නම්, කරුණාකර පරිවර්තන සබැඳිය භාවිතා කරන්න: Nikolay Mironov. C# සඳහා PVS-Studio භාවිතයෙන් GitLab හි ඒකාබද්ධ ඉල්ලීම් විශ්ලේෂණය කිරීම.

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

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