Statische Codeanalyse integriert mit Git/Github

Ich habe ein Github-Projekt , das in Travis integriert ist .

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

Um noch weiter zu gehen, möchte ich ein Tool zur statischen Codeanalyse integrieren :

  • Finden Sie doppelten Code
  • Häufige wahrscheinliche Fehler finden (erkennt die Technologie automatisch, mindestens: Android, Java, C#)
  • Finden Sie Paketabhängigkeitszyklen
  • Bonus: Führen Sie anwendbare Standard-Validierungstools aus, z. B. Lint für Android

Anforderungen:

  • Führen Sie Analysen bei jedem Commit oder zumindest regelmäßig durch
  • Frei
  • Vorzugsweise ein kostenloser (oder kostenloser für Open-Source-Projekte) Onlinedienst, der (vor Ort) installiert werden kann, wenn nichts anderes verfügbar ist.
  • Im Idealfall müsste nur eine Git-URL eingegeben werden.

Antworten (4)

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 ein Commit verschoben -> Jenkins baut und stellt bereit -> aktualisiert SonarQube, das Online-Statistiken liefert. Ich stelle mir vor, SonarQube mit Travis einzurichten, wäre nicht zu viel Mühe, da es aus diesem Grund viele Plugins bereitstellt.

UPDATE: Einige Plugins und allgemeine Informationen zum Einstieg in Jenkins und Sonarqube:

  • Hier ist das Plugin für Jenkins+Github
  • Hier ist das Plugin für Jenkins+SonarQube
  • Hier ist ein Link mit weiteren Informationen zur Konfiguration von Jenkins+SonarQube
Um dies einzurichten, müssen also Jenkins und SonarQube, das <a href=" wiki.jenkins-ci.org/display/JENKINS/… Github und Jenkins</a> und dann <a href=" docs.codehaus.org/ installiert werden. display/SONAR/… Jenkins und SonarQube</a>, richtig?
Ja, Jenkins hat dieses Plugin aus diesem Grund. Ich habe mich nicht selbst eingerichtet, aber viele Ressourcen in einer Google-Suche gefunden, um loszulegen. Für github bietet Jenkins (was für eine Überraschung) ein weiteres Plugin an .
@NicolasRaoul Wenn Sie es geschafft haben, es auf Travis CI zum Laufen zu bringen, wäre ich daran interessiert, dies zu hören. Mein Hauptproblem ist, wie ich die Informationen irgendwo veröffentlichen kann.
@skiwi Ich würde auch gerne SonarQube mit Travis CI integrieren und habe noch keine Lösung gefunden. Ich könnte zu einem anderen CI-Tool 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.

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

Willkommen bei den Softwareempfehlungen! Dieser Beitrag enthält nicht genügend Informationen, um als qualitativ hochwertige Antwort angesehen zu werden. Bitte lesen Sie unsere Diskussion darüber, was eine Antwort von hoher Qualität macht , um zu sehen, ob Sie einige dieser Verbesserungen in Ihre Antwort integrieren können, andernfalls wird sie entfernt. Erfüllt es alle oder nur einige der Anforderungen von Nicolas?
Ich habe mir Coverity angesehen, aber mein Hauptproblem ist, dass es nicht auf Pull-Requests ausgelöst werden kann , 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.

Dafür habe ich Gradle- und Maven-Plugins erstellt . Es unterstützt derzeit Findbugs, PMD, Checkstyle, CSSLint und JSHint, aber die Unterstützung für weitere ist geplant. Das Ergebnis kann etwa so aussehen:

Pull Request in GitHub mit statischer Codeanalyse

Nett! Erfüllt es die erste Anforderung „Run analysis at every commit“? Vielen Dank :-)
Ja, für jeden Commit auf Pull-Requests.
Es sind jetzt auch Jenkins- und Maven-Plugins verfügbar =) github.com/tomasbjerre/violation-comments-to-github-lib

Für Sprachen, die von GCC kompiliert wurden (dh C++, C, Ada, Fortran, Go, D, ....), könnten Sie die Verwendung einer spezialisierten MELT- Erweiterung in Betracht ziehen. (Sie müssen wahrscheinlich etwas MELT codieren, abhängig von der Analyse, die Sie durchführen möchten).

Für C könnten Sie auch Frama C oder Clang in Betracht ziehen

Die Hauptanforderung ist "integriert mit Github". Im Idealfall wäre es nur erforderlich, eine Hook-Adresse einzugeben und möglicherweise eine OAuth-Authentifizierung zu akzeptieren.