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

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

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

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

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

PVS- แƒกแƒขแƒฃแƒ“แƒ˜แƒ แƒแƒ แƒ˜แƒก แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒžแƒแƒขแƒ”แƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก C, 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-แƒ˜แƒก แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒ”แƒšแƒ˜ แƒแƒ’แƒ”แƒœแƒขแƒ˜ 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-แƒ“แƒแƒœ

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

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

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

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

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

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

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

- task: CmdLine@2
  inputs:
    script: 

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒคแƒแƒ˜แƒšแƒ˜ แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ˜แƒ—. แฒแƒฅ PVSNAME ะธ PVSKEY - แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒก แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ–แƒฃแƒกแƒขแƒ”แƒ‘แƒ— แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒจแƒ˜. แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ”แƒœ PVS-Studio-แƒก แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒกแƒ แƒ“แƒ แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒก. แƒ›แƒแƒ—แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“ แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— แƒ›แƒ”แƒœแƒ˜แƒฃ แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜->แƒแƒฎแƒแƒšแƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ˜. แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜ PVSNAME แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ 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 แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก 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] '&' แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ˜ แƒแƒคแƒแƒกแƒ”แƒ‘แƒก แƒแƒ แƒ˜แƒ•แƒ” แƒแƒžแƒ”แƒ แƒแƒœแƒ“แƒก. แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ›แƒแƒ™แƒšแƒ” แƒฉแƒแƒ แƒ—แƒ•แƒ˜แƒก "&&" แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“ แƒ˜แƒงแƒแƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜. แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ.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);
    }
    ....
  }
  ....
}

แƒแƒฅ แƒแƒ แƒ˜แƒก แƒฃแƒชแƒœแƒแƒฃแƒ แƒ˜ แƒฉแƒแƒ“แƒ’แƒ›แƒฃแƒšแƒ˜ แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ: 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=");

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

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

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

แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ: V3095 [CWE-476] 'installedPackage' แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ“แƒ แƒ›แƒแƒœแƒแƒ›, แƒกแƒแƒœแƒแƒ› แƒแƒ  แƒ“แƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒ“แƒ”แƒ‘แƒแƒ“แƒ แƒœแƒฃแƒšแƒ˜แƒ“แƒแƒœ. แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ— แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜: 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

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

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

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

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

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ