Show TOC

Schritt 3: Ergebnisse der Quelltextabdeckung berechnenLocate this document in the navigation structure

Vorgehensweise

Wenn Sie die Rohdaten für die Quelltextabdeckung gesammelt haben, können Sie die Ergebnisse der Quelltextabdeckung berechnen.

Ein Ergebnis berechnen: Coding-Beispiel

Hier ist der Quelltext für das Berechnen der Quelltextabdeckung eines Programms und des entsprechenden Pakets. In jedem Fall gibt der Quelltext die Anweisungsabdeckung zurück.

DATA: measurement TYPE REF TO if_scv_measurement,
      result    TYPE REF TO if_scv_result,
      coverage  TYPE REF TO if_scv_coverage,
      text      TYPE string.

* Get the aggregate statement coverage for package SMOI
result    = measurement->build_package_result( 'SMOI' ).
coverage  = result->get_coverage( if_scv_coverage=>con_statement ).

text = |Package SMOI has a statement coverage of { coverage->get_percentage( ) }%|.
WRITE:/ text.

* Get the statement coverage of a specified program
result    = measurement->build_program_result( 'RSDSSMPL_STATUS' ).
coverage  = result->get_coverage( if_scv_coverage=>con_statement ).

text = |Program RSDSSMPL_STATUS has a statement coverage of { coverage->get_percentage( ) }%|.
WRITE:/ text.

* Extra credit: This method gets all available coverage statistics
DATA: coverage_tab TYPE if_scv_coverage=>tab.
coverage_tab = result->get_coverages( ).

            

Wie der Quelltext zeigt, generieren Sie zunächst ein Ergebnis für eine bestimmte Entität - eine Anwendungskomponente, ein Paket, ein Programm oder eine Auswahl dieser Entitäten. Das Ergebnis wird gemäß der aktuellen Konfiguration berechnet. Die ' BUILD'-Methoden von IF_SCV_MEASUREMENT geben Ihnen Objekte des Typs IF_SCV_RESULT zurück.

Anschließend fordern Sie die Statistik zur Quelltextabdeckung vom Ergebnis an. Die ' IF_SCV_RESULT'-Methoden geben Ihnen Objekte von IF_SCV_COVERAGE zurück. Schließlich verwenden Sie die Methoden von IF_SCV_COVERAGE für den Abruf der tatsächlichen Statistik.

Sie können beliebig viele unterschiedliche Ergebnisse aus einer einzigen Messung berechnen - aber nur solange die Messung nicht finalisiert ist. Die Methode FINALIZE löscht die Rohdaten. Auch das Coverage API löscht die Rohdaten über einen Reorganisationsmechanismus oder im Falle einer Änderung des zu messenden Quelltexts.

Sie müssen eine Messung stoppen- d.h. das Sammeln von Rohdaten beenden - bevor Sie Ergebnisse berechnen können.

Hinweis

Beachten Sie, dass die Methode BUILD_PROGRAM_RESULT einen technischen Programmnamen für Klassen und Funktionsgruppen benötigt:

  • Für Klassen ist dies der Name des Class-Pools, also nicht CL_CCMS_AL_DATA_ENVIRONMENT sondern CL_CCMS_AL_DATA_ENVIRONMENT===CP.

  • Für Funktionsgruppen ist dies der Name des Function-Pools, also nicht SALI sondern SAPLSPALI.

Für die Konvertierung der üblicherweise sichtbaren Namen dieser Objekte und ihrer Bestandteile in die technischen Namen können Sie den Funktionsbaustein RS_TADIR_TO_PROGNAME verwenden. Der Funktionsbaustein verwendet als Eingabe den TADIR-Namen des Repository-Objekts, wie er im Objekteintrag oder Transportauftrag angezeigt wird.

Fahren Sie fort mit dem Navigieren in der Hierarchie der Ergebnisse, wenn das Objekt, für das Sie die Quelltextabdeckung berechnet haben, Unterkomponenten hat.

Hier ist das vollständige Beispielprogramm.

Ein Ergebnis berechnen: Weitere Methoden

Zusätzlich zu IF_SCV_MEASUREMENT->BUILD_PACKAGE_RESULT und ->BUILD_PROGRAM_RESULT (wie oben gezeigt) gibt es zwei andere Methoden für die Berechnung der Quelltextabdeckungsergebnisse:

  • BUILD_COMPONENT_RESULT- Diese Methode berechnet die Quelltextabdeckung für eine Anwendungskomponente wie BC-ABA oder BC-CCM-MON.

    Standardmäßig berechnet die Methode die Quelltextabdeckung für alle Unterkomponenten, Pakete, Programme und Verarbeitungsblöcke (Methoden), die in der Anwendungskomponente enthalten sind.

  • BUILD_SELECTION_RESULT- Mit dieser Methode liefern Sie ein Auswahlobjekt (Parameter I_SELECTION), um Komponenten, Pakete und/oder Programme anzugeben, für die die Quelltextabdeckung zu berechnen ist.

    DATA: measurement TYPE REF TO if_scv_measurement,
          result TYPE REF TO if_scv_result,
          selection TYPE REF TO if_scv_selection.
    
    " Define entities for which results are to be 
    " calculated with if_scv_selection methods
    
    result = measurement->build_selection_result( 
     i_selection = selection ). 
    
                      

Standardmäßig berechnet die Methode Ergebnisse für jede einzelne Unterkomponenten der gewählten Entität. Beispielsweise gibt BUILD_PACKAGE_RESULT standardmäßig nicht nur die aggregierte Quelltextabdeckung des gewählten Pakets zurück sondern auch die Quelltextabdeckungsergebnisse für alle Unterpakete, Programme und Verarbeitungsblöcke in dem Paket.

Sie können die Ergebnisberechnung - einschließlich der rekursiven Ergebnisberechnung - für alle diese Methoden mit einem Konfigurationsobjekt konfigurieren (Parameter I_CONFIGURATION).

DATA: result TYPE REF TO if_scv_result,
      measurement TYPE REF TO if_scv_measurement,
      configuration TYPE REF TO if_scv_result_configuration.

" Specify how the result is to be calculated with the 
" methods of if_scv_result_configuration

result = measurement->build_component_result( 
  i_component_name = 'BC-ABA'
  i_configuration = configuration ).

            

Metrik der Quelltextabdeckung

Sie können drei Messungen der Quelltextabdeckung berechnen. Wie das Quelltextbeispiel zeigt, geben Sie an, welche Statistik Sie mit Konstanten von IF_SCV_COVERAGE anzeigen wollen. Diese Konstanten lauten wie folgt:

  • IF_SCV_COVERAGE=>CON_BRANCH: Die Zweigabdeckung in Kontrollstrukturen.

  • IF_SCV_COVERAGE=>CON_PROCEDURE: Die Prozedurabdeckung oder Verarbeitungsblöcke im ABAP-Code.

  • IF_SCV_COVERAGE=>CON_STATEMENT: Die ABAP-Anweisungsabdeckung.

    Hinweis

    Die oben gezeigten IF_SCV_COVERAGE-Konstanten sind nur in SAP NetWeaver 7.0 EHP2 bis zum Support-Package-Level 5 oder 6 wirksam. In höheren Release-Levels werden die IF_SCV_COVERAGE-Konstanten gelöscht und durch die folgenden Konstanten ersetzt:

    • CE_SCV_COVERAGE_TYPE=>BRANCH

    • CE_SCV_COVERAGE_TYPE=>PROCEDURE

    • CE_SCV_COVERAGE_TYPE=>STATEMENT

    Wenn Sie die alten Konstanten verwendet haben, müssen Sie Ihren Quelltext für einen Upgrade ändern oder Ihren Quelltext zu einem solch höheren Release portieren.

Sie können sowohl rohe numerische Werte als auch berechnete Prozentzahlen der Quelltextabdeckung erhalten. Verfügbare Methoden:

  • IF_SCV_COVERAGE->GET_EXECUTED: Diese Methode gibt die Anzahl der ausgeführten Verzweigungen, Anweisungen oder Prozeduren in der angegebenen Entität oder Gruppe der Entitäten in einem Auswahlobjekt zurück.

  • IF_SCV_COVERAGE->GET_NOT_EXECUTED: Diese Methode gibt die Anzahl der Verzweigungen, Anweisungen oder Prozeduren zurück, die während einer Messung nicht ausgeführt wurden.

  • IF_SCV_COVERAGE->GET_PERCENTAGE: Diese Methode gibt die Prozentzahl der Quelltextabdeckung für Verzweigungen, Anweisungen oder Prozeduren in der angegebenen Entität oder im Auswahlobjekt zurück.

  • IF_SCV_COVERAGE->GET_TOTAL: Diese Methode gibt die Gesamtzahl der Verzweigungen, Anweisungen oder Prozeduren in der angegebenen Entität oder Gruppe der Entitäten zurück.