Rhyddhau cppcheck 2.6, dadansoddwr cod statig ar gyfer ieithoedd C++ ac C

Mae fersiwn newydd o'r dadansoddwr cod statig cppcheck 2.6 wedi'i ryddhau, sy'n eich galluogi i nodi gwahanol ddosbarthiadau o wallau cod yn yr ieithoedd C a C ++, gan gynnwys wrth ddefnyddio cystrawen ansafonol, sy'n nodweddiadol ar gyfer systemau mewnosodedig. Darperir casgliad o ategion lle mae cppcheck wedi'i integreiddio â systemau datblygu, integreiddio parhaus a phrofi amrywiol, ac mae hefyd yn darparu nodweddion fel gwirio cydymffurfiaeth cod ag arddull y cod. I ddosrannu cod, gallwch ddefnyddio naill ai'ch parser eich hun neu ddosraniad allanol o Clang. Mae hefyd yn cynnwys y sgript donate-cpu.py i ddarparu adnoddau lleol i wneud gwaith adolygu cod cydweithredol ar gyfer pecynnau Debian. Mae cod ffynhonnell y prosiect yn cael ei ddosbarthu o dan y drwydded GPLv3.

Mae datblygiad cppcheck yn canolbwyntio ar nodi problemau sy'n gysylltiedig ag ymddygiad heb ei ddiffinio a'r defnydd o ddyluniadau sy'n beryglus o safbwynt diogelwch. Y nod hefyd yw lleihau positifau ffug. Ymhlith y problemau a nodwyd: awgrymiadau i wrthrychau nad ydynt yn bodoli, rhaniadau gan sero, gorlif cyfanrif, gweithrediadau shifft did anghywir, trawsnewidiadau anghywir, problemau wrth weithio gyda'r cof, defnydd anghywir o STL, dadgyfeiriadau pwyntydd nwl, y defnydd o wiriadau ar ôl y mynediad gwirioneddol i'r byffer, gor-redeg byffer , defnydd o newidynnau anghychwynnol.

Yn y fersiwn newydd:

  • Mae'r gwiriadau canlynol wedi'u hychwanegu at graidd y dadansoddwr:
    • absenoldeb gweithredwr dychwelyd yn y corff swyddogaeth;
    • yn cofnodi data sy'n gorgyffwrdd, yn pennu ymddygiad heb ei ddiffinio;
    • mae'r gwerth sy'n cael ei gymharu y tu allan i gynrychiolaeth gwerth y math;
    • nid yw optimeiddio copi yn berthnasol i ddychwelyd std::move(local);
    • ni ellir agor y ffeil ar yr un pryd ar gyfer darllen ac ysgrifennu mewn gwahanol ffrydiau (ffrwd);
  • ar gyfer llwyfannau Unix, cefnogaeth ychwanegol ar gyfer arddangos negeseuon diagnostig mewn gwahanol liwiau;
  • dadansoddiad symbolaidd ychwanegol ar gyfer ValueFlow. Yn defnyddio delta syml wrth gyfrifo'r gwahaniaeth rhwng dau newidyn anhysbys;
  • gall y rheolau a ddefnyddir ar gyfer y rhestr o docynnau "diffinio" hefyd gyd-fynd â #include;
  • tag llyfrgell yn gallu cynnwys tag bellach , ac yn unol â hynny y swyddogaethau rhad ac am ddim, a all dderbyn cynwysyddion fel std :: maint, std :: gwag, std :: dechrau, std :: diwedd, ac ati. yn gallu nodi yeld neu weithredu ar gyfer cysylltwyr;
  • tag llyfrgell yn gallu cynnwys tag bellach am awgrymiadau craff sydd â pherchnogaeth unigryw. Mae rhybudd bellach yn cael ei gyhoeddi ynghylch hongian cyfeiriadau at y mathau hyn o awgrymiadau clyfar;
  • problemau sefydlog gyda phrosesu'r paramedr —cppcheck-build-dir;
  • gall htmlreport nawr ddangos gwybodaeth am yr awdur (gan ddefnyddio git blame);
  • rhybuddion estynedig am newidynnau nad ydynt yn gyson, ond a allai fod;
  • Mae gwallau a diffygion cronedig y dadansoddwr wedi'u cywiro.

Yn ogystal, mae’r gwiriadau o Misra C 2012, gan gynnwys Gwelliant 1 a Gwelliant 2, wedi’u gweithredu’n llawn, ac eithrio rheolau 1.1, 1.2 a 17.3. Rhaid i wiriadau 1.1 ac 1.2 gael eu cyflawni gan y casglwr. Gall casglwr fel GCC gyflawni dilysiad 17.3.

Ffynhonnell: opennet.ru

Ychwanegu sylw