PVS-Studio ለ C# በመጠቀም በ GitLab ውስጥ ያሉ የውህደት ጥያቄዎች ትንተና

PVS-Studio ለ C# በመጠቀም በ GitLab ውስጥ ያሉ የውህደት ጥያቄዎች ትንተና
GitLabን ይወዳሉ እና ስህተቶችን ይጠላሉ? የምንጭ ኮድዎን ጥራት ማሻሻል ይፈልጋሉ? ከዚያ ወደ ትክክለኛው ቦታ መጥተዋል. የውህደት ጥያቄዎችን ለመፈተሽ ዛሬ የPVS-Studio C# analyzerን እንዴት እንደሚያዋቅሩ እንነግርዎታለን። ለሁሉም እንኳን ደስ አለዎት እና ደስተኛ ንባብ።

PVS- ስቱዲዮ በ C፣ C++፣ C # እና Java የተፃፉ የፕሮግራሞች ምንጭ ኮድ ውስጥ ስህተቶችን እና ሊሆኑ የሚችሉ ተጋላጭነቶችን ለመለየት የሚያስችል መሳሪያ ነው። በዊንዶውስ ፣ ሊኑክስ እና ማክኦኤስ ላይ በ64-ቢት ስርዓቶች ላይ ይሰራል። ለ32-ቢት፣ 64-ቢት እና ለተከተቱ የARM መድረኮች የተቀየሰ ኮድ መተንተን ይችላል።

በነገራችን ላይ ብዙ ነገር የሰራንበትን PVS-Studio 7.08 አውጥተናል። የሚስብ. ለምሳሌ:

  • ለሊኑክስ እና ለማክሮስ ሲ # ተንታኝ;
  • ተሰኪ ለ Rider;
  • አዲስ የፋይል ዝርዝር ቼክ ሁነታ.

የፋይል ዝርዝር አረጋግጥ ሁነታ

ከዚህ በፊት የተወሰኑ ፋይሎችን ለመፈተሽ የ .xml ፋይል ከፋይሎች ዝርዝር ጋር ወደ ተንታኙ ማስተላለፍ አስፈላጊ ነበር። ነገር ግን ይህ በጣም ምቹ ስላልሆነ, ህይወትን በእጅጉ የሚያቃልል txt ን የማስተላለፍ ችሎታን ጨምረናል.

የተወሰኑ ፋይሎችን ለመፈተሽ ባንዲራውን መጥቀስ አለብዎት --ምንጭ ፋይሎች (-f) እና txt በፋይሎች ዝርዝር ይለፉ። ይህን ይመስላል።

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

ቼኮችን ለማዋቀር ወይም ጥያቄዎችን ለመሳብ ፍላጎት ካለህ ይህን ሁነታ በመጠቀምም ማድረግ ትችላለህ። ልዩነቱ ለመተንተን የፋይሎችን ዝርዝር በማግኘት ላይ ይሆናል እና በየትኛው ስርዓቶች ላይ እንደሚጠቀሙ ይወሰናል.

የውህደት ጥያቄ ማረጋገጫ መርህ

የቼኩ ዋና ይዘት በተንታኙ የተገኙት ችግሮች ወደ ውህደት ውስጥ እንዳይገቡ ማረጋገጥ ነው ባለቤት ቅርንጫፍ. እንዲሁም፣ አጠቃላይ ፕሮጀክቱን በእያንዳንዱ ጊዜ መተንተን አንፈልግም። ከዚህም በላይ ቅርንጫፎችን በማዋሃድ, የተቀየሩ ፋይሎች ዝርዝር አለን. ስለዚህ የውህደት ጥያቄ ቼክ ለመጨመር ሀሳብ አቀርባለሁ።

የማይንቀሳቀስ ተንታኝ ከመቅረቡ በፊት የውህደት ጥያቄው ይህን ይመስላል።

PVS-Studio ለ C# በመጠቀም በ GitLab ውስጥ ያሉ የውህደት ጥያቄዎች ትንተና
በቅርንጫፍ ውስጥ የነበሩት ሁሉም ስህተቶች ማለት ነው ለውጦች, ወደ ዋናው ቅርንጫፍ ይሸጋገራል. ይህንን ስለማንፈልግ, ትንታኔውን እንጨምራለን, እና አሁን ወረዳው ይህን ይመስላል.

PVS-Studio ለ C# በመጠቀም በ GitLab ውስጥ ያሉ የውህደት ጥያቄዎች ትንተና
እንመረምራለን። ለውጦች2 እና, ምንም ስህተቶች ከሌሉ, የውህደት ጥያቄን እንቀበላለን, አለበለዚያ ግን ውድቅ እናደርጋለን.

በነገራችን ላይ ቁርጠኝነትን ለመተንተን እና የC/C++ ጥያቄዎችን ለመሳብ ፍላጎት ካሎት ስለሱ ማንበብ ይችላሉ። እዚህ.

GitLab

GitLab ክፍት ምንጭ የዴቭኦፕስ የህይወት ኡደት ድር መሳሪያ ለጊት የራሱ ዊኪ ፣ የሳንካ መከታተያ ሲስተም ፣ CI/CD ቧንቧ መስመር እና ሌሎች ባህሪያት ያለው የኮድ ማከማቻ አስተዳደር ስርዓትን የሚያቀርብ ነው።

የውህደት ጥያቄዎችን ትንተና ትግበራ ከመቀጠልዎ በፊት ፕሮጀክትዎን መመዝገብ እና መስቀል ያስፈልግዎታል። ይህን እንዴት ማድረግ እንዳለብዎ ካላወቁ, እኔ እጠቁማለሁ ጽሑፍ የሥራ ባልደረባዬ ።

አመለከተ. ከዚህ በታች የተገለጸውን አካባቢ የማዘጋጀት መንገድ ከሚቻሉት ውስጥ አንዱ ነው. ግቡ ለመተንተን አስፈላጊ የሆነውን አካባቢ ለማዘጋጀት እና ተንታኙን ለመጀመር ደረጃዎችን ማሳየት ነው. ምናልባት በእርስዎ ጉዳይ ላይ የአካባቢ ዝግጅት ደረጃዎችን መለየት (ማከማቻዎችን መጨመር ፣ ተንታኙን መጫን) እና ትንተና-ለምሳሌ ፣ የዶከር ምስሎችን ከአስፈላጊው አከባቢ ጋር በማዘጋጀት እና እነሱን በመጠቀም ፣ ወይም በሌላ መንገድ መለየት የበለጠ ጥሩ ይሆናል ።

አሁን ምን እንደሚሆን የበለጠ ለመረዳት፣ የሚከተለውን ስእል እንዲመለከቱ ሀሳብ አቀርባለሁ።

PVS-Studio ለ C# በመጠቀም በ GitLab ውስጥ ያሉ የውህደት ጥያቄዎች ትንተና
ተንታኙ የ NET Core SDK 3 እንዲሰራ ይፈልጋል ፣ ስለሆነም ተንታኙን ከመጫንዎ በፊት የማይክሮሶፍት ማከማቻዎችን ማከል ያስፈልግዎታል ፣ ከእዚያም ለተንታኙ አስፈላጊ የሆኑ ጥገኞች ይጫናሉ። ለተለያዩ የሊኑክስ ስርጭቶች የማይክሮሶፍት ማከማቻዎችን ማከል በሚመለከተው ሰነድ ውስጥ ተገልጿል.

PVS-Studioን በጥቅል አቀናባሪ በኩል ለመጫን የPVS-Studio ማከማቻዎችን ማከል ያስፈልግዎታል። ለተለያዩ ስርጭቶች ማከማቻዎችን መጨመር በ ውስጥ በበለጠ ዝርዝር ተገልጿል የሰነዶቹ ተጓዳኝ ክፍል.

ተንታኙ ለመስራት የፍቃድ ቁልፍ ያስፈልገዋል። በ ላይ የሙከራ ፈቃድ ማግኘት ይችላሉ። analyzer ማውረድ ገጽ.

አመለከተ. እባክዎ የተገለጸው የአሠራር ዘዴ (የውህደት ጥያቄዎች ትንተና) የኢንተርፕራይዝ ፈቃድ እንደሚያስፈልገው ልብ ይበሉ። ስለዚህ, ይህንን የአሰራር ዘዴ ለመሞከር ከፈለጉ, በ "መልእክት" መስክ ውስጥ, የድርጅት ፍቃድ እንደሚያስፈልግዎ ማመላከትዎን አይርሱ.

የውህደት ጥያቄ ከተነሳ, የተቀየሩትን ፋይሎች ዝርዝር ብቻ መተንተን አለብን, አለበለዚያ ሁሉንም ፋይሎች እንመረምራለን. ከመተንተን በኋላ, ምዝግቦቹን ወደምንፈልገው ቅርጸት መለወጥ ያስፈልገናል.

አሁን, በዓይኖቻችን ፊት የስራ ስልተ-ቀመር ስላለን, ስክሪፕቱን ወደ መፃፍ መቀጠል እንችላለን. ይህንን ለማድረግ ፋይሉን መቀየር ያስፈልግዎታል .gitlab-ci.yml ወይም ከሌለ, ይፍጠሩ. እሱን ለመፍጠር የፕሮጀክትዎን ስም -> ላይ ጠቅ ማድረግ ያስፈልግዎታል CI/ሲዲ ያዋቅሩ.

PVS-Studio ለ C# በመጠቀም በ 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/ሲዲ.

PVS-Studio ለ C# በመጠቀም በ GitLab ውስጥ ያሉ የውህደት ጥያቄዎች ትንተና
በሚከፈተው መስኮት ውስጥ ንጥሉን ያግኙ ተለዋዋጮች፣ በአዝራሩ ላይ በቀኝ ጠቅ ያድርጉ ዘርጋ እና ተለዋዋጮችን ያክሉ። ውጤቱ የሚከተለው መሆን አለበት.

PVS-Studio ለ C# በመጠቀም በ 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) የመመለሻ ኮዶች የሰነዱ ክፍል ውስጥ በበለጠ ዝርዝር ተገልጸዋል።ቪዥዋል ስቱዲዮ / MSBuild / .NET Core ፕሮጀክቶችን ከትእዛዝ መስመር PVS-Studioን በመጠቀም ማረጋገጥ".

በዚህ አጋጣሚ 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

አንዴ ሁሉም ነገር ወደ ፋይሉ ከታከለ በኋላ ጠቅ ያድርጉ ለውጦችን ማድረግ. ሁሉም ነገር ትክክል መሆኑን ለማየት ወደ ይሂዱ ሲአይ / ሲዲ -> ቧንቧዎች -> በማሄድ ላይ. የቨርቹዋል ማሽኑ መስኮት ይከፈታል፣በዚህም መጨረሻ የሚከተለው መሆን አለበት።

PVS-Studio ለ C# በመጠቀም በ GitLab ውስጥ ያሉ የውህደት ጥያቄዎች ትንተና
አየሁ ኢዮብ ተሳክቶለታል - ስኬት, ሁሉም ነገር ደህና ነው. አሁን ያደረጉትን መሞከር ይችላሉ።

የሥራ ምሳሌዎች

ለስራ ምሳሌ፣ ቀላል ፕሮጀክት እንፍጠር (በ ባለቤት) በርካታ ፋይሎችን ይይዛል። ከዚያ በኋላ, በሌላ ቅርንጫፍ ውስጥ, አንድ ፋይል ብቻ እንለውጣለን እና የውህደት ጥያቄ ለማቅረብ እንሞክራለን.

ሁለት ጉዳዮችን እንመልከት፡ የተሻሻለው ፋይል ስህተት ሲይዝ እና በማይኖርበት ጊዜ። በመጀመሪያ, ስህተት ያለበት ምሳሌ.

በዋናው ቅርንጫፍ ውስጥ ፋይል አለ እንበል ፕሮግራም.csስህተቶችን ያልያዘ እና በሌላ ቅርንጫፍ ውስጥ ገንቢው የተሳሳተ ኮድ ጨምሯል እና የውህደት ጥያቄ ማቅረብ ይፈልጋል። ምን አይነት ስህተት እንደሰራ በጣም አስፈላጊ አይደለም, ዋናው ነገር መኖሩ ነው. ለምሳሌ ኦፕሬተሩን ረሳሁት ይጥፉ (አዎ, በጣም ተሳስቷል።):

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

የምሳሌ ትንታኔ ውጤቱን ከስህተት ጋር እንይ። እንዲሁም አንድ ፋይል ብቻ መተንተኑን ለማረጋገጥ ባንዲራውን ጨምሬያለሁ -r ወደ pvs-studio-dotnet መነሻ መስመር፡-

PVS-Studio ለ C# በመጠቀም በ GitLab ውስጥ ያሉ የውህደት ጥያቄዎች ትንተና
ተንታኙ ስህተት እንዳገኘ እና ቅርንጫፎቹን እንዲዋሃዱ እንዳልፈቀደ እናያለን።

ምሳሌውን ያለምንም ስህተት እንፈትሽ። ኮዱን በማስተካከል ላይ;

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

የውህደት ጥያቄ ትንተና ውጤቶች፡-

PVS-Studio ለ C# በመጠቀም በ GitLab ውስጥ ያሉ የውህደት ጥያቄዎች ትንተና
እንደምናየው, ምንም ስህተቶች አልተገኙም, እና የተግባሩ አፈፃፀም የተሳካ ነበር, ይህም ለመፈተሽ የፈለግነው ነው.

መደምደሚያ

ቅርንጫፎችን ከማዋሃድ በፊት መጥፎ ኮድን ማስወገድ በጣም ምቹ እና አስደሳች ነው. ስለዚህ፣ CI/CD የሚጠቀሙ ከሆነ፣ እሱን ለመፈተሽ የማይንቀሳቀስ ተንታኝ ለመክተት ይሞክሩ። በተጨማሪም, ይህ በጣም ቀላል ነው.

የእርስዎን ትኩረት እናመሰግናለን.

PVS-Studio ለ C# በመጠቀም በ GitLab ውስጥ ያሉ የውህደት ጥያቄዎች ትንተና
ይህን ጽሑፍ ለእንግሊዝኛ ተናጋሪ ታዳሚዎች ማጋራት ከፈለጉ፣ እባክዎ የትርጉም ማገናኛውን ይጠቀሙ፡ Nikolay Mironov። PVS-Studio ለ C# በመጠቀም በ GitLab ውስጥ ያሉ የውህደት ጥያቄዎች ትንተና.

ምንጭ: hab.com

አስተያየት ያክሉ