Ndikukulangizani kuti mumvetsere nkhani yoyamba yokhudzana ndi kuphatikiza ndi Azure DevOps, chifukwa pamenepa mfundo zina zasiyidwa kuti zisabwerezedwe.
Choncho, ngwazi za nkhaniyi:
Zithunzi za PVS Studio ndi chida chowunikira ma code omwe adapangidwa kuti azindikire zolakwika ndi zovuta zomwe zingachitike m'mapulogalamu olembedwa mu C, C++, C# ndi Java. Imayenda pa 64-bit Windows, Linux, ndi macOS machitidwe, ndipo imatha kusanthula kachidindo kopangidwira 32-bit, 64-bit, ndi nsanja za ARM zophatikizidwa. Ngati aka ndi nthawi yanu yoyamba kuyesa kusanthula kachidindo kuti muwone mapulojekiti anu, tikupangira kuti mudziwe bwino nkhani za momwe mungawonere mwachangu machenjezo osangalatsa a PVS-Studio ndikuwunika kuthekera kwa chida ichi.
Azure DevOps - mndandanda wa mautumiki amtambo omwe amagwirizanitsa ntchito zonse zachitukuko. Pulatifomuyi ili ndi zida monga Mapaipi a Azure, Azure Boards, Azure Artifacts, Azure Repos, Azure Test Plans, omwe amakupatsani mwayi wofulumizitsa kupanga mapulogalamu ndikuwongolera mtundu wake.
Chokoley ndi woyang'anira phukusi lotseguka la Windows. Cholinga cha pulojekitiyi ndikupangitsa kuti pulogalamu yonse ikhale yokhazikika kuyambira pakuyika mpaka kukonzanso ndikuchotsa pamakina ogwiritsira ntchito Windows.
Kusiyana kwa opareta & kuchokera kwa woyendetsa && ndiye kuti ngati mbali yakumanzere ya mawuwo ndi zabodza, ndiye mbali yakumanja idzawerengedwabe, yomwe ikutanthauza kuyitana njira zosafunikira system.directory_lipo.
M'chidutswa chomwe chimaganiziridwa, ichi ndi cholakwika chaching'ono. Inde, mkhalidwewu ukhoza kukonzedwa mwakusintha & & wogwiritsa ntchito ndi &&, koma kuchokera kumalingaliro othandiza, izi sizikhudza chilichonse. Komabe, nthawi zina, chisokonezo pakati pa & ndi && chingayambitse mavuto aakulu pamene mbali yolondola ya mawuwo ikuchitidwa ndi zikhalidwe zolakwika / zosayenera. Mwachitsanzo, muzosonkhanitsa zathu zolakwika, kudziwika pogwiritsa ntchito matenda a V3093, pali vuto ili:
if ((k < nct) & (s[k] != 0.0))
Ngakhale index k ndizolakwika, zidzagwiritsidwa ntchito kupeza zinthu zingapo. Zotsatira zake, chosiyana chidzaponyedwa IndexOutOfRangeException.
Pankhaniyi, pali malingaliro odabwitsa kumbuyo kwa opareshoni ya ternary. Tiyeni tiwone mwatsatanetsatane: ngati chikhalidwe chomwe ndidachilemba ndi nambala 1 chakwaniritsidwa, ndiye kuti tipitilira ku chikhalidwe cha 2, chomwe chimakhala nthawi zonse. koona, zomwe zikutanthauza kuti mzere 3 udzaperekedwa. Ngati chikhalidwe 1 chikhala chabodza, ndiye kuti tipita ku mzere wolembedwa ndi nambala 4, momwemonso nthawi zonse. koona, zomwe zikutanthauza kuti mzere wa 5 udzachitidwa. Choncho, zikhalidwe zolembedwa ndi ndemanga 0 sizidzakwaniritsidwa, zomwe sizingakhale ndendende zomwe zimagwira ntchito zomwe wolemba mapulogalamu amayembekezera.
Chenjezo N5
Chenjezo la analyzer: V3123 [CWE-783] Mwina wogwiritsa ntchito '?:' amagwira ntchito mosiyana ndi momwe amayembekezera. Chofunika chake ndi chochepa kusiyana ndi kufunikira kwa ogwira ntchito ena momwe alili. Zosankha.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);
}
}
Zolakwa za Copy-paste zimakhala ndi mwayi waukulu wowonekera posachedwa mu polojekiti iliyonse yokhala ndi code code yochuluka, ndipo chimodzi mwa zida zabwino kwambiri zothanirana nazo ndi static analysis.
PS Ndipo monga nthawi zonse, cholakwika ichi chimakonda kuwonekera kumapeto kwa mizere yambiri :). Onani chosindikizira "Zotsatira za mzere womaliza".
Chenjezo N8
Chenjezo la analyzer: V3095 [CWE-476] Chinthu cha 'installedPackage' chidagwiritsidwa ntchito chisanatsimikizidwe molakwika. Yang'anani mizere: 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)
{
....
}
....
}
Kulakwitsa kwachikale: chinthu choyamba installPackage imagwiritsidwa ntchito ndikufufuzidwa null. Kuzindikira uku kumatiuza za imodzi mwamavuto awiri mu pulogalamuyi: mwina installPackage osafanana konse null, zomwe ndi zokayikitsa, ndiyeno chekeyo ndi yosafunikira, kapena titha kupeza cholakwika chachikulu mu code - kuyesa kupeza zongoyerekeza.
Pomaliza
Chifukwa chake tatenganso gawo lina laling'ono - tsopano kugwiritsa ntchito PVS-Studio kwakhala kosavuta komanso kosavuta. Ndikufunanso kunena kuti Chocolatey ndi woyang'anira phukusi wabwino wokhala ndi zolakwika zochepa mu code, zomwe zingakhale zochepa kwambiri pogwiritsa ntchito PVS-Studio.