PVS-Studio เด‡เดชเตเดชเต‹เตพ เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเดฟเดฒเดพเดฃเต: Azure DevOps-เดจเต เด•เต€เดดเดฟเตฝ เดจเดฟเดจเตเดจเต เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต

PVS-Studio เด‡เดชเตเดชเต‹เตพ เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเดฟเดฒเดพเดฃเต: Azure DevOps-เดจเต เด•เต€เดดเดฟเตฝ เดจเดฟเดจเตเดจเต เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต
เดžเด™เตเด™เตพ PVS-Studio เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เด•เต‚เดŸเตเดคเตฝ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดŸเดฐเตเดจเตเดจเต. เดžเด™เตเด™เดณเตเดŸเต† เด…เดจเดฒเตˆเดธเตผ เด‡เดชเตเดชเต‹เตพ Windows-เดจเตเดณเตเดณ เดชเดพเด•เตเด•เต‡เดœเต เดฎเดพเดจเต‡เดœเดฑเดพเดฏ เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเดฟเดฏเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฃเต. เด‡เดคเต เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹เดฏเตเดŸเต† เดตเดฟเดจเตเดฏเดพเดธเด‚ เดธเตเด—เดฎเดฎเดพเด•เตเด•เตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดตเดฟเดถเตเดตเดธเดฟเด•เตเด•เตเดจเตเดจเต, เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตเด‚, เด•เตเดฒเต—เดกเต เดธเต‡เดตเดจเด™เตเด™เดณเดฟเตฝ. เดฆเต‚เดฐเดคเตเดคเต‡เด•เตเด•เต เดชเต‹เด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป, เด…เดคเต‡ เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเดฟเดจเตเดฑเต† เดธเต‹เดดเตเดธเต เด•เต‹เดกเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚. Azure DevOps เด’เดฐเต CI เดธเดฟเดธเตเดฑเตเดฑเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚.

เด•เตเดฒเต—เดกเต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเตเดฎเดพเดฏเตเดณเตเดณ เดธเด‚เดฏเต‹เดœเดจเด‚ เดŽเดจเตเดจ เดตเดฟเดทเดฏเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดžเด™เตเด™เดณเตเดŸเต† เดฎเดฑเตเดฑเต เดฒเต‡เด–เดจเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เด‡เดคเดพ:

Azure DevOps-เดฎเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด†เดฆเตเดฏ เดฒเต‡เด–เดจเด‚ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เดพเตป เดžเดพเตป เดจเดฟเด™เตเด™เดณเต† เด‰เดชเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเต, เด•เดพเดฐเดฃเด‚ เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ เดคเดจเดฟเดชเตเดชเด•เตผเดชเตเดชเดพเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เดšเดฟเดฒ เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เตพ เด’เดดเดฟเดตเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดคเดฟเดจเดพเตฝ, เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเดฒเต† เดจเดพเดฏเด•เดจเตเดฎเดพเตผ:

เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹ C, C++, C#, Java เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดŽเดดเตเดคเดฟเดฏ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เดณเดฟเดฒเต† เดชเดฟเดถเด•เตเด•เดณเตเด‚ เดธเดพเดงเตเดฏเดคเดฏเตเดณเตเดณ เด•เต‡เดŸเตเดชเดพเดŸเตเด•เดณเตเด‚ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดพเตป เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตเดค เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เด•เต‹เดกเต เดตเดฟเดถเด•เดฒเดจ เด‰เดชเด•เดฐเดฃเดฎเดพเดฃเต. 64-เดฌเดฟเดฑเตเดฑเต เดตเดฟเตปเดกเต‹เดธเต, เดฒเดฟเดจเด•เตเดธเต, เดฎเดพเด•เต‹เดธเต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† 32-เดฌเดฟเดฑเตเดฑเต, 64-เดฌเดฟเดฑเตเดฑเต, เด‰เตพเดšเตเดšเต‡เตผเดคเตเดค ARM เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตโ€Œเดค เด•เต‹เดกเต เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตโ€Œเดฑเตเดฑเตเด•เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เด•เต‹เดกเต เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด‡เดคเดพเดฆเตเดฏเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพ เดธเตเดตเดฏเด‚ เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเดพเตป เดžเด™เตเด™เตพ เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เดฒเต‡เด–เดจเด‚ เดเดฑเตเดฑเดตเตเด‚ เดฐเดธเด•เดฐเดฎเดพเดฏ เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเด•เตพ เดŽเด™เตเด™เดจเต† เดตเต‡เด—เดคเตเดคเดฟเตฝ เด•เดพเดฃเดพเดฎเต†เดจเตเดจเตเด‚ เดˆ เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด•เดดเดฟเดตเตเด•เตพ เดŽเด™เตเด™เดจเต† เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเดพเดฎเต†เดจเตเดจเตเด‚.

เด…เดธเตเตผ เดกเต†เดตเตŠเดชเตโ€Œเดธเต - เดฎเตเดดเตเดตเตป เดตเดฟเด•เดธเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเตเด‚ เดธเด‚เดฏเตเด•เตเดคเดฎเดพเดฏเดฟ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เด•เตเดฒเต—เดกเต เดธเต‡เดตเดจเด™เตเด™เตพ. เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เดพเดจเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เด—เตเดฃเดจเดฟเดฒเดตเดพเดฐเด‚ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เด…เดธเต‚เตผ เดชเตˆเดชเตเดชเตโ€Œเดฒเตˆเดจเตเด•เตพ, เด…เดธเต‚เตผ เดฌเต‹เตผเดกเตเด•เตพ, เด…เดธเต‚เตผ เด†เตผเดŸเตเดŸเดฟเดซเดพเด•เตโ€Œเดฑเตเดฑเตเด•เตพ, เด…เดธเต‚เตผ เดฑเดฟเดชเตเดชเต‹เดธเต, เด…เดธเต‚เตผ เดŸเต†เดธเตเดฑเตเดฑเต เดชเตเดฒเดพเดจเตเด•เตพ เดคเตเดŸเด™เตเด™เดฟเดฏ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เดˆ เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต.

เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดตเดฟเตปเดกเต‹เดธเดฟเดจเดพเดฏเตเดณเตเดณ เด’เดฐเต เด“เดชเตเดชเตบ เดธเต‹เดดเตโ€Œเดธเต เดชเดพเด•เตเด•เต‡เดœเต เดฎเดพเดจเต‡เดœเดฐเดพเดฃเต. เดตเดฟเตปเดกเต‹เดธเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เดฎเตเดคเตฝ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดฒเตเด‚ เด…เตบเด‡เตปเดธเตเดฑเตเดฑเดพเดณเตเดšเต†เดฏเตเดฏเดฒเตเด‚ เดตเดฐเต†เดฏเตเดณเตเดณ เดฎเตเดดเตเดตเตป เดธเต‹เดซเตเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เดฒเตˆเดซเต เดธเตˆเด•เตเด•เดฟเดณเตเด‚ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดฒเด•เตเดทเตเดฏเด‚.

เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต

เดชเดพเด•เตเด•เต‡เดœเต เดฎเดพเดจเต‡เดœเตผ เดŽเด™เตเด™เดจเต† เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเดฎเต†เดจเตเดจเต เด‡เดคเดฟเตฝ เด•เดพเดฃเดพเด‚ เดฒเดฟเด™เตเด•เต. เด…เดจเดฒเตˆเดธเตผ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เด‡เดตเดฟเดŸเต† เดฒเดญเตเดฏเดฎเดพเดฃเต เดฒเดฟเด™เตเด•เต เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดชเดพเด•เตเด•เต‡เดœเต เดฎเดพเดจเต‡เดœเตผ เดตเดฟเดญเดพเด—เด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเดณเตเดณ เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เด•เดพเดฃเตเด•. เด…เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเตเดณเตเดณ เดšเดฟเดฒ เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เตพ เดžเดพเตป เดšเตเดฐเตเด•เตเด•เดฎเดพเดฏเดฟ เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดจเดฒเตˆเดธเดฑเดฟเดจเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เด•เดฎเดพเตปเดกเต:

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-เดจเตเดณเตเดณ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเดฎเดพเดฏเดฟ เดจเดฎเตเด•เตเด•เต เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดšเต‡เตผเด•เตเด•เดพเด‚. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเด•เตเด•เต เดชเต‹เด•เดพเด‚ เดฒเดฟเด™เตเด•เต. เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด• เด…เดคเต เดธเต—เดœเดจเตเดฏเดฎเดพเดฏเดฟ เดฒเดญเดฟเด•เตเด•เตเด•. เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเดฟเดจเด•เด‚ เด…เด‚เด—เต€เด•เดพเดฐเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เด…เด•เตเด•เต—เดฃเตเดŸเต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•, เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด…เด‚เด—เต€เด•เดพเดฐเดคเตเดคเดฟเดจเต เดถเต‡เดทเด‚ เด…เดคเต เดšเต†เดฏเตเดฏเตเด•.

PVS-Studio เด‡เดชเตเดชเต‹เตพ เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเดฟเดฒเดพเดฃเต: Azure DevOps-เดจเต เด•เต€เดดเดฟเตฝ เดจเดฟเดจเตเดจเต เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต

เดžเด™เตเด™เตพ เดŽเดตเดฟเดŸเต†เดฏเดพเดฃเต เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด‚ เดšเต‡เตผเด•เตเด•เต‡เดฃเตเดŸเดคเต†เดจเตเดจเต เด‡เดตเดฟเดŸเต† เดจเดฟเด™เตเด™เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต เดฌเดŸเตเดŸเตบ เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเดฃเด‚ เด‡เตปเดธเตเดฑเตเดฑเต‡เดพเตพ.

PVS-Studio เด‡เดชเตเดชเต‹เตพ เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเดฟเดฒเดพเดฃเต: Azure DevOps-เดจเต เด•เต€เดดเดฟเตฝ เดจเดฟเดจเตเดจเต เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต

เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏ เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเต เดถเต‡เดทเด‚, เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเด• เดธเด‚เด˜เดŸเดจเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•:

PVS-Studio เด‡เดชเตเดชเต‹เตพ เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเดฟเดฒเดพเดฃเต: Azure DevOps-เดจเต เด•เต€เดดเดฟเตฝ เดจเดฟเดจเตเดจเต เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดชเตเดชเต‹เตพ เดตเดฟเตปเดกเต‹เดฏเดฟเตฝ เดšเต‹เด•เตเดฒเต‡เดฑเตเดฑเต เดŸเดพเดธเตเด•เตเด•เดฟเดจเตเดณเตเดณ เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เด•เดพเดฃเดพเด‚ เดšเตเดฎเดคเดฒเด•เตพ เด’เดฐเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเตฝ เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ azure-pipelines.yml:

PVS-Studio เด‡เดชเตเดชเต‹เตพ เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเดฟเดฒเดพเดฃเต: Azure DevOps-เดจเต เด•เต€เดดเดฟเตฝ เดจเดฟเดจเตเดจเต เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต

เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดคเต เดซเต€เตฝเดกเตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เด•เดพเดฃเตเด•:

PVS-Studio เด‡เดชเตเดชเต‹เตพ เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเดฟเดฒเดพเดฃเต: Azure DevOps-เดจเต เด•เต€เดดเดฟเตฝ เดจเดฟเดจเตเดจเต เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต

เด‡เดตเดฟเดŸเต† เดจเดฎเตเดฎเตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• เดŸเต€เดฎเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดซเต€เตฝเดกเดฟเตฝ. 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()

เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเดพเด‚ เดธเต‡เดตเต->เดธเต‡เดตเต->เดฑเตบ เดšเตเดฎเดคเดฒ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป. เดŸเดพเดธเตโ€Œเด•เต เดŸเดพเดฌเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟ เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเด‚.

PVS-Studio เด‡เดชเตเดชเต‹เตพ เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเดฟเดฒเดพเดฃเต: Azure DevOps-เดจเต เด•เต€เดดเดฟเตฝ เดจเดฟเดจเตเดจเต เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต

เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ C# เด•เต‹เดกเดฟเดจเตเดฑเต† 37615 เดฒเตˆเดจเตเด•เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณเต‚. เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏ เดšเดฟเดฒ เดชเดฟเดถเด•เตเด•เตพ เดจเต‹เด•เตเด•เดพเด‚.

เดชเดฐเต€เด•เตเดทเดพ เดซเดฒเด‚

เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต N1

เด…เดจเดฒเตˆเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V3005 'เดชเตเดฐเตŠเดตเตˆเดกเตผ' เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดธเตเดตเดฏเด‚ เดจเดฟเดฏเตเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. CrytpoHashProviderSpecs.cs 38

public abstract class CrytpoHashProviderSpecsBase : TinySpec
{
  ....
  protected CryptoHashProvider Provider;
  ....
  public override void Context()
  {
    Provider = Provider = new CryptoHashProvider(FileSystem.Object);
  }
}

เด…เดจเดฒเตˆเดธเตผ เดธเตเดตเดฏเด‚ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเตเดฑเต† เด’เดฐเต เด…เดธเตˆเตปเดฎเต†เดจเตเดฑเต เด•เดฃเตเดŸเต†เดคเตเดคเดฟ, เด…เดคเต เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚, เดˆ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเดฟเดฒเตŠเดจเตเดจเดฟเดจเตเดฑเต† เดธเตเดฅเดพเดจเดคเตเดคเต เดฎเดฑเตเดฑเตŠเดจเตเดจเต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚. เดถเดฐเดฟ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด‡เดคเตŠเดฐเต เด…เด•เตเดทเดฐเดคเตเดคเต†เดฑเตเดฑเดพเดฃเต, เด…เดงเดฟเด• เด…เดธเตˆเตปเดฎเต†เดจเตเดฑเต เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดจเต€เด•เตเด•เด‚เดšเต†เดฏเตเดฏเดพเด‚.

เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต N2

เด…เดจเดฒเตˆเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V3093 [CWE-480] '&' เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เดฐเดฃเตเดŸเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเต†เดฏเตเด‚ เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเตเดจเตเดจเต. เดชเด•เดฐเด‚ เด’เดฐเต เดทเต‹เตผเดŸเตเดŸเต เดธเตผเด•เตเดฏเต‚เดŸเตเดŸเต '&&' เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฃเด‚. Platform.cs 64

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_ เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดŸเต.

เดชเดฐเดฟเด—เดฃเดฟเดšเตเดš เดถเด•เดฒเดคเตเดคเดฟเตฝ, เด‡เดคเตŠเดฐเต เดšเต†เดฑเดฟเดฏ เดชเดฟเดดเดตเดพเดฃเต. เด…เดคเต†, & เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฑเต† && เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดฑเตเดฑเดฟ เดˆ เด…เดตเดธเตเดฅ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚, เดŽเดจเตเดจเดพเตฝ เดชเตเดฐเดพเดฏเต‹เด—เดฟเด• เด•เดพเดดเตเดšเดชเตเดชเดพเดŸเดฟเตฝ, เด‡เดคเต เด’เดจเตเดจเดฟเดจเต†เดฏเตเด‚ เดฌเดพเดงเดฟเด•เตเด•เดฟเดฒเตเดฒ. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดฎเดฑเตเดฑเต เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ, เดชเดฆเดชเตเดฐเดฏเต‹เด—เดคเตเดคเดฟเดจเตเดฑเต† เดตเดฒเดคเตเดญเดพเด—เด‚ เดคเต†เดฑเตเดฑเดพเดฏ/เด…เดธเดพเดงเตเดตเดพเดฏ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ & &&& เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เด†เดถเดฏเด•เตเด•เตเดดเดชเตเดชเด‚ เด—เตเดฐเตเดคเดฐเดฎเดพเดฏ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดžเด™เตเด™เดณเตเดŸเต† เดชเดฟเดถเด•เต เดถเต‡เด–เดฐเดคเตเดคเดฟเตฝ, V3093 เดกเดฏเด—เตเดจเต‹เดธเตเดฑเตเดฑเดฟเด•เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดžเตเดžเต, เดˆ เด•เต‡เดธเต เด‰เดฃเตเดŸเต:

if ((k < nct) & (s[k] != 0.0))

เดธเต‚เดšเดฟเด• เด†เดฃเต†เด™เตเด•เดฟเดฒเตเด‚ k เดคเต†เดฑเตเดฑเดพเดฃเต, เด’เดฐเต เด…เดฑเต‡ เดŽเดฒเดฎเต†เดจเตเดฑเต เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เด’เดฐเต เด…เดชเดตเดพเดฆเด‚ เดŽเดฑเดฟเดฏเดชเตเดชเต†เดŸเตเด‚ IndexOutOfRangeException.

เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเด•เตพ N3, N4

เด…เดจเดฒเตˆเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V3022 [CWE-571] 'shortPrompt' เดŽเดจเตเดจ เดชเตเดฐเดฏเต‹เด—เด‚ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดถเดฐเดฟเดฏเดพเดฃเต. InteractivePrompt.cs 101
เด…เดจเดฒเตˆเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V3022 [CWE-571] 'shortPrompt' เดŽเดจเตเดจ เดชเตเดฐเดฏเต‹เด—เด‚ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดถเดฐเดฟเดฏเดพเดฃเต. InteractivePrompt.cs 105

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

เด…เดจเดฒเตˆเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V3123 [CWE-783] เด’เดฐเตเดชเด•เตเดทเต‡ '?:' เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เดชเตเดฐเดคเต€เด•เตเดทเดฟเดšเตเดšเดคเดฟเดฒเตเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเดฟเดจเตเดฑเต† เดฎเตเตปโ€Œเด—เดฃเดจ เด…เดคเดฟเดจเตเดฑเต† เด…เดตเดธเตเดฅเดฏเดฟเตฝ เดฎเดฑเตเดฑเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผเดฎเดพเดฐเตเดŸเต† เดฎเตเตปเด—เดฃเดจเดฏเต‡เด•เตเด•เดพเตพ เด•เตเดฑเดตเดพเดฃเต. Options.cs 1019

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

เด…เดจเดฒเตˆเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V3022 [CWE-571] 'installedPackageVersions. Count != 1' เดŽเดจเตเดจ เดชเตเดฐเดฏเต‹เด—เด‚ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดถเดฐเดฟเดฏเดพเดฃเต. NugetService.cs 1405

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

เด…เดจเดฒเตˆเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V3001 '||' เดจเตเดฑเต† เด‡เดŸเดคเตเดคเต‹เดŸเตเดŸเตเด‚ เดตเดฒเดคเตเดคเต‹เดŸเตเดŸเตเด‚ 'commandArguments.contains("-apikey")' เดŽเดจเตเดจเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เด‰เดช เดชเดฆเดชเตเดฐเดฏเต‹เด—เด™เตเด™เดณเตเดฃเตเดŸเต. เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ. ArgumentsUtility.cs 42

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

เด…เดจเดฒเตˆเดธเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต: V3095 [CWE-476] 'เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดค เดชเดพเด•เตเด•เต‡เดœเต' เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต เดถเต‚เดจเตเดฏเดคเดฏเตโ€Œเด•เตเด•เต†เดคเดฟเดฐเต† เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเตเดฑเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต. เดšเต†เด•เตเด•เต เดฒเตˆเดจเตเด•เตพ: 910, 917. NugetService.cs 910

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 เดŽเดจเตเดจเตเด‚ เดžเดพเตป เดชเดฑเดฏเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต.

เดžเด™เตเด™เตพ เด•เตเดทเดฃเดฟเด•เตเด•เตเดจเตเดจเต ัะบะฐั‡ะฐั‚ัŒ เด•เต‚เดŸเดพเดคเต† PVS-Studio เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•. เด’เดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เด…เดจเดฒเตˆเดธเดฑเดฟเดจเตเดฑเต† เดชเดคเดฟเดตเต เด‰เดชเดฏเต‹เด—เด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดŸเต€เด‚ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจ เด•เต‹เดกเดฟเดจเตเดฑเต† เด—เตเดฃเดจเดฟเดฒเดตเดพเดฐเดตเตเด‚ เดตเดฟเดถเตเดตเดพเดธเตเดฏเดคเดฏเตเด‚ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเด•เดฏเตเด‚ เดชเดฒเดคเตเด‚ เดคเดŸเดฏเดพเตป เดธเดนเดพเดฏเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚ เดชเต‚เดœเตเดฏเด‚ เดฆเดฟเดตเดธเดคเตเดคเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพ.

เดชเดฟ.เดŽเดธเต

เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เดžเด™เตเด™เตพ เดฒเต‡เด–เดจเด‚ เดšเต‹เด•เตเดฒเต‡เดฑเตเดฑเต เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เต เด…เดฏเดšเตเดšเต, เด…เดตเตผเด•เตเด•เต เด…เดคเต เดจเดจเตเดจเดพเดฏเดฟ เดฒเดญเดฟเดšเตเดšเต. เดจเดฟเตผเดฃเดพเดฏเด•เดฎเดพเดฏ เด’เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, "api-key" เด•เต€เดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเต เดžเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏ เดฌเด—เต เด…เดตเตผ เด‡เดทเตเดŸเดชเตเดชเต†เดŸเตเดŸเต.

PVS-Studio เด‡เดชเตเดชเต‹เตพ เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเดฟเดฒเดพเดฃเต: Azure DevOps-เดจเต เด•เต€เดดเดฟเตฝ เดจเดฟเดจเตเดจเต เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต

เด‡เด‚เด—เตเดฒเต€เดทเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเต‡เด•เตเดทเด•เดฐเตเดฎเดพเดฏเดฟ เดˆ เดฒเต‡เด–เดจเด‚ เดชเด™เตเด•เดฟเดŸเดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เดตเดฟเดตเตผเดคเตเดคเดจ เดฒเดฟเด™เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•: Vladislav Stolyarov. เดชเดฟเดตเดฟเดŽเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹ เด‡เดชเตเดชเต‹เตพ เดšเต‹เด•เตเด•เดฒเต‡เดฑเตเดฑเดฟเดฒเดพเดฃเต: เด…เดธเต‚เตผ เดกเต†เดตเต‹เดชเตโ€Œเดธเดฟเดจเต เด•เต€เดดเดฟเตฝ เดšเต‹เด•เตเดฒเต‡เดฑเตเดฑเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•