Vrystelling van cppcheck 2.6, 'n statiese kode-ontleder vir C++ en C-tale

'n Nuwe weergawe van die statiese kode-ontleder cppcheck 2.6 is vrygestel, wat jou toelaat om verskeie klasse foute in kode in die C- en C++-tale te identifiseer, insluitend wanneer nie-standaardsintaksis gebruik word, tipies vir ingebedde stelsels. 'n Versameling inproppe word verskaf waardeur cppcheck geïntegreer word met verskeie ontwikkelings-, deurlopende integrasie- en toetsstelsels, en bied ook funksies soos om kode-nakoming met die kodestyl na te gaan. Om kode te ontleed, kan jy óf jou eie ontleder of 'n eksterne ontleder van Clang gebruik. Dit sluit ook die donate-cpu.py-skrip in om plaaslike hulpbronne te verskaf om samewerkende kode-oorsigwerk vir Debian-pakkette te doen. Die bronkode van die projek word onder die GPLv3-lisensie versprei.

Die ontwikkeling van cppcheck is gefokus op die identifisering van probleme wat verband hou met ongedefinieerde gedrag en die gebruik van ontwerpe wat gevaarlik is uit 'n veiligheidsoogpunt. Die doel is ook om vals positiewe te minimaliseer. Onder die geïdentifiseerde probleme: wysers na nie-bestaande voorwerpe, delings deur nul, heelgetal oorvloeie, verkeerde bisverskuiwing bedrywighede, verkeerde omskakelings, probleme wanneer daar met geheue gewerk word, verkeerde gebruik van STL, nulwyser-verwysings, die gebruik van tjeks na die werklike toegang na die buffer, buffer oorskry, gebruik van ongeïnitialiseerde veranderlikes.

In die nuwe weergawe:

  • Die volgende kontroles is by die ontlederkern gevoeg:
    • afwesigheid van 'n terugkeeroperateur in die funksieliggaam;
    • teken oorvleuelende data aan, bepaal ongedefinieerde gedrag;
    • die waarde wat vergelyk word, is buite die waardevoorstelling van die tipe;
    • kopie-optimalisering is nie van toepassing op terugkeer std::move(local);
    • die lêer kan nie gelyktydig oopgemaak word vir lees en skryf in verskillende strome (stroom);
  • vir Unix-platforms, bykomende ondersteuning vir die vertoon van diagnostiese boodskappe in verskillende kleure;
  • bygevoeg simboliese analise vir ValueFlow. Gebruik eenvoudige delta wanneer die verskil tussen twee onbekende veranderlikes bereken word;
  • die reëls wat gebruik word vir die lys tokens "definieer" kan ook ooreenstem met #include;
  • biblioteek tag kan nou 'n merker bevat , en dienooreenkomstig die gratis funksies, wat houers soos std::size, std::empty, std::begin, std::end, ens. kan opbrengs of aksie vir verbindings spesifiseer;
  • biblioteek tag kan nou 'n merker bevat vir slim wysers wat unieke eienaarskap het. ’n Waarskuwing word nou uitgereik oor hangende verwysings na hierdie tipe slim wysers;
  • probleme opgelos met die verwerking van die —cppcheck-build-dir parameter;
  • htmlreport kan nou inligting oor die outeur vertoon (met behulp van git blame);
  • uitgebreide waarskuwings oor veranderlikes wat nie konstant is nie, maar kan wees;
  • Die opgehoopte foute en tekortkominge van die ontleder is reggestel.

Daarbenewens is die tjeks van Misra C 2012, insluitend Wysiging 1 en Wysiging 2, ten volle geïmplementeer, behalwe vir reëls 1.1, 1.2 en 17.3. Kontrole 1.1 en 1.2 moet deur die samesteller uitgevoer word. Verifikasie 17.3 kan uitgevoer word deur 'n samesteller soos GCC.

Bron: opennet.ru

Voeg 'n opmerking