2017-04-27 2 views
2

Dies ist mein Setup:Tintenfisch: MaximumInheritanceDepth auf Android

  • Sonarqube 5.6.6
  • SonarJava Plugin 4.8.0.9441

Code:

public class BaseActivity extends android.app.Activity {} 

public class FooActivity extends BaseActivity {} 

Sonarqube denkt, dass FooActivity verletzt squid:MaximumInheritanceDepth:

Diese Klasse hat 6 Eltern, die mehr als 5 autorisiert sind.

android.app.Activity ist Android Native API. Sollten bei der Berechnung von Verstößen für diese Regel keine Superklassen von Activity ignoriert werden?

Ist das ein Fehler?

Antwort

2

Dies ist kein Fehler, sondern ein Konfigurationsproblem. Die Regel squid:MaximumInheritanceDepth kann konfiguriert werden, um Klassen aus der Vererbungsstruktur herauszufiltern. Standardmäßig wird keine Klasse ignoriert und die Regel zählt einfach die Anzahl der Vererbungsebenen bis zur Object Klasse. Um gefilterte Klassen zu konfigurieren, müssen Sie die Regeleigenschaft filteredClasses einrichten.

Beachten Sie, dass es geplant ist, auf Regel zu aktualisieren, um nicht nur gefilterte Klassen aus der gesamten Vererbungstiefe auszuschließen, sondern die Vererbungsebenen zu erhöhen, sobald eine gefilterte Klasse erreicht wird. Die Reparatur wird durchgeführt, wenn Sie Jira Ticket SONARJAVA-2252 behandeln.

+0

Könnten Sie bitte näher erläutern, wie Sie die Regeleigenschaft filteredClasses speziell im Kontext von Android einrichten? – friederbluemle

+0

Ich habe die Regel für das Qualitätsprofil so konfiguriert, dass filteredClasses folgendermaßen festgelegt wird: android.app. *, Android.view. *, Android.content. *, Android.os. * – Alix

Verwandte Themen