PVS-Studio แƒแƒฎแƒšแƒ Chocolatey-แƒจแƒ˜แƒ: แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ— Chocolatey-แƒก Azure DevOps-แƒ“แƒแƒœ

PVS-Studio แƒแƒฎแƒšแƒ Chocolatey-แƒจแƒ˜แƒ: แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ— Chocolatey-แƒก Azure DevOps-แƒ“แƒแƒœ
ะœั‹ ะฟั€ะพะดะพะปะถะฐะตะผ ะดะตะปะฐั‚ัŒ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต PVS-Studio ัƒะดะพะฑะฝะตะต. ะขะตะฟะตั€ัŒ ะฝะฐัˆ ะฐะฝะฐะปะธะทะฐั‚ะพั€ ะดะพัั‚ัƒะฟะตะฝ ะฒ Chocolatey, ะฟะฐะบะตั‚ะฝะพะผ ะผะตะฝะตะดะถะตั€ะต ะดะปั Windows. ะœั‹ ะฟะพะปะฐะณะฐะตะผ, ั‡ั‚ะพ ัั‚ะพ ะพะฑะปะตะณั‡ะธั‚ ั€ะฐะทะฒั‘ั€ั‚ั‹ะฒะฐะฝะธะต PVS-Studio, ะฒ ั‡ะฐัั‚ะฝะพัั‚ะธ, ะฒ ะพะฑะปะฐั‡ะฝั‹ั… ัะตั€ะฒะธัะฐั…. ะงั‚ะพะฑั‹ ะฝะต ะธะดั‚ะธ ะดะฐะปะตะบะพ, ะฟั€ะพะฒะตั€ะธะผ ะธัั…ะพะดะฝั‹ะน ะบะพะด ะฒัั‘ ั‚ะพะณะพ ะถะต Chocolatey. ะ’ ะบะฐั‡ะตัั‚ะฒะต CI ัะธัั‚ะตะผั‹ ะฒั‹ัั‚ัƒะฟะธั‚ Azure DevOps.

แƒแƒฅ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒฎแƒ•แƒ แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ แƒฆแƒ แƒฃแƒ‘แƒšแƒแƒ•แƒแƒœ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒแƒ–แƒ”:

แƒ’แƒ˜แƒ แƒฉแƒ”แƒ•แƒ—, แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ แƒ›แƒ˜แƒแƒฅแƒชแƒ˜แƒแƒ— แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒกแƒขแƒแƒขแƒ˜แƒแƒก Azure DevOps-แƒ—แƒแƒœ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ แƒแƒ“แƒ’แƒแƒœ แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒžแƒฃแƒœแƒฅแƒขแƒ˜ แƒ’แƒแƒ›แƒแƒขแƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒฃแƒ‘แƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒกแƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“.

แƒแƒกแƒ” แƒ แƒแƒ›, แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ’แƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜:

PVS- แƒกแƒขแƒฃแƒ“แƒ˜แƒ โ€” ะธะฝัั‚ั€ัƒะผะตะฝั‚ ัั‚ะฐั‚ะธั‡ะตัะบะพะณะพ ะฐะฝะฐะปะธะทะฐ ะบะพะดะฐ, ะฟั€ะตะดะฝะฐะทะฝะฐั‡ะตะฝะฝั‹ะน ะดะปั ะฒั‹ัะฒะปะตะฝะธั ะพัˆะธะฑะพะบ ะธ ะฟะพั‚ะตะฝั†ะธะฐะปัŒะฝั‹ั… ัƒัะทะฒะธะผะพัั‚ะตะน ะฒ ะฟั€ะพะณั€ะฐะผะผะฐั…, ะฝะฐะฟะธัะฐะฝะฝั‹ั… ะฝะฐ ัะทั‹ะบะฐั… ะก, C++, C# ะธ Java. ะ ะฐะฑะพั‚ะฐะตั‚ ะฒ 64-ะฑะธั‚ะฝั‹ั… ัะธัั‚ะตะผะฐั… ะฝะฐ Windows, Linux ะธ macOS, ะธ ะผะพะถะตั‚ ะฐะฝะฐะปะธะทะธั€ะพะฒะฐั‚ัŒ ะบะพะด, ะฟั€ะตะดะฝะฐะทะฝะฐั‡ะตะฝะฝั‹ะน ะดะปั 32-ะฑะธั‚ะฝั‹ั…, 64-ะฑะธั‚ะฝั‹ั… ะธ ะฒัั‚ั€ะฐะธะฒะฐะตะผั‹ั… ARM ะฟะปะฐั‚ั„ะพั€ะผ. ะ•ัะปะธ ะฒั‹ ะฒะฟะตั€ะฒั‹ะต ะฑัƒะดะตั‚ะต ะฟั€ะพะฑะพะฒะฐั‚ัŒ ัั‚ะฐั‚ะธั‡ะตัะบะธะน ะฐะฝะฐะปะธะท ะบะพะดะฐ ะดะปั ะฟั€ะพะฒะตั€ะบะธ ัะฒะพะธั… ะฟั€ะพะตะบั‚ะพะฒ, ั‚ะพ ั€ะตะบะพะผะตะฝะดัƒะตะผ ะพะทะฝะฐะบะพะผะธั‚ัŒัั ัะพ แƒกแƒขแƒแƒขแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒœแƒแƒฎแƒแƒ— PVS-Studio-แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒจแƒ”แƒแƒคแƒแƒกแƒแƒ— แƒแƒ› แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜.

Azure DevOps โ€” แƒฆแƒ แƒฃแƒ‘แƒšแƒแƒ•แƒแƒœแƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒ แƒ—แƒแƒ‘แƒšแƒ˜แƒ•แƒแƒ“ แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก แƒ›แƒ—แƒ”แƒš แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒก. แƒ”แƒก แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก แƒ˜แƒกแƒ”แƒ— แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ Azure Pipelines, Azure Boards, Azure Artifacts, Azure Repos, Azure Test Plans, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ“แƒแƒแƒฉแƒฅแƒแƒ แƒแƒ— แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒ“แƒ แƒ’แƒแƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒแƒ— แƒ›แƒ˜แƒกแƒ˜ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜.

แƒจแƒแƒ™แƒแƒšแƒแƒ“แƒ˜ โ€“ ะฟะฐะบะตั‚ะฝั‹ะน ะผะตะฝะตะดะถะตั€ ะดะปั Windows ั ะพั‚ะบั€ั‹ั‚ั‹ะผ ะธัั…ะพะดะฝั‹ะผ ะบะพะดะพะผ. ะฆะตะปัŒ ะฟั€ะพะตะบั‚ะฐ โ€” ะฐะฒั‚ะพะผะฐั‚ะธะทะธั€ะพะฒะฐั‚ัŒ ะฒะตััŒ ะถะธะทะฝะตะฝะฝั‹ะน ั†ะธะบะป ะฟั€ะพะณั€ะฐะผะผะฝะพะณะพ ะพะฑะตัะฟะตั‡ะตะฝะธั ะพั‚ ัƒัั‚ะฐะฝะพะฒะบะธ ะดะพ ะพะฑะฝะพะฒะปะตะฝะธั ะธ ัƒะดะฐะปะตะฝะธั ะฒ ะพะฟะตั€ะฐั†ะธะพะฝะฝั‹ั… ัะธัั‚ะตะผะฐั… Windows.

แƒจแƒแƒ™แƒแƒšแƒแƒ“แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒฌแƒ”แƒกแƒ˜แƒก แƒœแƒแƒฎแƒ•แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒแƒฅ แƒšแƒ˜แƒœแƒ™แƒ”แƒ‘แƒ˜แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ‘แƒ›แƒฃแƒšแƒ–แƒ”: แƒšแƒ˜แƒœแƒ™แƒ”แƒ‘แƒ˜ แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ โ€žแƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ Chocolatey-แƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—โ€œ. แƒ›แƒแƒ™แƒšแƒ”แƒ“ แƒ’แƒแƒ•แƒ˜แƒ›แƒ”แƒแƒ แƒ”แƒ‘ แƒ˜แƒฅแƒ˜แƒ“แƒแƒœ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒžแƒฃแƒœแƒฅแƒขแƒก.

แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ:

choco install pvs-studio

PVS-Studio แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ:

choco install pvs-studio --version=7.05.35617.2075

แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒ แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ โ€” Core แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜. แƒงแƒ•แƒ”แƒšแƒ แƒกแƒฎแƒ•แƒ แƒ“แƒ แƒแƒจแƒ˜แƒก (Standalone, JavaCore, IDEA, MSVS2010, MSVS2012, MSVS2013, MSVS2015, MSVS2017, MSVS2019) แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ --package-แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒก Visual Studio 2019-แƒ˜แƒก แƒ“แƒแƒœแƒแƒ›แƒแƒขแƒ˜แƒ—:

choco install pvs-studio --package-parameters="'/MSVS2019'"

แƒแƒฎแƒšแƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ Azure DevOps-แƒจแƒ˜.

แƒ แƒ”แƒ’แƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ

แƒจแƒ”แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ—, แƒ แƒแƒ› แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒชแƒแƒšแƒ™แƒ” แƒกแƒขแƒแƒขแƒ˜แƒ แƒ˜แƒกแƒ”แƒ— แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ–แƒ”, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜แƒก แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒแƒชแƒ˜แƒ, Build Pipeline-แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ“แƒ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜แƒก แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ GitHub-แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒฃแƒš แƒžแƒ แƒแƒ”แƒฅแƒขแƒ—แƒแƒœ. แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒกแƒฉแƒ•แƒ”แƒœแƒ˜ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒ—.

แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜, แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒแƒ— แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒขแƒ แƒ˜แƒ’แƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก, แƒ แƒแƒ› แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ. แƒกแƒแƒ›แƒแƒ’แƒ˜แƒกแƒขแƒ แƒ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜:

trigger:
- master

ะ”ะฐะปะตะต ะฝะฐะผ ะฝัƒะถะฝะพ ะฒั‹ะฑั€ะฐั‚ัŒ ะฒะธั€ั‚ัƒะฐะปัŒะฝัƒัŽ ะผะฐัˆะธะฝัƒ. ะะฐ ะดะฐะฝะฝั‹ะน ะผะพะผะตะฝั‚ ัั‚ะพ ะฑัƒะดะตั‚ Microsoft-hosted ะฐะณะตะฝั‚ ั Windows Server 2019 ะธ Visual Studio 2019:

pool:
  vmImage: 'windows-latest'

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“ แƒœแƒแƒฌแƒ˜แƒšแƒ–แƒ” (แƒ‘แƒšแƒแƒ™แƒ˜ แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜). แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒจแƒ˜ แƒ—แƒ•แƒ˜แƒ—แƒœแƒ”แƒ‘แƒฃแƒ แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒ›แƒ” Docker-แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜ แƒแƒ  แƒ“แƒแƒ›แƒ˜แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ. แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ Chocolatey แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ—, แƒ แƒแƒ’แƒแƒ แƒช แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒ Azure DevOps-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒšแƒ˜แƒœแƒ™แƒ”แƒ‘แƒ˜แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— แฒแƒ˜แƒฆแƒ” แƒฃแƒคแƒแƒกแƒแƒ“แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ—แƒฃ แƒฃแƒ™แƒ•แƒ” แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฎแƒแƒ แƒ—, แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ˜แƒ แƒฉแƒ˜แƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜ แƒ“แƒ แƒ—แƒฃ แƒแƒ แƒ, แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’.

PVS-Studio แƒแƒฎแƒšแƒ Chocolatey-แƒจแƒ˜แƒ: แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ— Chocolatey-แƒก Azure DevOps-แƒ“แƒแƒœ

แƒแƒฅ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒแƒ˜แƒ แƒฉแƒ˜แƒแƒ—, แƒกแƒแƒ“ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ“แƒแƒแƒญแƒ˜แƒ แƒ”แƒ— แƒฆแƒ˜แƒšแƒแƒ™แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ.

PVS-Studio แƒแƒฎแƒšแƒ Chocolatey-แƒจแƒ˜แƒ: แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ— Chocolatey-แƒก Azure DevOps-แƒ“แƒแƒœ

แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒแƒ–แƒ” แƒ’แƒแƒ“แƒแƒกแƒ•แƒšแƒ:

PVS-Studio แƒแƒฎแƒšแƒ Chocolatey-แƒจแƒ˜แƒ: แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ— Chocolatey-แƒก Azure DevOps-แƒ“แƒแƒœ

แƒแƒฎแƒšแƒ แƒคแƒแƒœแƒฏแƒแƒ แƒแƒจแƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— Chocolatey แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜. แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒแƒก azure-pipelines.yml:

PVS-Studio แƒแƒฎแƒšแƒ Chocolatey-แƒจแƒ˜แƒ: แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ— Chocolatey-แƒก Azure DevOps-แƒ“แƒแƒœ

แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒแƒ— Chocolatey-แƒ–แƒ” แƒ“แƒ แƒ•แƒœแƒแƒฎแƒแƒ— แƒ•แƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ:

PVS-Studio แƒแƒฎแƒšแƒ Chocolatey-แƒจแƒ˜แƒ: แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ— Chocolatey-แƒก Azure DevOps-แƒ“แƒแƒœ

แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒแƒ•แƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ แƒ•แƒ”แƒšแƒจแƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— Nuspec แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ•แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ— แƒกแƒแƒญแƒ˜แƒ แƒ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒก โ€“ pvs-studio. แƒ—แƒฃ แƒแƒ  แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ— แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒก, แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒ แƒฃแƒšแƒแƒ“ แƒ’แƒ•แƒแƒฌแƒงแƒแƒ‘แƒก. แƒ“แƒแƒแƒญแƒ˜แƒ แƒ”แƒ— แƒฆแƒ˜แƒšแƒแƒ™แƒก แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒ“แƒ แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒจแƒ˜ แƒ•แƒœแƒแƒฎแƒแƒ•แƒ—.

steps:
- task: ChocolateyCommand@0
  inputs:
    command: 'install'
    installPackageId: 'pvs-studio'

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ  แƒœแƒแƒฌแƒ˜แƒšแƒ–แƒ”:

- task: CmdLine@2
  inputs:
    script: 

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒคแƒแƒ˜แƒšแƒ˜ แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ˜แƒ—. แƒแƒฅ แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ˜ ะธ PVSKEY โ€“ แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒกแƒแƒช แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒจแƒ˜ แƒ•แƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒ—. แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ”แƒœ PVS-Studio-แƒก แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒกแƒ แƒ“แƒ แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒก. แƒ›แƒแƒ—แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“, แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— แƒ›แƒ”แƒœแƒ˜แƒฃ แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜ -> แƒแƒฎแƒแƒšแƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜ แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ PVSKEY แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ  แƒ“แƒแƒ’แƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ”แƒ— แƒ•แƒ”แƒšแƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒจแƒ•แƒœแƒ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒ”แƒ— แƒ”แƒก แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ แƒกแƒแƒ˜แƒ“แƒฃแƒ›แƒšแƒแƒ“ แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก PVSKEYแƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ“แƒ˜:

ัall "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe" credentials 
โ€“u $(PVSNAME) โ€“n $(PVSKEY)

แƒ›แƒแƒ“แƒ˜แƒ—, แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒ แƒ”แƒžแƒแƒ–แƒ˜แƒขแƒแƒ แƒจแƒ˜ แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ bat แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—:

ัall build.bat

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”, แƒกแƒแƒ“แƒแƒช แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ:

ัall mkdir PVSTestResults

แƒ›แƒแƒ“แƒ˜แƒ—, แƒฉแƒแƒ•แƒแƒขแƒแƒ แƒแƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜:

ัall "C:Program Files (x86)PVS-StudioPVS-Studio_Cmd.exe" 
โ€“t .srcchocolatey.sln โ€“o .PVSTestResultsChoco.plog 

แƒฉแƒ•แƒ”แƒœ แƒฉแƒ•แƒ”แƒœแƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒก HTML แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜ แƒ•แƒแƒฅแƒชแƒ”แƒ•แƒ— Plogะกonverter-แƒ˜แƒก แƒฃแƒขแƒ˜แƒšแƒ˜แƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—:

ั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 แƒแƒฎแƒšแƒ Chocolatey-แƒจแƒ˜แƒ: แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ— Chocolatey-แƒก Azure DevOps-แƒ“แƒแƒœ

Chocolatey แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒ›แƒฎแƒแƒšแƒแƒ“ 37615 แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœ C# แƒ™แƒแƒ“แƒก แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก. แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒแƒฆแƒ›แƒแƒฉแƒ”แƒœแƒ˜แƒšแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜.

แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜

แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ N1

แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ: V3005 โ€žProviderโ€œ แƒชแƒ•แƒšแƒแƒ“แƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒญแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒก. 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_exists.

แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒฃแƒš แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒจแƒ˜ แƒ”แƒก แƒ›แƒชแƒ˜แƒ แƒ” แƒฎแƒแƒ แƒ•แƒ”แƒ–แƒ˜แƒ. แƒ“แƒ˜แƒแƒฎ, แƒแƒ› แƒžแƒ˜แƒ แƒแƒ‘แƒ˜แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ & แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ˜แƒก && แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ˜แƒ— แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—, แƒ”แƒก แƒแƒ แƒแƒคแƒ”แƒ แƒ–แƒ” แƒ’แƒแƒ•แƒšแƒ”แƒœแƒแƒก แƒแƒ  แƒแƒฎแƒ“แƒ”แƒœแƒก. แƒ—แƒฃแƒ›แƒชแƒ, แƒกแƒฎแƒ•แƒ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ”แƒ‘แƒจแƒ˜, & แƒ“แƒ &&-แƒก แƒจแƒแƒ แƒ˜แƒก แƒแƒฆแƒ แƒ”แƒ•แƒแƒ› แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒกแƒ”แƒ แƒ˜แƒแƒ–แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ˜แƒแƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒฏแƒ•แƒ”แƒœแƒ แƒ›แƒฎแƒแƒ แƒ” แƒแƒ แƒแƒกแƒฌแƒแƒ แƒ˜/แƒแƒ แƒแƒกแƒฌแƒแƒ แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒšแƒ”แƒฅแƒชแƒ˜แƒแƒจแƒ˜, แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ˜แƒแƒ’แƒœแƒแƒกแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ 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);
    }
    ....
  }
  ....
}

แƒแƒฅ แƒฃแƒชแƒœแƒแƒฃแƒ แƒ˜ แƒฉแƒแƒ“แƒ’แƒ›แƒฃแƒšแƒ˜ แƒžแƒ˜แƒ แƒแƒ‘แƒแƒ: installedPackageVersions.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");
}

แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒ™แƒแƒ“แƒ˜แƒก แƒ”แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜ แƒ“แƒแƒฌแƒ”แƒ แƒ, แƒ‘แƒแƒšแƒ แƒแƒ แƒ˜ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜ แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒ แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒแƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ. แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, Chocolatey-แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒแƒ  แƒจแƒ”แƒ”แƒซแƒšแƒแƒ—. แƒแƒžแƒ˜แƒ™แƒ˜ แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ’แƒ–แƒ. แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒแƒ“, แƒจแƒ”แƒ›แƒ˜แƒซแƒšแƒ˜แƒ แƒจแƒ”แƒ›แƒแƒ’แƒ—แƒแƒ•แƒแƒ–แƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒ˜:

commandArguments.contains("-apikey=");
commandArguments.contains("-api-key=");

แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ-แƒฉแƒแƒกแƒ›แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ˜แƒ“แƒ˜ แƒแƒšแƒ‘แƒแƒ—แƒแƒ‘แƒ˜แƒ—, แƒแƒ“แƒ แƒ” แƒ—แƒฃ แƒ’แƒ•แƒ˜แƒแƒœ, แƒ’แƒแƒ›แƒแƒ•แƒšแƒ”แƒœแƒ˜แƒก แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒแƒšแƒ‘แƒแƒ—แƒแƒ‘แƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒžแƒ แƒแƒ”แƒฅแƒขแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒ— แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒแƒฅแƒ•แƒก แƒ“แƒ แƒ›แƒแƒ—แƒ—แƒแƒœ แƒ‘แƒ แƒซแƒแƒšแƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜แƒ.

P.S. แƒ“แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก, แƒ”แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ›แƒ แƒแƒ•แƒแƒšแƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒแƒœแƒ˜ แƒžแƒ˜แƒ แƒแƒ‘แƒ˜แƒก แƒ‘แƒแƒšแƒแƒก แƒฉแƒœแƒ“แƒ”แƒ‘แƒ :). แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒžแƒฃแƒ‘แƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ "แƒ‘แƒแƒšแƒ แƒฎแƒแƒ–แƒ˜แƒก แƒ”แƒคแƒ”แƒฅแƒขแƒ˜".

แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ N8

แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ: V3095 [CWE-476] แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ โ€žinstalledPackageโ€œ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒ null-แƒ—แƒแƒœ แƒ•แƒ”แƒ แƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒ›แƒ“แƒ”. แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜: 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)
  {
    ....
  }
  ....
}

แƒ™แƒšแƒแƒกแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ: แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜ แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ nullแƒ”แƒก แƒ“แƒ˜แƒแƒ’แƒœแƒแƒกแƒขแƒ˜แƒ™แƒ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒแƒจแƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒ“แƒแƒœ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ’แƒ•แƒ”แƒฃแƒ‘แƒœแƒ”แƒ‘แƒ: แƒแƒœ แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒแƒ แƒแƒกแƒ“แƒ แƒแƒก แƒ—แƒแƒœแƒแƒ‘แƒแƒ แƒ˜ null, แƒ แƒแƒช แƒกแƒแƒ”แƒญแƒ•แƒแƒ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ แƒ–แƒ”แƒ“แƒ›แƒ”แƒขแƒ˜แƒ, แƒแƒœ แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ™แƒแƒ“แƒจแƒ˜ แƒกแƒ”แƒ แƒ˜แƒแƒ–แƒฃแƒšแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒแƒ— - แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒ แƒœแƒฃแƒšแƒแƒ•แƒแƒœแƒ˜ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒ—.

แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ

แƒแƒกแƒ” แƒ แƒแƒ›, แƒฉแƒ•แƒ”แƒœ แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒžแƒแƒขแƒแƒ แƒ แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ แƒ’แƒแƒ“แƒแƒ•แƒ“แƒ’แƒ˜แƒ— - แƒแƒฎแƒšแƒ PVS-Studio-แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ™แƒ˜แƒ“แƒ”แƒ• แƒฃแƒคแƒ แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ“แƒ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒแƒฎแƒ“แƒ. แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒ˜แƒœแƒ“แƒ แƒ•แƒ—แƒฅแƒ•แƒ, แƒ แƒแƒ› Chocolatey แƒ™แƒแƒ แƒ’แƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ˜แƒ แƒ™แƒแƒ“แƒจแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒชแƒ˜แƒ แƒ” แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒ—, แƒ แƒแƒช แƒ™แƒ˜แƒ“แƒ”แƒ• แƒฃแƒคแƒ แƒ แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒแƒ“แƒ PVS-Studio-แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜.

แƒ•แƒ”แƒžแƒแƒขแƒ˜แƒŸแƒ”แƒ‘แƒ˜แƒ— แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ แƒ“แƒ แƒกแƒชแƒแƒ“แƒ”แƒ— PVS-Studio. แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ’แƒแƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ’แƒฃแƒœแƒ“แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒกแƒ แƒ“แƒ แƒกแƒแƒœแƒ“แƒแƒแƒ‘แƒแƒก แƒ“แƒ แƒฎแƒ”แƒšแƒก แƒจแƒ”แƒฃแƒฌแƒงแƒแƒ‘แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒแƒก. แƒœแƒฃแƒšแƒแƒ•แƒแƒœแƒ˜ แƒ“แƒฆแƒ˜แƒก แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜.

PS

แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒแƒ›แƒ“แƒ” แƒกแƒขแƒแƒขแƒ˜แƒ Chocolatey-แƒ˜แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒก แƒ’แƒแƒ•แƒฃแƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ— แƒ“แƒ แƒ›แƒแƒ—แƒแƒช แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒก. แƒ™แƒ แƒ˜แƒขแƒ˜แƒ™แƒฃแƒšแƒ˜ แƒ•แƒ”แƒ แƒแƒคแƒ”แƒ แƒ˜ แƒ•แƒ˜แƒžแƒแƒ•แƒ”แƒ—, แƒ—แƒฃแƒ›แƒชแƒ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, โ€žapi-keyโ€œ-แƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ›แƒแƒ”แƒฌแƒแƒœแƒแƒ—.

PVS-Studio แƒแƒฎแƒšแƒ Chocolatey-แƒจแƒ˜แƒ: แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ— Chocolatey-แƒก Azure DevOps-แƒ“แƒแƒœ

แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ— แƒ’แƒแƒฃแƒ–แƒ˜แƒแƒ แƒแƒ— แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ แƒ˜แƒœแƒ’แƒšแƒ˜แƒกแƒฃแƒ แƒ”แƒœแƒแƒ•แƒแƒœ แƒแƒฃแƒ“แƒ˜แƒขแƒแƒ แƒ˜แƒแƒก, แƒ’แƒ—แƒฎแƒแƒ•แƒ—, แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ˜: แƒ•แƒšแƒแƒ“แƒ˜แƒกแƒšแƒแƒ• แƒกแƒขแƒแƒšแƒ˜แƒแƒ แƒแƒ•แƒ˜. PVS-Studio แƒแƒฎแƒšแƒ Chocolatey-แƒจแƒ˜แƒ: Chocolatey-แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ Azure DevOps-แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒจแƒ”แƒ˜แƒซแƒ˜แƒœแƒ”แƒ— แƒกแƒแƒ˜แƒ›แƒ”แƒ“แƒ แƒฐแƒแƒกแƒขแƒ˜แƒœแƒ’แƒ˜ DDoS แƒ“แƒแƒชแƒ•แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒกแƒแƒ˜แƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, VPS VDS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก ๐Ÿ”ฅ แƒจแƒ”แƒ˜แƒซแƒ˜แƒœแƒ”แƒ— แƒกแƒแƒ˜แƒ›แƒ”แƒ“แƒ แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒ˜แƒก แƒฐแƒแƒกแƒขแƒ˜แƒœแƒ’แƒ˜ DDoS แƒ“แƒแƒชแƒ•แƒ˜แƒ—, VPS VDS แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜ | ProHoster