Derxistina cppcheck 2.6, analîzkerek koda statîk ji bo zimanên C++ û C

Guhertoyek nû ya analîzkera koda statîk cppcheck 2.6 hate berdan, ku destûrê dide te ku hûn çînên cûrbecûr xeletiyên di kodê de di zimanên C û C++ de nas bikin, di nav de dema ku hevoksaziya ne-standard, ku ji bo pergalên pêvekirî têne bikar anîn. Berhevokek pêvekan tê peyda kirin ku bi navgîniya cppcheck bi pergalên cûrbecûr pêşkeftin, yekbûn û ceribandina domdar re yekbûyî ye, û di heman demê de taybetmendiyên wekî kontrolkirina lihevhatina kodê bi şêwaza kodê re peyda dike. Ji bo parsekkirina kodê, hûn dikarin parserek xwe an parsekek derveyî ji Clang bikar bînin. Di heman demê de ew skrîpta donate-cpu.py jî vedihewîne da ku çavkaniyên herêmî peyda bike da ku ji bo pakêtên Debian xebata vekolîna kodê ya hevkariyê bike. Koda çavkaniyê ya projeyê di bin lîsansa GPLv3 de tê belav kirin.

Pêşveçûna cppcheck li ser tespîtkirina pirsgirêkên ku bi behremendiya nediyar û karanîna sêwiranên ku ji hêla ewlehiyê ve xeternak in ve girêdayî ye. Armanc jî kêmkirina erênîyên derewîn e. Di nav pirsgirêkên naskirî de: nîşangirên tiştên neheyî, dabeşkirinên bi sifir, hejmarên bêkêmasî, operasyonên guheztina bit-ê yên nerast, veguheztinên nerast, pirsgirêkên dema ku bi bîranînê re dixebitin, nerast bikar anîna STL, veqetandinên nîşangirên betal, karanîna kontrolên piştî gihîştina rastîn. ji bo tamponê, zêdekirina tamponê, bikaranîna guhêrbarên nedestpêkkirî.

Di guhertoya nû de:

  • Kontrolên jêrîn li bingeha analîzkerê hatine zêdekirin:
    • nebûna operatorê vegerê di laşê fonksiyonê de;
    • tomarkirina daneyên hevgirtî, pênasekirina tevgerên nediyar;
    • nirxa ku tê berhev kirin li derveyî nûnertiya nirxê celebê ye;
    • optimîzasyona kopî ji bo vegerandina std::move(local);
    • pel ji bo xwendin û nivîsandinê di herikên cuda de hevdem nayê vekirin;
  • ji bo platformên Unix-ê, ji bo nîşandana peyamên tespîtkirinê bi rengên cihê piştgirî zêde kir;
  • ji bo ValueFlow analîzên sembolîk zêde kirin. Dema ku ferqa di navbera du guhêrbarên nenas de hesab dike deltaya hêsan bikar tîne;
  • qaîdeyên ku ji bo navnîşa nîşanekan "define" têne bikar anîn jî dikarin li hev bikin #include;
  • taga pirtûkxaneyê naha dikare tagek , û li gorî vê yekê fonksiyonên belaş, ku dikare konteynerên wekî std::size, std:: vala, std:: destpêk, std:: end, hwd qebûl bike. dikare ji bo girêdanan yeld an çalakiyê diyar bike;
  • Etîketa pirtûkxaneyê niha dikare ji bo nîşangirên jîr ên ku xwediyê xwedan yekta ne, nîşanek bigire. Naha hişyariyek li ser referansên daleqandî yên li ser van celeb nîşangirên jîr tê dayîn;
  • Pirsgirêkên hilberandina -cppcheck-build-dir-parametreya rast kirin;
  • htmlraport naha dikare agahdariya li ser nivîskar nîşan bide (bi karanîna git blame);
  • hişyariyên berfireh li ser guhêrbarên ku ne domdar in, lê dikarin bibin;
  • Çewtiyên berhevkirî û kêmasiyên analîzatorê hatine rastkirin.

Wekî din, kontrolên ji Misra C 2012, di nav de Guherîna 1 û Guhertina 2, bi tevahî hatine bicîh kirin, ji bilî qaîdeyên 1.1, 1.2 û 17.3. Divê kontrolên 1.1 û 1.2 ji hêla berhevkar ve bêne kirin. Verastkirina 17.3 dikare ji hêla berhevkarek wekî GCC ve were kirin.

Source: opennet.ru

Add a comment