Megosztás a következőn keresztül:


Rövid útmutató: C/C++ kódelemzés

Az alkalmazás minőségét úgy javíthatja, hogy rendszeresen futtat kódelemzést C vagy C++ kódon. A kódelemzés segíthet megtalálni a helyes programozási gyakorlat gyakori problémáit és megsértését. És olyan hibákat talál, amelyeket nehéz felderíteni a tesztelés során. A figyelmeztetések eltérnek a fordítóhibáktól és a figyelmeztetésektől: Olyan kódmintákat keres, amelyekről ismert, hogy problémákat okoznak. Ez azt jelent, hogy a kód érvényes, de továbbra is problémákat okozhat Önnek vagy a kódot használó más személyeknek.

A projekt szabálykészleteinek konfigurálása

  1. A Megoldáskezelőben nyissa meg a projektnév helyi menüjét, majd válassza a Tulajdonságok lehetőséget.

  2. A Konfiguráció és platform listákban is kiválaszthatja a buildkonfigurációt és a célplatformot.

  3. Ha minden alkalommal kódelemzést szeretne futtatni, amikor a projekt a kiválasztott konfigurációval készül, jelölje be a Kódelemzés engedélyezése buildeléskor jelölőnégyzetet. A kódelemzést manuálisan is futtathatja az Elemzés menü megnyitásával, majd a Kódelemzés futtatása aProjectName-en vagy a Kódelemzés futtatása fájlon lehetőséget választva.

  4. Válassza ki a használni kívánt szabálykészletet , vagy hozzon létre egyéni szabálykészletet. Ha LLVM/clang-cl-t használ, olvassa el a Clang-Tidy használata a Visual Studióban Clang-Tidy elemzési beállítások konfigurálásához című témakört.

Standard C/C++ szabálykészletek

A Visual Studio a natív kódhoz az alábbi szabványos szabálykészleteket tartalmazza:

Szabálykészlet Leírás
C++ Alapvető ellenőrzési aritmetikai szabályok Ezek a szabályok a C++ alapvető irányelveiből kényszerítik ki az aritmetikai műveletekhez kapcsolódó ellenőrzéseket.
C++ alapvető ellenőrzési korlátok szabályai Ezek a szabályok a C++ alapvető irányelvek kötött határok profilját érvényesítik.
C++ alapvető ellenőrzési osztály szabályai Ezek a szabályok a C++ alapvető irányelvek osztályaihoz kapcsolódó ellenőrzéseket kényszerítenek ki.
C++ Alapvető Ellenőrzési Párhuzamossági Szabályok Ezek a szabályok az egyidejűséggel kapcsolatos ellenőrzéseket érvényesítik a C++ alapvető irányelvei alapján.
C++ Core Check Const Szabályok Ezek a szabályok a C++ alapvető irányelvekből kényszerítik ki a konstansokkal kapcsolatos ellenőrzéseket.
C++ alapvető ellenőrzési deklarációs szabályok Ezek a szabályok a C++ alapvető irányelvekből származó deklarációkkal kapcsolatos ellenőrzéseket kényszerítik ki.
C++ Core Check Enumerációs Szabályok Ezek a szabályok enumerálással kapcsolatos ellenőrzéseket kényszerítenek ki a C++ alapvető irányelveiből.
C++ Alapvető ellenőrzési kísérleti szabályok Ezek a szabályok kísérleti ellenőrzéseket gyűjtenek. Végül azt várjuk, hogy ezek az ellenőrzések más szabálykészletekbe kerülnek, vagy teljesen el lesznek távolítva.
C++ alapvető ellenőrzőfüggvény-szabályok Ezek a szabályok a C++ alapvető irányelveiből kényszerítik ki a függvényekkel kapcsolatos ellenőrzéseket.
C++ alapszintű ellenőrzés GSL-szabályok Ezek a szabályok az irányelvek támogatási kódtárával kapcsolatos ellenőrzéseket kényszerítik ki a C++ alapvető irányelvekből.
C++ alapvető ellenőrzési élettartam-szabályok Ezek a szabályok a C++ alapvető irányelvek élettartamprofilját kényszerítik ki.
C++ Core Check tulajdonosi mutató szabályai Ezek a szabályok a C++ alapvető irányelvekből származóowner<T> erőforrás-kezelési ellenőrzéseket kényszerítik ki.
C++ Core Check nyers mutató szabályai Ezek a szabályok a C++ alapvető irányelvek nyers mutatóihoz kapcsolódó erőforrás-felügyeleti ellenőrzéseket kényszerítenek ki.
C++ alapvető ellenőrzési szabályok Ezek a szabályok a C++ Alapirányelvek ellenőrzéseinek egy részhalmazát kényszerítik ki. Ez a szabálykészlet az Enum és a Kísérleti szabálykészletek kivételével az összes C++ alapvető ellenőrzési szabályt tartalmazza.
C++ Core – Megosztott mutató szabályainak ellenőrzése Ezek a szabályok a C++ alapvető irányelvekből származó megosztott mutató szemantikával rendelkező típusokkal kapcsolatos erőforrás-felügyeleti ellenőrzéseket kényszerítenek ki.
C++ Alapvető ellenőrzési STL-szabályok Ezek a szabályok a C++ standard kódtárhoz kapcsolódó ellenőrzéseket kényszerítik ki a C++ alapvető irányelvekből.
C++ alapvető ellenőrzési stílusszabályok Ezek a szabályok a C++ alapvető irányelveiből származó kifejezések és utasítások használatával kapcsolatos ellenőrzéseket kényszerítenek ki.
C++ alapvető ellenőrzési típusszabályok Ezek a szabályok a C++ alapvető irányelvek típusprofilját kényszerítik ki.
C++ Core – Egyedi mutatószabályok ellenőrzése Ezek a szabályok a C++ alapvető irányelvekből származó egyedi mutató szemantikával rendelkező típusokkal kapcsolatos erőforrás-felügyeleti ellenőrzéseket kényszerítenek ki.
Egyidejűség-ellenőrzési szabályok Ezek a szabályok win32 egyidejűségi mintaellenőrzéseket kényszerítenek ki a C++-ban.
Egyidejűségi szabályok Egyidejűségi szabályokat ad hozzá a C++ alapvető irányelveiből az egyidejűségi ellenőrzési szabályokhoz.
A Microsoft natív minimális szabályai Ezek a szabályok a natív kód legkritikusabb problémáira összpontosítanak, beleértve a lehetséges biztonsági réseket és az alkalmazás összeomlását. Javasoljuk, hogy vegye fel ezt a szabálykészletet a natív projektekhez létrehozott egyéni szabálykészletekbe.
A Microsoft natív ajánlott szabályai Ezek a szabályok a natív kód legkritikusabb és leggyakoribb problémáira összpontosítanak. Ezek a problémák közé tartoznak a lehetséges biztonsági rések és az alkalmazás összeomlásai. Javasoljuk, hogy vegye fel ezt a szabálykészletet a natív projektekhez létrehozott egyéni szabálykészletekbe. Ez a szabálykészlet a Visual Studio Professional kiadás és újabb verziók használatához készült. Tartalmazza a Microsoft natív minimális szabályainak összes szabályát.

A Visual Studio a felügyelt kódhoz az alábbi szabványos szabálykészleteket tartalmazza:

Szabálykészlet Leírás
A Microsoft alapszintű helyességi szabályai Ezek a szabályok a keretrendszer API-k használatában előforduló logikai hibákra és gyakori hibákra összpontosítanak. Vegye fel ezt a szabálykészletet a minimálisan ajánlott szabályok által jelentett figyelmeztetések listájának bővítésére.
A Microsoft alapszintű tervezési útmutató szabályai Ezek a szabályok az ajánlott eljárások kikényszerítésére összpontosítanak, hogy a kód könnyen érthető és használható legyen. Vegye fel ezt a szabálykészletet, ha a projekt kódtárkódot tartalmaz, vagy ha az ajánlott eljárásokat szeretné kikényszeríteni a könnyen karbantartható kód érdekében.
A Microsoft kiterjesztett helyességi szabályai Ezek a szabályok az alapvető helyességi szabályokra bontva maximalizálják a jelentett logikai és keretrendszerhasználati hibákat. Külön hangsúlyt fektetünk olyan konkrét forgatókönyvekre, mint a COM interop és a mobilalkalmazások. Vegye figyelembe ezt a szabálykészletet, ha a fenti forgatókönyvek egyike vonatkozik a projektre, vagy ha további problémákat keres a projektben.
Microsoft Kiterjesztett Design Útmutató Szabályai Ezek a szabályok az alapvető tervezési útmutatókra terjednek ki a jelentett használhatósági és karbantarthatósági problémák maximalizálása érdekében. Az elnevezési irányelvek nagyobb hangsúlyt kapnak. Vegye figyelembe ezt a szabálykészletet, ha a projekt kódtárkódot tartalmaz, vagy ha a legmagasabb szintű szabványokat szeretné érvényesíteni a karbantartható kód írásához.
Microsoft Globalization Rules Ezek a szabályok olyan problémákra összpontosítanak, amelyek megakadályozzák, hogy az alkalmazásban lévő adatok megfelelően jelenjenek meg különböző nyelveken, területi beállításokban és kultúrákban való használat esetén. Adja meg ezt a szabálykészletet, ha az alkalmazás honosított és/vagy globalizált.
Microsoft által felügyelt minimális szabályok Ezek a szabályok a kód legkritikusabb problémáira összpontosítanak, amelyeknél a kódelemzés a legpontosabb. Ezek a szabályok kis számúak, és csak korlátozott Visual Studio-kiadásokban való futtatásra szolgálnak. Használja a MinimumRecommendedRules.rulesetet más Visual Studio-kiadásokkal.
Microsoft által felügyelt ajánlott szabályok Ezek a szabályok a kód legkritikusabb problémáira összpontosítanak. Ezek a problémák közé tartoznak a lehetséges biztonsági rések, az alkalmazás összeomlásai és egyéb fontos logikai és tervezési hibák. Javasoljuk, hogy ezt a szabálykészletet minden egyéni szabálykészletbe belefoglalja, amit a projektekhez hoz létre.
Microsoft Mixed (C++ /CLR) minimális szabályok Ezek a szabályok a common language runtime-t támogató C++ projektek legkritikusabb problémáira összpontosítanak. Ezek a problémák közé tartoznak a lehetséges biztonsági rések, az alkalmazás összeomlásai és egyéb fontos logikai és tervezési hibák. Javasoljuk, hogy ezt a szabálykészletet minden olyan egyéni szabálykészletbe belefoglalja, amelyet a közös nyelvi futtatókörnyezetet támogató C++ projektekhez hoz létre.
Microsoft Mixed (C++ /CLR) ajánlott szabályok Ezek a szabályok a common language runtime-t támogató C++ projektek leggyakoribb és kritikus problémáira összpontosítanak. Ezek a problémák közé tartoznak a lehetséges biztonsági rések, az alkalmazás összeomlásai és egyéb fontos logikai és tervezési hibák. Ez a szabálykészlet a Visual Studio Professional kiadásban és újabb verziókban való használatra lett kialakítva.
Microsoft biztonsági szabályok Ez a szabálykészlet tartalmazza az összes Microsoft biztonsági szabályt. Adja hozzá ezt a szabálykészletet a jelentett potenciális biztonsági problémák számának maximalizálásához.

Minden szabály belefoglalása:

Szabálykészlet Leírás
A Microsoft minden szabálya Ez a szabálykészlet az összes szabályt tartalmazza. A szabálykészlet futtatása nagyszámú figyelmeztetést eredményezhet. Ezzel a szabálykészlettel átfogó képet kaphat a kód összes problémájáról. Segítségével eldöntheti, hogy a jobban összpontosított szabálykészletek közül melyik a legmegfelelőbb a projektek futtatásához.

Kódelemzés futtatása

A Projekt tulajdonságai párbeszédpanel Kódelemzés lapján konfigurálhatja a kódelemzést úgy, hogy a projekt minden létrehozásakor fusson. A kódelemzést manuálisan is futtathatja.

Kódelemzés futtatása egy megoldáson:

  • A Build menüben válassza a Kódelemzés futtatása a megoldáson lehetőséget.

A kódelemzés futtatása egy projekten:

  1. A Megoldáskezelőben válassza ki a projekt nevét.

  2. A Build menüben válassza a Kódelemzés futtatása projektnéven lehetőséget.

Kódelemzés futtatása fájlon:

  1. A Megoldáskezelőben válassza ki a fájl nevét.

  2. A Build menüben válassza a Kódelemzés futtatása fájlban lehetőséget, vagy nyomja le a Ctrl+Shift+Alt+F7 billentyűkombinációt.

    A projekt vagy megoldás fordítása és a kódelemzés lefut. Az eredmények a Hibalista ablakban jelennek meg.

Kódelemzési figyelmeztetések elemzése és megoldása

A Hibalista ablak felsorolja a talált kódelemzési figyelmeztetéseket. Az eredmények egy táblázatban jelennek meg. Ha egy adott figyelmeztetésről további információ áll rendelkezésre, az első oszlop egy bővítő vezérlőelemet tartalmaz. Válassza ki, hogy kibontsa a kijelzőt a problémával kapcsolatos további információkért. Ha lehetséges, a kódelemzés megjeleníti a figyelmeztetéshez vezető sorszámokat és elemzési logikát.

A figyelmeztetésre vonatkozó részletes információkért, beleértve a probléma lehetséges megoldásait, válassza a Kód oszlopban található figyelmeztető azonosítót a megfelelő online súgócikk megjelenítéséhez.

Kattintson duplán egy figyelmeztetésre, ha a kurzort a kódszerkesztőben a figyelmeztetést okozó kódsorra szeretné áthelyezni. Vagy nyomja le az Enter billentyűt a kijelölt figyelmeztetésen.

Miután megismerte a problémát, a kódban meg tudja oldani. Ezután futtassa újra a kódelemzést, és győződjön meg arról, hogy a figyelmeztetés már nem jelenik meg a hibalistában.

Munkaelemek létrehozása kódelemzési figyelmeztetésekhez

A munkaelem-követési funkcióval naplózhatja a hibákat a Visual Studióban. A funkció használatához csatlakoznia kell az Azure DevOps Server (korábbi nevén Team Foundation Server) egy példányához.

Munkaelem létrehozása egy vagy több C/C++ kódra vonatkozó figyelmeztetéshez

  1. A hibalistában bontsa ki és válassza ki a figyelmeztetéseket

  2. A figyelmeztetések helyi menüjében válassza a Munkaelem létrehozása lehetőséget, majd válassza ki a munkaelem típusát.

  3. A Visual Studio egyetlen munkaelemet hoz létre a kijelölt figyelmeztetésekhez, és megjeleníti a munkaelemet az IDE dokumentumablakában.

  4. Adjon hozzá további információkat, majd válassza a Munkaelem mentése lehetőséget.

Kódelemzési eredmények keresése és szűrése

A figyelmeztető üzenetek hosszú listájában kereshet, és többprojektes megoldásokban szűrheti a figyelmeztetéseket.

  • A figyelmeztetések cím vagy figyelmeztetésazonosító szerinti szűréséhez írja be a kulcsszót a Keresési hibalista mezőbe.

  • A figyelmeztetések súlyosság szerinti szűréséhez: Alapértelmezés szerint a kódelemzési üzenetekhez a figyelmeztetés súlyossága van rendelve. Egy vagy több üzenet súlyosságát hibaként rendelheti hozzá egy egyéni szabálykészlethez. A HibalistaSúlyosság oszlopában válassza a legördülő nyilat, majd a szűrő ikont. A Figyelmeztetés vagy a Hiba lehetőséget választva csak a megfelelő súlyosságú üzenetek jelennek meg. Az összes üzenet megjelenítéséhez válassza az Összes kijelölése lehetőséget .

Lásd még