2017-11-03 4 views
0

Ich habe eine benutzerdefinierte Docker Container, in dem ich Build und Test eines Projekts durchführen. Es ist irgendwie in Travis CI integriert. Jetzt möchte ich die Coverity Scan Analyse von innerhalb der Travis CI auch ausführen, aber der schwierige Teil ist (wenn ich die Coverity Dokumente richtig verstehe), dass ich den Build ausführen muss. Der Build wird jedoch im Container ausgeführt.Coverity Scan beim Erstellen im Docker Container

nun nach dem cov-build --help

Die cov-build oder cov-build-sbox Befehl fängt alle Aufrufe an den Compiler durch das Build-System aufgerufen und fängt den Quellcode das Dateisystem.

Was ich versucht habe:
cov-build --dir=./cov docker exec -ti container_name sh -c "<custom build commands>"

Mit diesem Ansatz jedoch Coverity offenbar nicht die Anrufe an den Compiler verfängt (es ist durchaus verständlich angesichts Docker Philosophie) und emittiert keine Dateien

Was ich nicht wollen (zumindest solange es Hoffnung auf eine bessere Lösung ist):

  • lokal installieren alle notwendigen Sachen zu bauen in den Container nur um Coverity Scan ausführen zu können.

    • Ich glaube, dies würde erhöht die Docker Bildgröße deutlich
    • ich Travis CI Addon für den Coverity-Scan und diese:
    • cov-build aus dem Behälter, da laufen würde Dinge viel komplizieren.


Der Travis CI Teil entweder nur FWIW, versuchte alles, was vor Ort und es funktioniert nicht.

Ich bin begeistert für irgendwelche Vorschläge für das Problem. Vielen Dank.

Antwort

0

Okay, ich habe das Problem gelöst.

  • Ich heruntergeladen und geändert (um nur einige Modifikation meiner Umgebung passen) die script dass Travis Scan herunterzuladen und auszuführen Coverity verwendet.

  • Dann habe ich Coverity auf dem Host-Rechner installiert (in meinem Fall Travis CI-Maschine).

  • Ich habe den Andock-Container ausgeführt und das Verzeichnis, in dem Coverity installiert ist, mit docker run -dit -v <coverity-dir>:<container-dir>:ro ... installiert. Auf diese Weise konnte ich die Größe des Andockers nicht erhöhen.

  • ausgeführt, um den Befehl und cov-build hochgeladen die Analyse ein anderer Teil der direkt vom Behälter Andockfensters script verwenden.

Hoffe das hilft jemand mit ähnlichen Problem kämpfen.

0

Wenn Sie Ihren Build anpassen können, können Sie Ihren "Compiler" auf cov-translate <args> --run-compile <original compiler command line> setzen. Dies ist effektiv, was cov-build unter der Haube tut (minus run-compile, da Ihr Compiler bereits läuft), und sollte in einem Build-Capture führen.

+0

Hallo, vielen Dank für den Kommentar. Ich habe es mit dem Befehl 'cov-translate --dir = ./cov docker exec -ti container sh -c" "' versucht. Aber nach dem Build bin ich mit 'translate_and_emit: [ERROR] gelaufen. Keine Compilereinstellungen für docker gefunden. – CermakM

+0

' cov-translate' muss verwendet werden, als wäre es der Compiler selbst. Es sieht so aus, als ob man versucht es zu benutzen, als wäre es 'cov-build'. Versuchen Sie vielleicht, 'cov-build' in der Befehlszeile in Ihrem Kommentar zu verwenden? – Caleb

+0

Könnten Sie bitte genauer sein? Wenn Sie wörtlich Cov-Build vor dem Befehl hinzufügen und den ganzen 'cov-translate' als Build-Befehl verwenden, funktioniert es auch nicht. Auch hilft die - Hilfe überhaupt nicht. – CermakM

Verwandte Themen