Frage:
In Git / Github integrierte statische Code-Analyse
Nicolas Raoul
2014-04-02 10:51:23 UTC
view on stackexchange narkive permalink

Ich habe ein Github-Projekt in Travis integriert.

Jedes Mal, wenn ein Commit gepusht wird, versucht Travis zu kompilieren und warnt, wenn es nicht kompiliert wird.

Um noch weiter zu gehen, möchte ich ein Tool für die statische Code-Analyse integrieren:

  • Doppelten Code suchen
  • Gemeinsame finden Wahrscheinliche Fehler (erkennt die Technologie automatisch, zumindest: Android, Java, C #)
  • Paketabhängigkeitszyklen suchen
  • Bonus: Führen Sie geeignete Standardvalidierungstools aus, z. B. Lint für Android

Anforderungen:

  • Führen Sie die Analyse bei jedem Commit oder zumindest regelmäßig durch.
  • Kostenlos
  • Vorzugsweise ein kostenloser (oder für Open Source-Projekte kostenloser) Onlinedienst, der installiert werden kann (vor Ort), wenn nichts anderes verfügbar ist.
  • Im Idealfall muss nur eine Git-URL eingegeben werden.
Vier antworten:
dimzak
2014-04-03 12:37:23 UTC
view on stackexchange narkive permalink

Ich denke, SonarQube entspricht Ihren Anforderungen. Wir verwenden es genau so, wie Sie es möchten, aber mit Jenkins und für Java-basierten Code (unterstützt jedoch mehrere Sprachen, kein Grund zur Sorge).
ZB hat ein Commit gepusht -> Jenkins erstellt und implementiert -> aktualisiert SonarQube, das Online-Statistiken liefert. Ich kann mir vorstellen, dass das Einstellen von SonarQube mit Travis nicht allzu schwierig wäre, da es aus diesem Grund viele Plugins enthält.

UPDATE: Einige Plugins und allgemeine Informationen für den Einstieg in Jenkins und Sonarqube:

  • Hier ist das Plugin für Jenkins + Github
  • Hier ist das Plugin für Jenkins + SonarQube
  • Hier finden Sie einen Link mit weiteren Informationen zur Konfiguration von Jenkins + SonarQube
  • -1
    Ja, Jenkins hat dieses [Plugin] (https://wiki.jenkins-ci.org/display/JENKINS/Sonar+plugin) aus diesem Grund. Ich habe mich noch nicht eingelebt, aber in einer Google-Suche viele [Ressourcen] gefunden (http://docs.codehaus.org/display/SONAR/Configuring+SonarQube+Jenkins+Plugin), um loszulegen. Für Github bietet Jenkins (was für eine Überraschung) ein weiteres [Plugin] an (https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin).
    @NicolasRaoul Wenn Sie es geschafft hätten, Travis CI zum Laufen zu bringen, wäre ich interessiert, das zu hören. Mein Hauptproblem ist, wie ich die Informationen irgendwo veröffentlichen kann.
    @skiwi Auch ich möchte SonarQube in Travis CI integrieren und habe immer noch keine Lösung gefunden. Es wäre in Ordnung, zu einem anderen CI-Tool zu wechseln, aber ich möchte nichts hosten oder bezahlen, also war Travis nett. Hast du am Ende etwas gefunden?
    @Joffrey Nein, soweit ich mich erinnere, habe ich mich nicht weiter mit dieser Angelegenheit befasst.
    Basile Starynkevitch
    2014-04-04 10:21:58 UTC
    view on stackexchange narkive permalink

    Für Sprachen, die von GCC kompiliert wurden (d. h. C ++, C, Ada, Fortran, Go, D, ....), können Sie eine spezielle MELT -Erweiterung verwenden. (Abhängig von der Analyse, die Sie durchführen möchten, müssen Sie wahrscheinlich etwas MELT codieren.)

    Für C können Sie auch Frama C oder Clang

    in Betracht ziehen
    Die Hauptanforderung ist "in Github integriert". Im Idealfall muss lediglich eine Hook-Adresse eingegeben und möglicherweise eine OAuth-Authentifizierung akzeptiert werden.
    Andrea Spadaccini
    2014-06-20 04:24:37 UTC
    view on stackexchange narkive permalink

    Coverity sieht so aus, wie Sie es möchten. Ich fange jetzt an, es für eines meiner Projekte zu versuchen, aber es scheint vielversprechend.

    Willkommen zu den Softwareempfehlungen! Dieser Beitrag enthält nicht genügend Informationen, um als qualitativ hochwertige Antwort zu gelten. Bitte [lesen Sie unsere Diskussion darüber, was eine Antwort von hoher Qualität macht] (http://meta.softwarerecs.stackexchange.com/q/356/107), um zu sehen, ob Sie einige dieser Verbesserungen in Ihre Antwort integrieren können, andernfalls wird dies der Fall sein entfernt. Wie entspricht es allen oder nur einigen Anforderungen von Nicolas?
    Ich habe mir Coverity angesehen, aber mein Hauptproblem ist, dass es [nicht bei Pull-Anfragen ausgelöst werden kann] (http://stackoverflow.com/questions/26759088/run-coverity-scan-for-every-travis-pull-request- bauen), was für mich ein No-Go ist. Außerdem habe ich keine Möglichkeit gefunden, die Regeln für den Scan anzupassen, aber vielleicht habe ich einfach nicht genug gegraben.
    Tomas Bjerre
    2016-03-05 03:47:38 UTC
    view on stackexchange narkive permalink

    Ich habe dafür Gradle- und Maven-Plugins erstellt. Derzeit werden Findbugs, PMD, Checkstyle, CSSLint und JSHint unterstützt, weitere sind jedoch geplant. Das Ergebnis könnte ungefähr so ​​aussehen:

    Pull request in GitHub with static code analysis

    Nett! Erfüllt es die erste Anforderung "Analyse bei jedem Commit ausführen"? Vielen Dank :-)
    Ja, für jedes Commit für Pull-Anforderungen.
    Es gibt jetzt auch Jenkins- und Maven-Plugins =) https://github.com/tomasbjerre/violation-comments-to-github-lib


    Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
    Loading...