C# కోసం PVS-Studioని ఉపయోగించి GitLabలో విలీన అభ్యర్థనల విశ్లేషణ

C# కోసం PVS-Studioని ఉపయోగించి GitLabలో విలీన అభ్యర్థనల విశ్లేషణ
GitLabని ఇష్టపడుతున్నారా మరియు బగ్‌లను ద్వేషిస్తున్నారా? మీ సోర్స్ కోడ్ నాణ్యతను మెరుగుపరచాలనుకుంటున్నారా? అప్పుడు మీరు సరైన స్థలానికి వచ్చారు. విలీన అభ్యర్థనలను తనిఖీ చేయడానికి PVS-Studio C# ఎనలైజర్‌ను ఎలా కాన్ఫిగర్ చేయాలో ఈ రోజు మేము మీకు తెలియజేస్తాము. యునికార్న్ మూడ్‌ని కలిగి ఉండండి మరియు అందరికీ చదవండి.

పివిఎస్-స్టూడియో C, C++, C# మరియు Javaలో వ్రాసిన ప్రోగ్రామ్‌ల సోర్స్ కోడ్‌లో లోపాలు మరియు సంభావ్య దుర్బలత్వాలను గుర్తించడానికి ఒక సాధనం. Windows, Linux మరియు macOSలో 64-బిట్ సిస్టమ్‌లలో పని చేస్తుంది. 32-బిట్, 64-బిట్ మరియు ఎంబెడెడ్ ARM ప్లాట్‌ఫారమ్‌ల కోసం రూపొందించిన కోడ్‌ను విశ్లేషించవచ్చు.

మార్గం ద్వారా, మేము PVS-స్టూడియో 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 కోర్ SDK 3 అవసరం, కాబట్టి ఎనలైజర్‌ని ఇన్‌స్టాల్ చేసే ముందు మీరు మైక్రోసాఫ్ట్ రిపోజిటరీలను జోడించాలి, దాని నుండి ఎనలైజర్‌కు అవసరమైన డిపెండెన్సీలు ఇన్‌స్టాల్ చేయబడతాయి. వివిధ Linux పంపిణీల కోసం 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-స్టూడియో రిపోజిటరీలు మరియు ఎనలైజర్‌ని జోడిస్తోంది:

  - 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) రిటర్న్ కోడ్‌లు" విభాగంలో మరింత వివరంగా వివరించబడ్డాయి "PVS-Studioని ఉపయోగించి కమాండ్ లైన్ నుండి విజువల్ స్టూడియో / MSBuild / .NET కోర్ ప్రాజెక్ట్‌లను తనిఖీ చేస్తోంది".

ఈ సందర్భంలో, 8 కనిపించే అన్ని రిటర్న్ కోడ్‌లపై మాకు ఆసక్తి ఉంది.

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

రిటర్న్ కోడ్‌లో మనకు ఆసక్తి ఉన్న సంఖ్య యొక్క బిట్ ఉన్నప్పుడు మేము 1ని అందుకుంటాము, లేకుంటే మేము 0ని అందుకుంటాము.

విలీన అభ్యర్థన విశ్లేషణను జోడించాల్సిన సమయం ఇది. దీన్ని చేయడానికి ముందు, స్క్రిప్ట్ కోసం ఒక స్థలాన్ని సిద్ధం చేద్దాం. విలీన అభ్యర్థన సంభవించినప్పుడు మాత్రమే మేము దానిని అమలు చేయాలి. ఇది ఇలా కనిపిస్తుంది:

merge:
  script:
  only:
  - merge_requests

స్క్రిప్ట్ విషయానికి వెళ్దాం. వర్చువల్ మెషీన్ గురించి ఏమీ తెలియదని నేను ఎదుర్కొన్నాను మూలం/మాస్టర్. కాబట్టి ఆమెకు కొంచెం సహాయం చేద్దాం:

  - git fetch origin

ఇప్పుడు మేము శాఖల మధ్య వ్యత్యాసాన్ని పొందుతాము మరియు ఫలితాన్ని సేవ్ చేస్తాము టిఎక్స్ టి ఫైల్:

  - 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 వంటి వివిధ రూపాల్లోకి మార్చడానికి ఉపయోగించే ఓపెన్ సోర్స్ ప్రాజెక్ట్. యుటిలిటీ యొక్క మరింత వివరణాత్మక వివరణ "ప్లాగ్ కన్వర్టర్ యుటిలిటీ" ఉపవిభాగంలో ఇవ్వబడింది డాక్యుమెంటేషన్ యొక్క సంబంధిత విభాగం.

అయితే, మీరు IDE నుండి స్థానికంగా .json నివేదికలతో సౌకర్యవంతంగా పని చేయాలనుకుంటే, నేను మా సూచన ప్లగ్ఇన్ IDE రైడర్ కోసం. దీని ఉపయోగం మరింత వివరంగా వివరించబడింది సంబంధిత పత్రం.

సౌలభ్యం కోసం, ఇదిగోండి .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

మీరు ఫైల్‌కి అన్నింటినీ జోడించిన తర్వాత, క్లిక్ చేయండి మార్పులకు కట్టుబడి ఉండండి. ప్రతిదీ సరిగ్గా ఉందని చూడటానికి, వెళ్ళండి CI/CD -> పైపులైన్ల -> రన్నింగ్. వర్చువల్ మెషీన్ విండో తెరవబడుతుంది, దాని చివరిలో కిందివి ఉండాలి:

C# కోసం PVS-Studioని ఉపయోగించి GitLabలో విలీన అభ్యర్థనల విశ్లేషణ
చూసింది ఉద్యోగం విజయవంతమైంది - విజయం, అంతా బాగానే ఉంది. ఇప్పుడు మీరు ఏమి చేశారో పరీక్షించవచ్చు.

పని ఉదాహరణలు

పని యొక్క ఉదాహరణ కోసం, ఒక సాధారణ ప్రాజెక్ట్‌ను రూపొందిద్దాం (లో మాస్టర్) ఇది అనేక ఫైల్‌లను కలిగి ఉంటుంది. ఆ తర్వాత, మరొక శాఖలో మేము ఒక ఫైల్‌ను మాత్రమే మారుస్తాము మరియు విలీన అభ్యర్థన చేయడానికి ప్రయత్నిస్తాము.

రెండు సందర్భాలను పరిశీలిద్దాం: సవరించిన ఫైల్ లోపాన్ని కలిగి ఉన్నప్పుడు మరియు అది లేనప్పుడు. మొదట, లోపం ఉన్న ఉదాహరణ.

మాస్టర్ బ్రాంచ్‌లో ఫైల్ ఉందనుకుందాం 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లో విలీన అభ్యర్థనల విశ్లేషణ
మీరు ఈ కథనాన్ని ఇంగ్లీష్ మాట్లాడే ప్రేక్షకులతో భాగస్వామ్యం చేయాలనుకుంటే, దయచేసి అనువాద లింక్‌ని ఉపయోగించండి: నికోలాయ్ మిరోనోవ్. C# కోసం PVS-Studioని ఉపయోగించి GitLabలో విలీన అభ్యర్థనల విశ్లేషణ.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి