เดเดเตเดเตพ PVS-Studio เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดเตเดเตเดคเตฝ เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดเตเดเตเดจเตเดจเดคเต เดคเตเดเดฐเตเดจเตเดจเต. เดเดเตเดเดณเตเดเต เด
เดจเดฒเตเดธเตผ เดเดชเตเดชเตเตพ Windows-เดจเตเดณเตเดณ เดชเดพเดเตเดเตเดเต เดฎเดพเดจเตเดเดฑเดพเดฏ เดเตเดเตเดเดฒเตเดฑเตเดฑเดฟเดฏเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฃเต. เดเดคเต เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเตเดฏเตเดเต เดตเดฟเดจเตเดฏเดพเดธเด เดธเตเดเดฎเดฎเดพเดเตเดเตเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดตเดฟเดถเตเดตเดธเดฟเดเตเดเตเดจเตเดจเต, เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเตเด, เดเตเดฒเตเดกเต เดธเตเดตเดจเดเตเดเดณเดฟเตฝ. เดฆเตเดฐเดคเตเดคเตเดเตเดเต เดชเตเดเดพเดคเดฟเดฐเดฟเดเตเดเดพเตป, เด
เดคเต เดเตเดเตเดเดฒเตเดฑเตเดฑเดฟเดจเตเดฑเต เดธเตเดดเตเดธเต เดเตเดกเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด. Azure DevOps เดเดฐเต CI เดธเดฟเดธเตเดฑเตเดฑเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเด.
เดเตเดฒเตเดกเต เดธเดฟเดธเตเดฑเตเดฑเดเตเดเดณเตเดฎเดพเดฏเตเดณเตเดณ เดธเดเดฏเตเดเดจเด เดเดจเตเดจ เดตเดฟเดทเดฏเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเดเตเดเดณเตเดเต เดฎเดฑเตเดฑเต เดฒเตเดเดจเดเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดเดคเดพ:
PVS-Studio เดฎเตเดเดเตเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดเตเดจเตเดจเต: Azure DevOps เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดเดเตเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดเตเดจเตเดจเต: เดเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดเดเตเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดเตเดจเตเดจเต: CircleCI PVS-Studio เดฎเตเดเดเตเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดเตเดจเตเดจเต: GitLab CI/CD
Azure DevOps-เดฎเดพเดฏเดฟ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเดฆเตเดฏ เดฒเตเดเดจเด เดถเตเดฐเดฆเตเดงเดฟเดเตเดเดพเตป เดเดพเตป เดจเดฟเดเตเดเดณเต เดเดชเดฆเตเดถเดฟเดเตเดเตเดจเตเดจเต, เดเดพเดฐเดฃเด เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ เดคเดจเดฟเดชเตเดชเดเตผเดชเตเดชเดพเดเตเดเดพเดคเดฟเดฐเดฟเดเตเดเดพเตป เดเดฟเดฒ เดชเตเดฏเดฟเดจเตเดฑเตเดเตพ เดเดดเดฟเดตเดพเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เด เดคเดฟเดจเดพเตฝ, เด เดฒเตเดเดจเดคเตเดคเดฟเดฒเต เดจเดพเดฏเดเดจเตเดฎเดพเตผ:
เดเตเดเตเดเดฒเตเดฑเตเดฑเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต
เดชเดพเดเตเดเตเดเต เดฎเดพเดจเตเดเตผ เดเดเตเดเดจเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเดฎเตเดจเตเดจเต เดเดคเดฟเตฝ เดเดพเดฃเดพเด
เด เดจเดฒเตเดธเดฑเดฟเดจเตเดฑเต เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เดเดฎเดพเตปเดกเต:
choco install pvs-studio
PVS-Studio เดชเดพเดเตเดเตเดเดฟเดจเตเดฑเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดชเดคเดฟเดชเตเดชเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เดเดฎเดพเตปเดกเต:
choco install pvs-studio --version=7.05.35617.2075
เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, เด เดจเดฒเตเดธเดฑเดฟเดจเตเดฑเต เดเตเตผ, เดเตเตผ เดเดเดเด เดฎเดพเดคเตเดฐเดฎเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดคเดฟเดเตเดเตเดณเตเดณเต. เดฎเดฑเตเดฑเตเดฒเตเดฒเดพ เดซเตเดฒเดพเดเตเดเดณเตเด (Standalone, JavaCore, IDEA, MSVS2010, MSVS2012, MSVS2013, MSVS2015, MSVS2017, MSVS2019) --package-parameters เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดฎเดพเดฑเดพเดจเดพเดเตเด.
เดตเดฟเดทเตเดตเตฝ เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต 2019-เดจเตเดณเตเดณ เดชเตเดฒเดเดฟเตป เดเดชเดฏเตเดเดฟเดเตเดเต เด เดจเดฒเตเดธเตผ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดเดฎเดพเตปเดกเดฟเดจเตเดฑเต เดเดฆเดพเดนเดฐเดฃเด:
choco install pvs-studio --package-parameters="'/MSVS2019'"
เดเดชเตเดชเตเตพ Azure DevOps-เดจเต เดเตเดดเดฟเตฝ เด เดจเดฒเตเดธเดฑเดฟเดจเตเดฑเต เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดเดชเดฏเตเดเดคเตเดคเดฟเดจเตเดฑเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดจเตเดเตเดเดพเด.
เดเดฎเดชเตเดชเตเดเตเดคเตเดคเดฒเต
เดเดฐเต เด
เดเตเดเตเดฃเตเดเต เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเด, เดเดฐเต เดฌเดฟเตฝเดกเต เดชเตเดชเตเดชเตโเดฒเตเตป เดธเตเดทเตเดเดฟเดเตเดเตเด, GitHub เดถเตเดเดฐเดคเตเดคเดฟเตฝ เดธเตเดฅเดฟเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดชเตเดฐเตเดเดเตโเดฑเตเดฑเตเดฎเดพเดฏเดฟ เดจเดฟเดเตเดเดณเตเดเต เด
เดเตเดเตเดฃเตเดเต เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเดเตเดเตเด เดคเตเดเดเตเดเดฟเดฏ เดชเตเดฐเดถเตโเดจเดเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดตเดฟเดญเดพเดเด เดเดฃเตเดเตเดจเตเดจเต เดเดพเตป เดจเดฟเดเตเดเดณเต เดเตผเดฎเตเดฎเดฟเดชเตเดชเดฟเดเตเดเดเตเดเต.
เดเดฆเตเดฏเด, เดจเดฎเตเดเตเดเต เดเดฐเต เดฒเตเดเตเดเต เดเตเดฐเดฟเดเตผ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดพเด, เดฎเดพเดฑเตเดฑเดเตเดเตพเดเตเดเต เดตเตเดฃเตเดเดฟ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดเดเตเดเตพ เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเต เดเดจเตเดจเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต เดฏเดเดฎเดพเดจเดจเต เดถเดพเด:
trigger:
- master
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ เดจเดฎเตเดฎเตพ เดเดฐเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเตป เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดชเตเดชเตเตพ เดเดคเต เดตเดฟเตปเดกเตเดธเต เดธเตเตผเดตเตผ 2019, เดตเดฟเดทเตเดตเตฝ เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต 2019 เดเดจเตเดจเดฟเดตเดฏเตโเดเตเดเตเดชเตเดชเด เดฎเตเดเตเดฐเตเดธเตเดซเตเดฑเตเดฑเต เดนเตเดธเตเดฑเตเดฑเตเดเตเดฏเตโเดค เดเดเดจเตเดฑเดพเดฏเดฟเดฐเดฟเดเตเดเตเด:
pool:
vmImage: 'windows-latest'
เดจเดฎเตเดเตเดเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเดฒเดฟเดจเตเดฑเต เดฌเตเดกเดฟเดฏเดฟเดฒเตเดเตเดเต เดชเตเดเดพเด (เดฌเตเดฒเตเดเตเดเต เดเดเตเดเดเตเดเตพ). เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเดฟเดฒเตเดเตเดเต เด
เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดธเตเดซเตเดฑเตเดฑเตเดตเตเดฏเตผ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ เดเดจเตเดจ เดตเดธเตเดคเตเดค เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดเตเดเตเด, เดเดพเตป เดเดฐเต เดกเตเดเตเดเตผ เดเดฃเตเดเตเดฏเตเดจเตผ เดเตเตผเดคเตเดคเดฟเดเตเดเดฟเดฒเตเดฒ. Azure DevOps-เดจเตเดณเตเดณ เดตเดฟเดชเตเดฒเตเดเดฐเดฃเดฎเดพเดฏเดฟ เดจเดฎเตเดเตเดเต เดเตเดเตเดเดฒเตเดฑเตเดฑเต เดเตเตผเดเตเดเดพเด. เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเดเตเดเต เดชเตเดเดพเด
เดเดเตเดเตพ เดเดตเดฟเดเตเดฏเดพเดฃเต เดตเดฟเดชเตเดฒเตเดเดฐเดฃเด เดเตเตผเดเตเดเตเดฃเตเดเดคเตเดจเตเดจเต เดเดตเดฟเดเต เดจเดฟเดเตเดเตพ เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเต เดฌเดเตเดเตบ เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเดฃเด เดเตปเดธเตเดฑเตเดฑเตเดพเตพ.
เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏ เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดทเดจเต เดถเตเดทเด, เดเตเดฒเดฟเดเตเดเตเดเตเดฏเตเดฏเตเด เดธเดเดเดเดจเดฏเดฟเดฒเตเดเตเดเต เดชเตเดเตเด:
เดจเดฟเดเตเดเตพเดเตเดเต เดเดชเตเดชเตเตพ เดตเดฟเตปเดกเตเดฏเดฟเตฝ เดเตเดเตเดฒเตเดฑเตเดฑเต เดเดพเดธเตเดเตเดเดฟเดจเตเดณเตเดณ เดเตเดเดชเตเดฒเตเดฑเตเดฑเต เดเดพเดฃเดพเด เดเตเดฎเดคเดฒเดเตพ เดเดฐเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเตฝ เดเดกเดฟเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ azure-pipelines.yml:
เดเตเดเตเดเดฒเตเดฑเตเดฑเดฟเตฝ เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดคเต เดซเตเตฝเดกเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดเดพเดฃเตเด:
เดเดตเดฟเดเต เดจเดฎเตเดฎเตพ เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด เดเตเดฎเตเดเตพเดเตเดเตเดชเตเดชเด เดซเตเตฝเดกเดฟเตฝ. IN เดจเตเดธเตเดชเตเดเต เดซเดฏเดฒเดฟเดจเตเดฑเต เดชเตเดฐเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดชเดพเดเตเดเตเดเดฟเดจเตเดฑเต เดชเตเดฐเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเด - pvs-studio. เดจเดฟเดเตเดเตพ เดชเดคเดฟเดชเตเดชเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเดฑเตเดฑเดตเตเด เดชเตเดคเดฟเดฏเดคเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดชเตเดชเตเดเตเด, เด เดคเต เดเดเตเดเตพเดเตเดเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฃเต. เดจเดฎเตเดเตเดเต เดฌเดเตเดเตบ เด เดฎเตผเดคเตเดคเดพเด เดเตเตผเดเตเดเตเด เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเดฒเดฟเตฝ เดเดจเดฑเตเดฑเตเดฑเต เดเตเดฏเตเดค เดเดพเดธเตโเดเต เดจเดฎเตเดเตเดเต เดเดพเดฃเดพเด.
steps:
- task: ChocolateyCommand@0
inputs:
command: 'install'
installPackageId: 'pvs-studio'
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดจเดฎเตเดเตเดเต เดจเดฎเตเดฎเตเดเต เดซเดฏเดฒเดฟเดจเตเดฑเต เดชเตเดฐเดงเดพเดจ เดญเดพเดเดคเตเดคเตเดเตเดเต เดชเตเดเดพเด:
- task: CmdLine@2
inputs:
script:
เดเดชเตเดชเตเตพ เดจเดฎเตเดฎเตพ เด เดจเดฒเตเดธเตผ เดฒเตเดธเตปเดธเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดตเดฟเดเต PVSNAME ะธ เดชเดฟ.เดตเดฟ.เดเดธเต.เดเต.เด - เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเดณเดฟเตฝ เดเดเตเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจ เดฎเตเดฒเตเดฏเดเตเดเดณเตเดเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเดเต เดชเตเดฐเตเดเตพ. เด เดตเตผ เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฒเตเดเดฟเตป, เดฒเตเดธเตปเดธเต เดเต เดเดจเตเดจเดฟเดต เดธเดเดญเดฐเดฟเดเตเดเตเด. เด เดตเดฏเตเดเต เดฎเตเดฒเตเดฏเดเตเดเตพ เดธเดเตเดเดฎเดพเดเตเดเดพเตป, เดฎเตเดจเต เดคเตเดฑเดเตเดเตเด เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ->เดชเตเดคเดฟเดฏ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ. เดจเดฎเตเดเตเดเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดเดฃเตเดเดพเดเตเดเดพเด PVSNAME เดฒเตเดเดฟเตป เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดชเดฟ.เดตเดฟ.เดเดธเต.เดเต.เด เด เดจเดฒเตเดธเตผ เดเตเดฏเตเดเตเดเดพเดฏเดฟ. เดฌเตเดเตเดธเต เดเตเดเตเดเต เดเตเดฏเตเดฏเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต เด เดฎเตเดฒเตเดฏเด เดฐเดนเดธเตเดฏเดฎเดพเดฏเดฟ เดธเตเดเตเดทเดฟเดเตเดเตเด เดตเตเดฃเตเดเดฟ เดชเดฟ.เดตเดฟ.เดเดธเต.เดเต.เด. เดเดฎเดพเตปเดกเต เดเตเดกเต:
ัall "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe" credentials
โu $(PVSNAME) โn $(PVSKEY)
เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดธเตเดฅเดฟเดคเดฟเดเตเดฏเตเดฏเตเดจเตเดจ เดฌเดพเดฑเตเดฑเต เดซเดฏเตฝ เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฎเตเดเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเด:
ัall build.bat
เด เดจเดฒเตเดธเดฑเดฟเดจเตเดฑเต เดซเดฒเดเตเดเดณเตเดณเตเดณ เดซเดฏเดฒเตเดเตพ เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดซเตเตพเดกเตผ เดจเดฎเตเดเตเดเต เดธเตเดทเตเดเดฟเดเตเดเดพเด:
ัall mkdir PVSTestResults
เดจเดฎเตเดเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเดพเตป เดเดฐเดเดญเดฟเดเตเดเดพเด:
ัall "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe"
โt .srcchocolatey.sln โo .PVSTestResultsChoco.plog
Plogะกonverter เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพ เดเดเตเดเดณเตเดเต เดฑเดฟเดชเตเดชเตเตผเดเตเดเต html เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเต:
ัall "C:Program Files (x86)PVS-StudioPlogConverter.exe"
โt html โo PVSTestResults .PVSTestResultsChoco.plog
เดเดชเตเดชเตเตพ เดจเดฟเดเตเดเตพ เดเดฐเต เดเดพเดธเตโเดเต เดธเตเดทเตโเดเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต, เด เดคเตเดตเดดเดฟ เดจเดฟเดเตเดเตพเดเตเดเต เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เด เดชเตโเดฒเตเดกเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด.
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: PVSTestResults
artifactName: PVSTestResults
condition: always()
เดชเตเตผเดฃเตเดฃเดฎเดพเดฏ เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเตฝ เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต:
trigger:
- master
pool:
vmImage: 'windows-latest'
steps:
- task: ChocolateyCommand@0
inputs:
command: 'install'
installPackageId: 'pvs-studio'
- task: CmdLine@2
inputs:
script: |
call "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe"
credentials โu $(PVSNAME) โn $(PVSKEY)
call build.bat
call mkdir PVSTestResults
call "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe"
โt .srcchocolatey.sln โo .PVSTestResultsChoco.plog
call "C:Program Files (x86)PVS-StudioPlogConverter.exe"
โt html โo .PVSTestResults .PVSTestResultsChoco.plog
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: PVSTestResults
artifactName: PVSTestResults
condition: always()
เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเดพเด เดธเตเดตเต->เดธเตเดตเต->เดฑเตบ เดเตเดฎเดคเดฒ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเดพเตป. เดเดพเดธเตโเดเต เดเดพเดฌเดฟเดฒเตเดเตเดเต เดชเตเดฏเดฟ เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเด.
เดเตเดเตเดเดฒเตเดฑเตเดฑเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเตฝ C# เดเตเดกเดฟเดจเตเดฑเต 37615 เดฒเตเดจเตเดเตพ เดฎเดพเดคเตเดฐเดฎเต เด เดเดเตเดเดฟเดฏเดฟเดเตเดเตเดณเตเดณเต. เดเดฃเตเดเตเดคเตเดคเดฟเดฏ เดเดฟเดฒ เดชเดฟเดถเดเตเดเตพ เดจเตเดเตเดเดพเด.
เดชเดฐเตเดเตเดทเดพ เดซเดฒเด
เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต N1
เด
เดจเดฒเตเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
public abstract class CrytpoHashProviderSpecsBase : TinySpec
{
....
protected CryptoHashProvider Provider;
....
public override void Context()
{
Provider = Provider = new CryptoHashProvider(FileSystem.Object);
}
}
เด เดจเดฒเตเดธเตผ เดธเตเดตเดฏเด เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเตเดฑเต เดเดฐเต เด เดธเตเตปเดฎเตเดจเตเดฑเต เดเดฃเตเดเตเดคเตเดคเดฟ, เด เดคเต เด เตผเดคเตเดฅเดฎเดพเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ. เดฎเดฟเดเตเดเดตเดพเดฑเตเด, เด เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเดฟเดฒเตเดจเตเดจเดฟเดจเตเดฑเต เดธเตเดฅเดพเดจเดคเตเดคเต เดฎเดฑเตเดฑเตเดจเตเดจเต เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด. เดถเดฐเดฟ, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดคเตเดฐเต เด เดเตเดทเดฐเดคเตเดคเตเดฑเตเดฑเดพเดฃเต, เด เดงเดฟเด เด เดธเตเตปเดฎเตเดจเตเดฑเต เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดจเตเดเตเดเดเดเตเดฏเตเดฏเดพเด.
เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต N2
เด
เดจเดฒเตเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
public static PlatformType get_platform()
{
switch (Environment.OSVersion.Platform)
{
case PlatformID.MacOSX:
{
....
}
case PlatformID.Unix:
if(file_system.directory_exists("/Applications")
& file_system.directory_exists("/System")
& file_system.directory_exists("/Users")
& file_system.directory_exists("/Volumes"))
{
return PlatformType.Mac;
}
else
return PlatformType.Linux;
default:
return PlatformType.Windows;
}
}
เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ เดตเตเดฏเดคเตเดฏเดพเดธเด & เดเดชเตเดชเดฑเตเดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต && เดชเดฆเดชเตเดฐเดฏเตเดเดคเตเดคเดฟเดจเตเดฑเต เดเดเดคเตเดตเดถเด เดเดฃเตเดเตเดเดฟเตฝ เดคเตเดฑเตเดฑเดพเดฏ, เด เดชเตเดชเตเตพ เดตเดฒเดคเต เดตเดถเด เดเดชเตเดชเตเดดเตเด เดเดฃเดเตเดเตเดเตเดเตเดเตเด, เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ เด เดจเดพเดตเดถเตเดฏเดฎเดพเดฏ เดฐเตเดคเดฟ เดเตเดณเตเดเตพ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต system.directory_ เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดเต.
เดชเดฐเดฟเดเดฃเดฟเดเตเด เดถเดเดฒเดคเตเดคเดฟเตฝ, เดเดคเตเดฐเต เดเตเดฑเดฟเดฏ เดชเดฟเดดเดตเดพเดฃเต. เด
เดคเต, & เดเดชเตเดชเดฑเตเดฑเตเดฑเดฑเต && เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเดพเดฑเตเดฑเดฟ เด เด
เดตเดธเตเดฅ เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด, เดเดจเตเดจเดพเตฝ เดชเตเดฐเดพเดฏเตเดเดฟเด เดเดพเดดเตเดเดชเตเดชเดพเดเดฟเตฝ, เดเดคเต เดเดจเตเดจเดฟเดจเตเดฏเตเด เดฌเดพเดงเดฟเดเตเดเดฟเดฒเตเดฒ. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดฎเดฑเตเดฑเต เดธเดจเตเดฆเตผเดญเดเตเดเดณเดฟเตฝ, เดชเดฆเดชเตเดฐเดฏเตเดเดคเตเดคเดฟเดจเตเดฑเต เดตเดฒเดคเตเดญเดพเดเด เดคเตเดฑเตเดฑเดพเดฏ/เด
เดธเดพเดงเตเดตเดพเดฏ เดฎเตเดฒเตเดฏเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ & &&& เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดเดถเดฏเดเตเดเตเดดเดชเตเดชเด เดเตเดฐเตเดคเดฐเดฎเดพเดฏ เดชเตเดฐเดถเตเดจเดเตเดเตพ เดเดฃเตเดเดพเดเตเดเดพเด. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดเตเดเดณเตเดเต เดชเดฟเดถเดเต เดถเตเดเดฐเดคเตเดคเดฟเตฝ,
if ((k < nct) & (s[k] != 0.0))
เดธเตเดเดฟเด เดเดฃเตเดเตเดเดฟเดฒเตเด k เดคเตเดฑเตเดฑเดพเดฃเต, เดเดฐเต เด เดฑเต เดเดฒเดฎเตเดจเตเดฑเต เดเดเตเดธเดธเต เดเตเดฏเตเดฏเดพเตป เดเดคเต เดเดชเดฏเตเดเดฟเดเตเดเตเด. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดเดฐเต เด เดชเดตเดพเดฆเด เดเดฑเดฟเดฏเดชเตเดชเตเดเตเด IndexOutOfRangeException.
เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเดเตพ N3, N4
เด
เดจเดฒเตเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เด
เดจเดฒเตเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
public static string
prompt_for_confirmation(.... bool shortPrompt = false, ....)
{
....
if (shortPrompt)
{
var choicePrompt = choice.is_equal_to(defaultChoice) //1
?
shortPrompt //2
?
"[[{0}]{1}]".format_with(choice.Substring(0, 1).ToUpperInvariant(), //3
choice.Substring(1,choice.Length - 1))
:
"[{0}]".format_with(choice.ToUpperInvariant()) //0
:
shortPrompt //4
?
"[{0}]{1}".format_with(choice.Substring(0,1).ToUpperInvariant(), //5
choice.Substring(1,choice.Length - 1))
:
choice; //0
....
}
....
}
เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเตเตผเดจเดฑเดฟ เดเดชเตเดชเดฑเตเดฑเตเดฑเดฑเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเต เดชเดฟเดจเตเดจเดฟเตฝ เดตเดฟเดเดฟเดคเตเดฐเดฎเดพเดฏ เดเดฐเต เดฏเตเดเตเดคเดฟเดฏเตเดฃเตเดเต. เดจเดฎเตเดเตเดเต เดธเตเดเตเดทเตเดฎเดฎเดพเดฏเดฟ เดจเตเดเตเดเดพเด: เดเดพเตป เดจเดฎเตเดชเตผ 1 เดเดชเดฏเตเดเดฟเดเตเดเต เด เดเดฏเดพเดณเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏ เดตเตเดฏเดตเดธเตเดฅ เดชเดพเดฒเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดเดเตเดเตพ เดตเตเดฏเดตเดธเตเดฅ 2 เดฒเตเดเตเดเต เดชเตเดเตเด, โโเด เดคเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เดฏเดฅเดพเตผเดฅ, เด เดคเดพเดฏเดคเต เดฒเตเตป 3 เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเด. เดตเตเดฏเดตเดธเตเดฅ 1 เดคเตเดฑเตเดฑเดพเดฃเตเดจเตเดจเต เดคเตเดณเดฟเดเตเดเดพเตฝ, เดจเดฎเตเดฎเตพ เดจเดฎเตเดชเตผ 4 เดเตเดฃเตเดเต เด เดเดฏเดพเดณเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏ เดตเดฐเดฟเดฏเดฟเดฒเตเดเตเดเต เดชเตเดเตเด, โโเด เด เดตเดธเตเดฅเดฏเตเด เดเดชเตเดชเตเดดเตเด เดฏเดฅเดพเตผเดฅ, เด เดคเดพเดฏเดคเต เดฒเตเตป 5 เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเด. เด เดเตเดเดจเต, เดเดฎเดจเตเดฑเต 0 เดเตเดฃเตเดเต เด เดเดฏเดพเดณเดชเตเดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดตเตเดฏเดตเดธเตเดฅเดเตพ เดเดฐเดฟเดเตเดเดฒเตเด เดชเตเตผเดคเตเดคเตเดเดฐเดฟเดเตเดเดชเตเดชเตเดเดฟเดฒเตเดฒ, เดเดคเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตผ เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต เดฏเตเดเตเดคเดฟ เดเดฏเดฟเดฐเดฟเดเตเดเดฟเดฒเตเดฒ.
เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต N5
เด
เดจเดฒเตเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
private static string GetArgumentName (...., string description)
{
string[] nameStart;
if (maxIndex == 1)
{
nameStart = new string[]{"{0:", "{"};
}
else
{
nameStart = new string[]{"{" + index + ":"};
}
for (int i = 0; i < nameStart.Length; ++i)
{
int start, j = 0;
do
{
start = description.IndexOf (nameStart [i], j);
}
while (start >= 0 && j != 0 ? description [j++ - 1] == '{' : false);
....
return maxIndex == 1 ? "VALUE" : "VALUE" + (index + 1);
}
}
เดกเดฏเดเตเดจเตเดธเตเดฑเตเดฑเดฟเดเต เดฒเตเดจเดฟเดจเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเต:
while (start >= 0 && j != 0 ? description [j++ - 1] == '{' : false)
เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดฎเตเดคเตฝ j เดฎเตเดเดณเดฟเดฒเตเดณเตเดณ เดเตเดฑเดเตเดเต เดตเดฐเดฟเดเตพ เดชเตเดเตเดฏเดคเตเดคเดฟเดฒเตเดเตเดเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเตเตผเดจเดฑเดฟ เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ เดฎเตเดฒเตเดฏเด เดคเดฟเดฐเดฟเดเต เดจเตฝเดเตเด เดคเตเดฑเตเดฑเดพเดฏ. เด เด เดตเดธเตเดฅ เดเดพเดฐเดฃเด, เดฒเตเดชเตเดชเดฟเดจเตเดฑเต เดถเดฐเตเดฐเด เดเดฐเดฟเดเตเดเตฝ เดฎเดพเดคเตเดฐเดฎเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดเดฏเตเดณเตเดณเต. เดชเตเดฐเตเดเตเดฐเดพเดฎเตผ เดเดฆเตเดฆเตเดถเดฟเดเตเดเดคเตเดชเตเดฒเต เด เดเตเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ เดเดจเตเดจเต เดเดจเดฟเดเตเดเต เดคเตเดจเตเดจเตเดจเตเดจเต.
เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต N6
เด
เดจเดฒเตเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
private void remove_nuget_cache_for_package(....)
{
if (!config.AllVersions && installedPackageVersions.Count > 1)
{
const string allVersionsChoice = "All versions";
if (installedPackageVersions.Count != 1)
{
choices.Add(allVersionsChoice);
}
....
}
....
}
เดเดตเดฟเดเต เดตเดฟเดเดฟเดคเตเดฐเดฎเดพเดฏ เดเดฐเต เด เดตเดธเตเดฅเดฏเตเดฃเตเดเต: installPackageVersions.Count != 1เดเดชเตเดชเตเดดเตเด เดเดฏเดฟเดฐเดฟเดเตเดเตเด เดฏเดฅเดพเตผเดฅ. เดชเดฒเดชเตเดชเตเดดเตเด เด เดคเตเดคเดฐเดฎเตเดฐเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดเตเดกเดฟเดฒเต เดเดฐเต เดฒเตเดเดฟเดเตเดเตฝ เดชเดฟเดถเดเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต, เดฎเดฑเตเดฑเต เดธเดจเตเดฆเตผเดญเดเตเดเดณเดฟเตฝ เดเดคเต เด เดจเดพเดตเดถเตเดฏ เดชเดฐเดฟเดถเตเดงเดจเดฏเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต.
เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต N7
เด
เดจเดฒเตเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
public static bool arguments_contain_sensitive_information(string
commandArguments)
{
return commandArguments.contains("-install-arguments-sensitive")
|| commandArguments.contains("-package-parameters-sensitive")
|| commandArguments.contains("apikey ")
|| commandArguments.contains("config ")
|| commandArguments.contains("push ")
|| commandArguments.contains("-p ")
|| commandArguments.contains("-p=")
|| commandArguments.contains("-password")
|| commandArguments.contains("-cp ")
|| commandArguments.contains("-cp=")
|| commandArguments.contains("-certpassword")
|| commandArguments.contains("-k ")
|| commandArguments.contains("-k=")
|| commandArguments.contains("-key ")
|| commandArguments.contains("-key=")
|| commandArguments.contains("-apikey")
|| commandArguments.contains("-api-key")
|| commandArguments.contains("-apikey")
|| commandArguments.contains("-api-key");
}
เดเตเดกเดฟเดจเตเดฑเต เด เดญเดพเดเด เดเดดเตเดคเดฟเดฏ เดชเตเดฐเตเดเตเดฐเดพเดฎเตผ เด เดตเดธเดพเดจ เดฐเดฃเตเดเต เดตเดฐเดฟเดเตพ เดชเดเตผเดคเตเดคเดฟ เดเดเตเดเดฟเดเตเดเต, เด เดต เดเดกเดฟเดฑเตเดฑเตเดเตเดฏเตเดฏเดพเตป เดฎเดฑเดจเตเดจเต. เดเดเตเดเดพเดฐเดฃเดคเตเดคเดพเตฝ, เดเตเดเตเดเดฒเตเดฑเตเดฑเต เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพเดเตเดเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดชเตเดฐเดฏเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดเตเดเดฟเดฒเตเดฒ เดเดชเดฟเดเต เดเดจเตเดจเตเดฐเดฃเตเดเต เดตเดดเดฟเดเตพ เดเตเดเดฟ. เดฎเตเดเดณเดฟเดฒเตเดณเตเดณ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพเดเตเดเต เดธเดฎเดพเดจเดฎเดพเดฏเดฟ, เดเดจเดฟเดเตเดเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดชเตเดทเดจเตเดเตพ เดตเดพเดเตเดฆเดพเดจเด เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด:
commandArguments.contains("-apikey=");
commandArguments.contains("-api-key=");
เดเตเดชเตเดชเดฟ-เดชเตเดธเตเดฑเตเดฑเต เดชเดฟเดถเดเตเดเตพ เดเดฐเต เดตเดฒเดฟเดฏ เด เดณเดตเดฟเดฒเตเดณเตเดณ เดธเตเดดเตเดธเต เดเตเดกเตเดณเตเดณ เดเดคเตเดฐเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดฒเตเด เดเดเตป เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเดฟเดจเตเดจเตเดเต เดชเตเดฐเดคเตเดฏเดเตเดทเดชเตเดชเตเดเดพเดจเตเดณเตเดณ เดเดฏเตผเดจเตเดจ เดธเดพเดงเตเดฏเดคเดฏเตเดฃเตเดเต, เด เดตเดฏเต เดเตเดฑเตเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดฎเดฟเดเดเตเด เดเดชเดเดฐเดฃเดเตเดเดณเดฟเดฒเตเดจเตเดจเดพเดฃเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดตเดฟเดถเดเดฒเดจเด.
PS เดเดฒเตเดฒเดพเดฏเตโเดชเตเดชเตเดดเตเด เดเดจเตเดจเดชเตเดฒเต, เด เดชเดฟเดถเดเต เดเดฐเต เดฎเตพเดเตเดเดฟ-เดฒเตเตป เด
เดตเดธเตเดฅเดฏเตเดเต เด
เดตเดธเดพเดจเด เดฆเตเดถเตเดฏเดฎเดพเดเตเด :). เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฃเด เดเดพเดฃเตเด "
เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต N8
เด
เดจเดฒเตเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
public virtual ConcurrentDictionary<string, PackageResult> get_outdated(....)
{
....
var pinnedPackageResult = outdatedPackages.GetOrAdd(
packageName,
new PackageResult(installedPackage,
_fileSystem.combine_paths(
ApplicationParameters.PackagesLocation,
installedPackage.Id)));
....
if ( installedPackage != null
&& !string.IsNullOrWhiteSpace(installedPackage.Version.SpecialVersion)
&& !config.UpgradeCommand.ExcludePrerelease)
{
....
}
....
}
เดเตเดฒเดพเดธเดฟเดเต เดคเตเดฑเตเดฑเต: เดเดฆเตเดฏเด เดเดฌเตเดเดเตเดฑเตเดฑเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดค เดชเดพเดเตเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเตเดเดฏเตเด เดคเตเดเตผเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต เดถเตเดจเตเดฏเด. เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดฒเต เดฐเดฃเตเดเต เดชเตเดฐเดถเตเดจเดเตเดเดณเดฟเตฝ เดเดจเตเดจเดฟเดจเต เดเตเดฑเดฟเดเตเดเต เด เดกเดฏเดเตเดจเตเดธเตเดฑเตเดฑเดฟเดเต เดจเดฎเตเดฎเตเดเต เดชเดฑเดฏเตเดจเตเดจเต: เดเดจเตเดจเตเดเดฟเตฝ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดค เดชเดพเดเตเดเตเดเต เดเดฐเดฟเดเตเดเดฒเตเด เดคเตเดฒเตเดฏเดฎเดฒเตเดฒ เดถเตเดจเตเดฏเด, เดเดคเต เดธเดเดถเดฏเดพเดธเตเดชเดฆเดฎเดพเดฃเต, เดคเตเดเตผเดจเตเดจเต เดเตเดเตเดเต เด เดจเดพเดตเดถเตเดฏเดฎเดพเดฃเต, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดจเดฎเตเดเตเดเต เดเตเดกเดฟเตฝ เดเตเดฐเตเดคเดฐเดฎเดพเดฏ เดชเดฟเดถเดเต เดเดฃเตเดเดพเดเดพเตป เดธเดพเดงเตเดฏเดคเดฏเตเดฃเตเดเต - เดเดฐเต เดถเตเดจเตเดฏเดฎเดพเดฏ เดฑเดซเดฑเตปเดธเต เดเดเตเดธเดธเต เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เดถเตเดฐเดฎเด.
เดคเตเดฐเตเดฎเดพเดจเด
เด เดคเดฟเดจเดพเตฝ เดเดเตเดเตพ เดฎเดฑเตเดฑเตเดฐเต เดเตเดฑเดฟเดฏ เดเดเตเดเด เดธเตเดตเตเดเดฐเดฟเดเตเดเต - เดเดชเตเดชเตเตพ เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดเตเดเตเดคเตฝ เดเดณเตเดชเตเดชเดตเตเด เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดตเตเดฎเดพเดฃเต. PVS-Studio เดเดชเดฏเตเดเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเดคเดฟเดฒเตเด เดเตเดฑเดตเดพเดฏ เดเตเดกเดฟเตฝ เดเตเดฑเดฟเดฏ เดชเดฟเดถเดเตเดเดณเตเดณเตเดณ เดเดฐเต เดจเดฒเตเดฒ เดชเดพเดเตเดเตเดเต เดฎเดพเดจเตเดเดฐเดพเดฃเต Chocolatey เดเดจเตเดจเตเด เดเดพเตป เดชเดฑเดฏเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต.
เดเดเตเดเตพ เดเตเดทเดฃเดฟเดเตเดเตเดจเตเดจเต
เดชเดฟ.เดเดธเต
เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดเดเตเดเตพ เดฒเตเดเดจเด เดเตเดเตเดฒเตเดฑเตเดฑเต เดกเตเดตเดฒเดชเตเดชเตผเดฎเดพเตผเดเตเดเต เด เดฏเดเตเดเต, เด เดตเตผเดเตเดเต เด เดคเต เดจเดจเตเดจเดพเดฏเดฟ เดฒเดญเดฟเดเตเดเต. เดจเดฟเตผเดฃเดพเดฏเดเดฎเดพเดฏ เดเดจเตเดจเตเด เดเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ, เดชเดเตเดทเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, "api-key" เดเตเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเดเต เดเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดฟเดฏ เดฌเดเต เด เดตเตผ เดเดทเตเดเดชเตเดชเตเดเตเดเต.
เดเดเดเตเดฒเตเดทเต เดธเดเดธเดพเดฐเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเตเดเตเดทเดเดฐเตเดฎเดพเดฏเดฟ เด เดฒเตเดเดจเด เดชเดเตเดเดฟเดเดพเตป เดจเดฟเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ, เดตเดฟเดตเตผเดคเตเดคเดจ เดฒเดฟเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเตเด: Vladislav Stolyarov.
เด
เดตเดฒเดเดฌเด: www.habr.com