cppcheck std.cfg ikke fundet fejl, når std.cfg fil er tilgængelig

Hvis jeg starter min cppcheck jeg får følgende fejl:
cppcheck ListLib.c
(information) kunne ikke indlæse std.cfg. Din Cppcheck installationen er brudt, kan du re-installere. Den Cppcheck binære blev udarbejdet med CFGDIR indstillet til “/usr/bin/cfg” og vil derfor søge efter std.cfg i stien.

System : opensuse13 ,cppcheck version: cppcheck-1.64 ,
oversat med : gøre SRCDIR=opbygge CFGDIR=/usr/bin/cfg HAVE_RULES=ja

at kontrollere, hvis filen er der:
ls /usr/bin/cfg : gtk.cfg posix.cfg qt.cfg sdl.cfg std.cfg windows.cfg

whereis cfg:
cfg: /usr/bin/cfg

whereis std.cfg:
std: /usr/bin/cfg/std.cfg

kat std: /usr/bin/cfg/std.cfg giver mig output fra denne fil

Stacktrace:

lstat("/home/.../ListLib.c", {st_mode=S_IFREG|0644, st_size=4568, ...}) = 0
stat("/home/.../ListLib.c", {st_mode=S_IFREG|0644, st_size=4568, ...}) = 0
open("std.cfg", O_RDONLY)               = -1 ENOENT (No such file or directory)
open("cfg/std.cfg", O_RDONLY)           = -1 ENOENT (No such file or directory)
write(2, "(information) Failed to load std"..., 213) = 213
write(2, "\n", 1)                       = 1
exit_group(1)                           = ?
+++ exited with 1 +++

skifte til /usr/bin mappen værker:
Kontrol /…/ListLib.c

cppcheck –check-config ListLib.c:
giver den samme fejl, og virker fint, hvis jeg gør det i /usr/bin/

Okey for folk lander på denne side, at jeg fik det at arbejde med cfg filer i min homefolder:

gøre SRCDIR=opbygge CFGDIR=~/cppcheck_cfg og så selvfølgelig
sudo make install

Den cppcheck --check-config mulighed kan jeg har nogle nyttige output.
cppcheck –check-config ListLib.c: giver den samme fejl, og virker fint, hvis jeg gør det i /usr/bin/
Det virkede for mig: cd /home/kubuntu/Projekter/cppcheck && gøre SRCDIR=opbygge CFGDIR=/home/kubuntu/Projekter/cppcheck/cfg/std.cfg -j3 && sudo make install -j3 Det ser ud som CFGDIR skal faktisk være en fil IKKE en mappe!
CFGDIR skal være en Dir bemærk, hvor det hedder CFDIR og ikke CFG fil , fra muanual:.cfg filer er nødvendige af cppcheck. Enten at sætte dem i en undermappe cfg, hvor den binære fil er. Ellers kompilere cppcheck med CFGDIR at angive en vilkårlig sti, hvor du lægger den .cfg filer. Jeg har endda flere cgf filer kan ikke se dette fungerer korrekt, synes dårligt praksis
Den cppcheck README giver den foretrukne gøre linje: github.com/danmar/cppcheck

OriginalForfatteren zilleplus | 2014-03-18

5 svar

  1. 20

    Jeg står over for det samme problem også.

    Løsning:

    $ make SRCDIR=build CFGDIR=/usr/share/cppcheck/
    
    $ sudo make install CFGDIR=/usr/share/cppcheck/
    

    Fik forslag fra cppcheck fællesskabets medlemmer, og kom til at vide, at ‘make install’ kræver også CFGDIR mulighed for at være bestået.

    Jeg gravede i Makefile og fandt ud af den grund: make install bygger også koden inde i lib mappe, som ikke bliver kompileret, ved blot at kalde make.

    OriginalForfatteren prabhugs

  2. 4
    make SRCDIR=build CFGDIR=/usr/bin/cfg HAVE_RULES=yes
    
    make install CFGDIR=/usr/bin/cfg
    
    Jeg tror, det ville gavne den pågældende og fremtidige brugere, hvis du skulle forklare, hvad denne gør, trin for trin.
    Eneste anderledes her er HAVE_RULES=ja, jeg har lige set, at den manuelle nu recomments have_rules=ja. Bare “make install” er også fint, her er ingen grund til at gentage, CFGDIR=/usr/bin/cfg.

    OriginalForfatteren user3990375

  3. 2

    Jeg havde samme problem for nogle dage siden, og løses ved at ændre den måde, jeg køre makefile på cppcheck.

    Jeg bruger Linux Red Hat version og cppcheck version er 1,65.

    make SRCDIR=build CFGDIR=/home/###/####/cppcheck-1.65/cfg/&& make install
    

    Jeg ikke rigtig kan grave i detaljer, men makefile af cppcheck ser ud som de er at rydde op obj og bygge cppcheck herunder cfg placering ved først at gøre kommando

    make SRCDIR=build CFGDIR=/home/###/####/cppcheck-1.65/cfg/&&
    

    og anden make-kommandoen ville distribuere cppcheck i /usr/bin/placering.

    make install
    

    Nu er alt du skal gøre er at oprette bash.

    Se besvarelsen af @prabhugs: make install kommando kræver også CFGDIR at blive set.

    OriginalForfatteren j. cho

  4. 1

    Ind tilladelser, med file /usr/bin/cfg/std.cfg, for at sikre dig at du har tilladelser til at få adgang til konfig-filen, som du mener det bør være at forsøge at læse.

    Så, at undlade at køre cppcheck under strace at finde det system, opkald, der ikke: strace -o /tmp/strace.out cppcheck ListLib.c.

    tilladelser er 777, jeg prøvede stacktrace og fik følgende fejl: åben(“std.cfg”, O_RDONLY) = -1 ENOENT (Ingen sådan fil eller mappe) åben(“cfg/std.cfg”, O_RDONLY) = -1 ENOENT (Ingen sådan fil eller mappe) skrive(2, “(information) kunne ikke indlæse std”…, 213) = 213 skrive(2, “\n”, 1) = 1 exit_group(1) = ? hvis jeg gør whereis std.cfg jeg får std: /usr/bin/cfg/std.cfg
    Den strace effekt antyder, er det kun en kontrol af den aktuelle mappe og en “cfg” undermappe til “.cfg filer. Prøv cding til /usr/bin, før du kører cppcheck for at se, om der tilfredsstiller det. (Min version af cppcheck (1.60.1) har ikke CFGDIR bygge-time konfiguration)
    hvis jeg cd ‘ en til /usr/bin det virker: Kontrol /…/ListLib.c…
    Dette tyder for mig på, at CFGDIR indstilling ikke fungerer som forventet. Måske forsøge at genopbygge cppcheck i en ren bibliotek, for at sikre CFGDIR indstilling er som du forventer. Derefter køre cppcheck bygget der.
    Tak for din hjælp, sendt den løsning til andre

    OriginalForfatteren R Perrin

  5. 0

    Jeg løb ind i samme problem, der kører cppCheck GUI på et bibliotek efter udarbejdelsen af det på en Mac med Qt Skaberen og kører GUI version. Jeg løste problemet ved at kopiere “std.cfg” ind i program-mappen: Contents/MacOS
    Du er nødt til at højre-klikke på den cppcheck-gui-program til at få adgang til indholdet. Dens synes at være ok at sætte det ved siden af den cppcheck-gui-fil i samme mappe som det skal være, hvor den tjekker først. “Std.cfg” filen kan findes i cfg mappe.

    OriginalForfatteren Robert Chapman

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *