Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android
Code

Stellen Sie mit statischen Analysewerkzeugen qualitativ hochwertigen Android-Code sicher 

by
Difficulty:BeginnerLength:LongLanguages:

German (Deutsch) translation by Wilhelm Wolf (you can also view the original English article)

In der heutigen tutorial werden wir erfahren, wie die Gewährleistung einer hohen Qualität der Android-code in unsere Projekte mit einigen statischen code-Analyse-tools für Java. Sehen wir uns an, Checkstyle, FindBugs, PMD und Android Studio Lint—alle kostenlos und open source! 

Was Sind Statische Code-Analyse-Tools? 

Dies sind die Werkzeuge zum Parsen und analysieren von Quellcode, ohne diese tatsächlich auszuführen. Das Ziel ist die Ermittlung möglicher Schwachstellen wie bugs und Sicherheitslücken.   Eine beliebte Kostenlose static code analyser wie FindBugs, prüft Ihren code anhand einer Reihe von Regeln, die Ihr code sollte halten—wenn der code nicht diesen Regeln Folgen, ist es ein Zeichen, dass etwas falsch sein kann.  Denke der statischen code-Analyse-tools als zusätzliche compiler, der ausgeführt wird, bevor die endgültige Zusammenstellung in der system-Sprache.

 Viele software-Unternehmen sind, die Projekte zu übergeben, statische code-Analyse-tests, zusätzlich zu code-reviews und unit-Tests in den build-Prozess. Sogar die Betreuer von open-source-Projekte enthalten oft eine oder mehrere statische code-Analyse-Schritte im build-Prozess. So lernen über die statische Analyse ist ein wichtiger Schritt im schreiben von gutem code.   Beachten Sie, dass statische code—Analyse-auch bekannt als "white-box" testen—sollte nicht als Ersatz für unit-Tests von Ihrem source-code.

 In diesem tutorial werden wir lernen, über einige beliebte statische Analyse-tools, die verfügbar sind für Android und Java. Aber zuerst, lassen Sie uns sehen, einige der Vorteile der Verwendung der statischen Analyse.

Vorteile

  •  Hilft beim erkennen von möglichen Fehlern, die selbst-Einheit oder eine manuelle Prüfung verpasst haben könnte.
  •  Definiert Projekt-spezifischen Regeln. Zum Beispiel auf die statische Analyse als Teil des build-Kette hilft Neulingen bekommen Sie bis zu Geschwindigkeit, mit der code-standards Ihres neuen Teams.
  • Hilft verbessern Sie Ihre Kenntnisse der neuen Sprache. 
  •  Durchsucht das gesamte Projekt, einschließlich der Dateien, die Sie möglicherweise nicht jemals gelesen habe.

Setup

Alle code-Analyse-tools, die wir lernen in diesem tutorial sind erhältlich als Gradle-plugins, so können wir erstellen individuelle Gradle-tasks für jeden von Ihnen.   Wir verwenden ein single-Gradle-Datei, schließen Sie Sie alle. Aber vorher erstellen wir einen Ordner, der alle unsere Dateien für die statische code-Analyse.

 Öffnen Sie Android Studio und in der app-Modul (in der Projekt-Ansicht) erstellen Sie einen neuen Ordner und nennen Sie es code_quality_tools. Dieser Ordner enthält die XML-Dateien für die code-Analyse-tools, und es wird auch ein Gradle-Datei, Qualität.gradle, die unsere statische Analyse von Aufgaben.

Android studio project structure screenshot

Schließlich besuchen Sie Ihren build.gradle in der app-Modul-Ordner und fügen Sie dieser Zeile am Ende der Datei: 

.

Checkstyle 

 Bestimmten Regeln, die Sie angeben, in einer XML-Datei zu erzwingen, einen coding-standard für Ihr Projekt, Checkstyle erzwingt diese Regeln durch die Analyse Ihres source-Codes und vergleicht diesen mit bekannten coding-standards oder Konventionen.

 Checkstyle ist ein open-source-tool, das aktiv gepflegt durch die Gemeinde. Das bedeutet, Sie können erstellen Sie Ihre eigenen benutzerdefinierten Kontrollen oder vorhandene ändern, um Ihre Bedürfnisse anzupassen. Zum Beispiel, Checkstyle ausführen können einen Scheck auf den Namen von Konstanten (final, static oder beide) in Ihren Klassen.   Wenn Ihr Namen von Konstanten kleben nicht auf eine Regel in Großbuchstaben mit Worten, getrennt durch einen Unterstrich, das problem wird sein, gekennzeichnet in dem Abschlussbericht.

 Die Integration Von Checkstyle

 Ich werde Ihnen zeigen, wie Sie zu integrieren, Checkstyle in unser Android Studio Projekt und zeigen an einem praktischen Beispiel.

 Zuerst müssen wir unsere coding-Regeln. Im inneren checkstyle.xml wir erstellen einige Checkstyle-Konfiguration Regeln, die ausgeführt werden, die gegen unseren code.

Im obigen code werden wir die Regeln oder Kontrollen, die wir wollen, Checkstyle überprüfen in unserem source-code.   Eine Regel ist AvoidStarImport die, wie der name sagt, überprüft, ob Ihre source-code enthalten eine import-Anweisung wie java.util.*. (Stattdessen sollten Sie explizit angeben, das Paket zu importieren, z.B. java.util.Beobachtbar ist.)

Einige Regeln, die Eigenschaften haben, die wir einstellen können, wie wir es bereits bei ParameterNumber—dies schränkt die Anzahl der Parameter einer Methode oder eines Konstruktors.   Standardmäßig ist die Eigenschaft max ist 7, aber wir haben es bis 6 statt. Werfen Sie einen Blick auf einige der anderen Prüfungen auf der Checkstyle-Webseite.

 Zum ausführen dieses Kontrollkästchen, wir brauchen ein Gradle-task. So besuchen Sie die Qualität.gradle-Datei und erstellen Sie eine Aufgabe namens checkstyle:

 Beachten Sie, dass im code oben, werden wir zuerst auf die Checkstyle Gradle-plugin. Es gab nur eine Beschreibung und fügte hinzu, es zu einem bereits vordefinierten Gradle Gruppe mit dem Namen der überprüfung.

 Die wichtigsten Eigenschaften des Checkstyle Gradle Aufgabe, die uns beschäftigen werden:

  • configFile: die Checkstyle-Konfigurationsdatei zu verwenden. 
  • IgnoreFailures:, ob oder nicht zu erlauben, die bauen weiter, wenn es Warnungen. 
  • sind: das setzen des include-Pattern. 
  •  ausschließen: der Satz von exclude-mustern. In diesem Fall, die wir nicht Scannen generierten Klassen.

 Schließlich können Sie die Gradle-Skript durch den Besuch der Gradle-tool-Fenster auf Android-Studio, öffnen Sie die Gruppe, und klicken auf checkstyle ausführen der Aufgabe.

Gradle toolbar open to run checkstyle task

Ein anderer Weg ist, um die Befehlszeile verwenden: 

 Nachdem die Aufgabe ausgeführt wurde, wird ein Bericht erzeugt, die verfügbar ist in app-Modul > "erstellen" > "Berichte" > " checkstyle. Sie öffnen kann checkstyle.html um den Bericht anzuzeigen.

Android Studio Checkstyle report folder location

 Ein Checkstyle-plugin ist frei verfügbar für Android Studio oder IntelliJ IDEA. Es bietet Echtzeit-scanning von Java-Dateien.

PMD 

 PMD ist ein weiteres open-source-code-Analyse-tool analysiert Ihr source code. Es findet eine gemeinsame Fehler wie unbenutzte Variablen, leere catch-Blöcke, unnötige Objekterzeugung und so weiter.  PMD hat viele Regel-sets können Sie wählen aus. Ein Beispiel für eine Regel, die Teil der Design-Regeln festgelegt ist:

  • SimplifyBooleanExpressions: vermeiden Sie unnötige Vergleiche in booleschen Ausdrücken verwendet, erschweren einfache code. Ein Beispiel: 

 PMD ist konfiguriert mit der pmd.xml Datei. Im inneren, wir werden auch einige Konfigurations-Regeln wie diejenigen für Android, Naming und Design.

Wie wir Checkstyle getan haben, müssen wir auch zum Erstellen einer PMD Gradle-Aufgabe für die Prüfung innerhalb der quality.gradle-Datei ausgeführt werden soll.

PMD ist auch ein Gradle-plugin. 

Die wesentlichen Eigenschaften der Aufgabe, die wir erstellt haben, sind: 

  • ruleSetFiles: Die benutzerdefinierte Regel festgelegt Dateien verwendet werden soll. 
  • Quelle: Die Quelle für diese Aufgabe. 
  • Berichte: die Berichte, Die generiert werden, indem diese Aufgabe. 

Schließlich können Sie die Gradle-Skript durch den Besuch der Gradle-tool-Fenster, öffnen Sie die Gruppe Ordner klicken und dann auf pmd zum ausführen der Aufgabe. Oder Sie können es über die Kommandozeile: 

Ein Bericht wird erzeugt, nachdem die Ausführung der Aufgabe, die verfügbar ist in app-Modul > "erstellen" > "Berichte" > pmd. Es gibt auch eine PMD-plugin für IntelliJ oder Android Studio, die Sie herunterladen und integrieren, wenn Sie wollen. 

FindBugs 

 FindBugs ist ein weiteres kostenloses tool für die statische Analyse die Analysen, die Ihre Klasse auf der Suche nach potenziellen Probleme, die durch die überprüfung Ihrer bytecodes gegen eine Liste bekannter Fehler-Muster. Einige von Ihnen sind:

  •  Klasse definiert, hashCode (), nicht jedoch equals(): Eine Klasse implementiert die hashCode () - Methode aber nicht equals()—daher in beiden Fällen gleich, aber nicht die gleiche hash-codes. Dies fällt unter die bad-practice-Kategorie.
  •  Schlechter Vergleich der int-Wert mit lange Konstante: Der code ist der Vergleich einen int-Wert mit einer langen Konstante ist, die außerhalb der Wertebereich, der dargestellt werden kann als int-Wert. Dieser Vergleich ist bedeutungslos und möglicherweise erbringt ein unerwartetes Ergebnis. Dies fällt unter die Korrektheit der Kategorie. 
  •  TestCase hat keine tests: die Klasse eine JUnit-TestCase, aber noch nicht implementiert alle Methoden testen. Dieses Muster ist auch unter Richtigkeit der Kategorie.

 FindBugs ist ein open-source-Projekt, so können Sie dazu beitragen oder überwachen den Fortschritt der source-code auf GitHub.

 In der findbugs-exclude.xml Datei, wir wollen verhindern, dass FindBugs aus Scannen einige Klassen (mit regulären Ausdrücken), die in unseren Projekten, wie auto-generated-Ressource-Klassen und auto-generierte manifest-Klassen. Auch, wenn Sie Dolch verwenden, wollen wir FindBugs nicht zu die generierten Klassen Dolch zu überprüfen. Wir können auch sagen, FindBugs, einige Regeln zu ignorieren, wenn wir wollen.

 Und schließlich, wir werden einschließen das findbugs Aufgabe in der Qualität.gradle:

 In der ersten Zeile oberhalb, die wir angewendet FindBugs als ein Gradle-Plugin und dann erstellt einen task mit dem Namen findbugs. Die wichtigsten Eigenschaften des findbugs Aufgabe, die wir wirklich besorgt sind:

  • Klassen: die Klassen analysiert werden. 
  • Aufwand: die Analyse Leistungsniveau. Der angegebene Wert sollte man min, Standard oder Max. Beachten Sie, dass höhere Präzision zu erhöhen und mehr Fehler auf Kosten der laufenden Zeit und den Speicherverbrauch zu finden.
  •  reportLevel: die Priorität Schwellenwert für Fehlerberichte. Wenn zu niedrig gesetzt, werden alle Fehler gemeldet werden. Wenn auf "Mittel" eingestellt ist (Standard), mittlere und hohe Priorität bugs gemeldet werden. Wenn "hoch", " nur hohe Priorität bugs gemeldet werden.
  •  excludeFilter: die mit dem Namen des filters angeben bugs ausschließen berichtet wird, die wir bereits erstellt haben.

 Sie können dann die Gradle-Skript durch den Besuch der Gradle-tool-Fenster, öffnen Sie die Gruppe Ordner klicken und dann auf findbugs zum ausführen der Aufgabe. Oder starten Sie es von der Befehlszeile aus:

 Ein Bericht generiert werden, wenn die Aufgabe beendet. Dies wird bei app-Modul > "erstellen" > "Berichte" > findbugs. Die FindBugs-plugin ist eine weitere frei verfügbare plugin für den download und die integration mit entweder IntelliJ IDEA oder Android Studio. 

Android Lint 

 Lint ist ein weiterer code-Analyse-tool, aber dieser kommt mit Android Studio standardmäßig aktiviert. Es prüft Ihre Android-Projekt-Quelldateien für mögliche Fehler und Optimierungen für die Korrektheit, Sicherheit, Leistung, Benutzerfreundlichkeit, Barrierefreiheit und Internationalisierung. 

Konfigurieren von Flusen, die Sie haben enthalten die lintOptions {} - block in Ihrem Modul-level zu bauen.gradle-Datei: 

Der Schlüssel Lint-Optionen, die wir betroffen sind, sind: 

  • abortOnError: ob lint sollte der exit-code des Prozesses, wenn Fehler gefunden werden. 
  • leise: ob aus der Analyse der Fortschritte-reporting. 
  • LintConfig: die Standardkonfigurationsdatei zu verwenden.

 Ihre lint.xml Datei kann Probleme, die Sie wollen, Lint zu ignorieren oder zu ändern, wie im folgenden Beispiel:

 Sie können run Lint manuell aus dem Android Studio, indem Sie auf das Menü "Analyse", die Wahl zum Inspizieren von Code... (der Prüfumfang ist das ganze Projekt), und klicken auf die Schaltfläche OK, um fortzufahren.

Android studio inspect code menu
Android Studio lint inspect whole project code dialog

 Sie können auch Fussel, die durch den Besuch der Gradle-tool-Fenster, öffnen Sie die Gruppe, und klicken auf lint. Schließlich können Sie es über die Kommandozeile.

Auf Windows: 

Auf Linux oder Mac: 

 Ein Bericht generiert werden, wenn die Aufgabe beendet, die verfügbar ist in app-Modul - > build - > Ausgänge > lint-results.html.

Bonus: StrictMode 

StrictMode ist ein Entwickler-tool, das hilft zu verhindern, dass die Entwickler von Ihrem Projekt zu tun, das zufällige flash-I/O-oder Netzwerk-I/O auf der Haupt-thread, da dies kann dazu führen, die app wird träge oder nicht mehr reagiert.  Es hilft auch bei der Verhinderung ANR (App Reagiert Nicht) - Dialoge nicht angezeigt wurden.  Mit StrictMode Probleme korrigiert Ihre app wird stärker und der Benutzer wird ein besseres Erlebnis genießen. StrictMode verwendet zwei Sätze von Strategien zur Durchsetzung der Regeln:

  •  VM-Richtlinien: Schutz gegen schlechte programmierpraktiken wie nicht schließende SQLiteCursor-Objekte oder andere Verschließbare Objekt, das erstellt wurde.
  •  Thread-Richtlinien: sucht für Operationen wie flash I/O und Netzwerk-I/O durchgeführt wird, die auf der Hauptanwendungs-thread statt auf einem hintergrund-thread.

Der obige code kann entweder in Ihrer Anwendung, Tätigkeit, oder einer anderen Anwendung die Komponente onCreate () - Methode. 

Sie können lernen, mehr über StrictMode hier auf Envato, Tuts+. 

 Ein Beispiel-Android-Projekt zu implementieren, alle der oben genannten einschließlich Regel-sets die Werkzeuge für einen typischen Android-Projekt finden Sie in diesem post GitHub-repo.

Fazit 

 In diesem tutorial haben Sie gelernt, dass hochwertiges Android-code mit statischen code-Analyse-tools: was Sie sind, die Vorteile der Verwendung von Ihnen, und wie Checkstyle, FindBugs, Lint, PMD, und StrictMode in Ihrer Anwendung. Gehen Sie voran und geben diese Werkzeuge ausprobieren—vielleicht entdecken Sie einige Probleme in Ihrem code, den Sie nie erwartet. 

In der Zwischenzeit, überprüfen Sie heraus einige unserer anderen Kurse und tutorials über Android-app-Entwicklung! 

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.