[JENKINS-50077] Integration Test for RegexpFilter

        Manuel Hampp added a comment -

        Hallo,

        ich verwende für die Tests eine modifizierte checkstyle.xml Datei. In dieser versuche ich gerade ein anderes Package (für die inlcude/exclude Package Ausdrücke) hineinzubekommen. Leider funktioniert dies gar nicht wie gedacht.

        Sollte es nicht reichen, den Pfad zur Source-Datei zu verändern?

        Folgendes Beispiel:

        <?xml version="1.0" encoding="UTF-8"?>
        <checkstyle version="4.1">
        <file name="X:\Build\Results\jobs\Maven\workspace\tasks\src\main\java\hudson\plugins\tasks\util\model\package.html">
        <error line="0" severity="error" message="Fehlende Package-Dokumentation." source="com.puppycrawl.tools.checkstyle.checks.javadoc.PackageHtmlCheck"/>
        </file>
        <file name="X:\Build\Results\jobs\Maven\workspace\tasks\src\main\java\hudson\plugins\tasks\test\CsharpNamespaceDetector.java">
        </file>
        <file name="X:\Build\Results\jobs\Maven\workspace\tasks\src\main\java\hudson\plugins\tasks\parser\CsharpNamespaceDetector.java">
        <error line="17" column="5" severity="error" message="Die Methode &apos;accepts&apos; ist nicht für Vererbung entworfen - muss abstract, final oder leer sein." source="com.puppycrawl.tools.checkstyle.checks.design.DesignForExtensionCheck"/>
        <error line="42" severity="error" message="Zeile länger als 80 Zeichen" source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
        <error line="22" column="5" severity="error" message="Die Methode &apos;detectPackageName&apos; ist nicht fr Vererbung entworfen - muss abstract, final oder leer sein." source="com.puppycrawl.tools.checkstyle.checks.design.DesignForExtensionCheck"/>
        <error line="29" severity="error" message="Zeile länger als 80 Zeichen" source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/>
        <error line="30" column="21" severity="error" message="&apos;}&apos; sollte in derselben Zeile stehen." source="com.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyCheck"/>
        <error line="37" column="9" severity="error" message="&apos;}&apos; sollte in derselben Zeile stehen." source="com.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyCheck"/>
        </file>
        <file name="X:\Build\Results\jobs\Maven\workspace\tasks\src\main\java\hudson\plugins\tasks\test\CategoryBuildResultGraph.java">
        </file>
        <file name="X:\Build\Results\jobs\Maven\workspace\tasks\src\main\java\hudson\plugins\tasks\test\CategoryBuildResultGraph.java">
        <error line="99" column="9" severity="error" message="&apos;}&apos; sollte in derselben Zeile stehen." source="com.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyCheck"/>
        </file>
        </checkstyle>
        

        Bei der IncludePackage Regex ".parser." sollten meines Erachtens nun nur die Issues aus dem CsharpNamespaceDetector.java File übrig bleiben. Das Result ist allerdings leer. Der gleiche Ausdruck als ExcludePackage gibt mir sämtliche Issues zurück.

        Viele Grüße

        Manuel Hampp

         

         

        Manuel Hampp added a comment - Hallo, ich verwende für die Tests eine modifizierte checkstyle.xml Datei. In dieser versuche ich gerade ein anderes Package (für die inlcude/exclude Package Ausdrücke) hineinzubekommen. Leider funktioniert dies gar nicht wie gedacht. Sollte es nicht reichen, den Pfad zur Source-Datei zu verändern? Folgendes Beispiel: <?xml version="1.0" encoding="UTF-8"?> <checkstyle version="4.1"> <file name="X:\Build\Results\jobs\Maven\workspace\tasks\src\main\java\hudson\plugins\tasks\util\model\package.html"> <error line="0" severity="error" message="Fehlende Package-Dokumentation." source="com.puppycrawl.tools.checkstyle.checks.javadoc.PackageHtmlCheck"/> </file> <file name="X:\Build\Results\jobs\Maven\workspace\tasks\src\main\java\hudson\plugins\tasks\test\CsharpNamespaceDetector.java"> </file> <file name="X:\Build\Results\jobs\Maven\workspace\tasks\src\main\java\hudson\plugins\tasks\parser\CsharpNamespaceDetector.java"> <error line="17" column="5" severity="error" message="Die Methode &apos;accepts&apos; ist nicht für Vererbung entworfen - muss abstract, final oder leer sein." source="com.puppycrawl.tools.checkstyle.checks.design.DesignForExtensionCheck"/> <error line="42" severity="error" message="Zeile länger als 80 Zeichen" source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/> <error line="22" column="5" severity="error" message="Die Methode &apos;detectPackageName&apos; ist nicht fr Vererbung entworfen - muss abstract, final oder leer sein." source="com.puppycrawl.tools.checkstyle.checks.design.DesignForExtensionCheck"/> <error line="29" severity="error" message="Zeile länger als 80 Zeichen" source="com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck"/> <error line="30" column="21" severity="error" message="&apos;}&apos; sollte in derselben Zeile stehen." source="com.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyCheck"/> <error line="37" column="9" severity="error" message="&apos;}&apos; sollte in derselben Zeile stehen." source="com.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyCheck"/> </file> <file name="X:\Build\Results\jobs\Maven\workspace\tasks\src\main\java\hudson\plugins\tasks\test\CategoryBuildResultGraph.java"> </file> <file name="X:\Build\Results\jobs\Maven\workspace\tasks\src\main\java\hudson\plugins\tasks\test\CategoryBuildResultGraph.java"> <error line="99" column="9" severity="error" message="&apos;}&apos; sollte in derselben Zeile stehen." source="com.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyCheck"/> </file> </checkstyle> Bei der IncludePackage Regex ". parser. " sollten meines Erachtens nun nur die Issues aus dem CsharpNamespaceDetector.java File übrig bleiben. Das Result ist allerdings leer. Der gleiche Ausdruck als ExcludePackage gibt mir sämtliche Issues zurück. Viele Grüße Manuel Hampp    

        Ulli Hafner added a comment -

        Packages sind wahrscheinlich kein guter Versuch mit ChecksStyle. Denn CheckStyle vergibt keine Packages, diese werden nachträglich aus den Sourcen extrahiert und zugewiesen. Dieser Schritt funktioniert aber nicht im Test, da hier ja gar keine Sourcen vorhanden sind. Versuchen Sie das mal mit PMD, dort sind die Packages im XML hinterlegt.

        Außerdem wird der Regexp ".parser." nur auf ein Paket mit 8 Buchstaben matchen, da ist wohl besser .\.parser\... (Aber das lässt sich am besten am Unit Tests überprüfen).

        Ulli Hafner added a comment - Packages sind wahrscheinlich kein guter Versuch mit ChecksStyle. Denn CheckStyle vergibt keine Packages, diese werden nachträglich aus den Sourcen extrahiert und zugewiesen. Dieser Schritt funktioniert aber nicht im Test, da hier ja gar keine Sourcen vorhanden sind. Versuchen Sie das mal mit PMD, dort sind die Packages im XML hinterlegt. Außerdem wird der Regexp ".parser." nur auf ein Paket mit 8 Buchstaben matchen, da ist wohl besser . \.parser\.. . (Aber das lässt sich am besten am Unit Tests überprüfen).

        Manuel Hampp added a comment -

        Hallo Herr Hafner,

        ich bekomme leider noch kein Beispiel für den Module Include/Exclude zusammen. Habe versucht die checkstyle- und pmd-xml entsprechend um die Tags zu erweitert, jedoch ohne Erfolg. Zudem habe ich die anderen Result Files durchsucht und herausgefunden, dass eigentlich nur in dem IdeaInspectionExample bisher solche Tags verwendet werden. Aber auch dort reicht es scheinbar nicht aus das xml anzupassen:

         

        <?xml version="1.0" encoding="UTF-8"?>
        <problems>
            <problem>
                <file>file//$PROJECT_DIR$/src/main/java/org/lopashev/Test.java</file>
                <line>42</line>
                <module>tests</module>
                <package>org.lopashev</package>
                <entry_point TYPE="method" FQNAME="org.lopashev.Test java.lang.Object getInspection(java.lang.String intentionallyUnusedString)" />
                <problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused method parameters</problem_class>
                <hints>
                    <hint value="response" />
                </hints>
                <description>Parameter &lt;code&gt;intentionallyUnusedString&lt;/code&gt; is not used  in either this method or any of its derived methods</description>
            </problem>
            <problem>
                <file>file//$PROJECT_DIR$/src/main/java/org/lopashev/Test.java</file>
                <line>44</line>
                <module>module</module>
                <package>eins.zwei</package>
                <entry_point TYPE="method" FQNAME="eins.zwei.Test java.lang.Object getInspection(java.lang.String intentionallyUnusedString)" />
                <problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused method parameters</problem_class>
                <hints>
                    <hint value="response" />
                </hints>
                <description>Parameter &lt;code&gt;intentionallyUnusedString&lt;/code&gt; is not used  in either this method or any of its derived methods</description>
            </problem>
        </problems>
        

        Hätten Sie ein entsprechend Beispiel für mich?

        Viele Grüße

        Manuel Hampp

         

         

        Manuel Hampp added a comment - Hallo Herr Hafner, ich bekomme leider noch kein Beispiel für den Module Include/Exclude zusammen. Habe versucht die checkstyle- und pmd-xml entsprechend um die Tags zu erweitert, jedoch ohne Erfolg. Zudem habe ich die anderen Result Files durchsucht und herausgefunden, dass eigentlich nur in dem IdeaInspectionExample bisher solche Tags verwendet werden. Aber auch dort reicht es scheinbar nicht aus das xml anzupassen:   <?xml version="1.0" encoding="UTF-8"?> <problems> <problem> <file>file//$PROJECT_DIR$/src/main/java/org/lopashev/Test.java</file> <line>42</line> <module>tests</module> <package>org.lopashev</package> <entry_point TYPE="method" FQNAME="org.lopashev.Test java.lang.Object getInspection(java.lang.String intentionallyUnusedString)" /> <problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused method parameters</problem_class> <hints> <hint value="response" /> </hints> <description>Parameter &lt;code&gt;intentionallyUnusedString&lt;/code&gt; is not used in either this method or any of its derived methods</description> </problem> <problem> <file>file//$PROJECT_DIR$/src/main/java/org/lopashev/Test.java</file> <line>44</line> <module>module</module> <package>eins.zwei</package> <entry_point TYPE="method" FQNAME="eins.zwei.Test java.lang.Object getInspection(java.lang.String intentionallyUnusedString)" /> <problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused method parameters</problem_class> <hints> <hint value="response" /> </hints> <description>Parameter &lt;code&gt;intentionallyUnusedString&lt;/code&gt; is not used in either this method or any of its derived methods</description> </problem> </problems> Hätten Sie ein entsprechend Beispiel für mich? Viele Grüße Manuel Hampp    

        Ulli Hafner added a comment - - edited

        Stimmt, die Module werden erst hinterher zugewiesen, die Information steht in keinem Report. Dazu werden alle verfügbaren pom.xml Files ausgelesen und mit den Dateinamen in den Warnungen verglichen. Jedes Issue bekommt dann das Modul zugewiesen, das im Dateinamen den Präfix mit dem des passenden pom.xml zusammenpasst.

        Damit dieser Test gelingt, müssen Sie daher den Workspace etwas anders gestalten:

        WORKSPACE:
           pmd.xml         (Warnings wie bisher, eine Warning verweist auf ein File im Ordner "module-one", eine andere auf ein File im Ordner module-two. Die Sourcefiles selbst müssen nicht existieren)
           module-one    (Ordner)
                pom.xml    (Beliebiges pom.xml mit dem Tag <name>Module One</name>) 
           module-two.   (Ordner)
                pom.xml    (Beliebiges pom.xml mit dem Tag <name>Module Two</name>) 
        

        Sie können auch mal bei frankchrisg nachfragen, der bearbeitet den Moduldetector, der das macht. Vielleicht kann er mit einem Beispiel aushelfen. (Oder wir stellen das zurück, bis der Moduldetector Test fertig ist?)

        Ulli Hafner added a comment - - edited Stimmt, die Module werden erst hinterher zugewiesen, die Information steht in keinem Report. Dazu werden alle verfügbaren pom.xml Files ausgelesen und mit den Dateinamen in den Warnungen verglichen. Jedes Issue bekommt dann das Modul zugewiesen, das im Dateinamen den Präfix mit dem des passenden pom.xml zusammenpasst. Damit dieser Test gelingt, müssen Sie daher den Workspace etwas anders gestalten: WORKSPACE: pmd.xml (Warnings wie bisher, eine Warning verweist auf ein File im Ordner "module-one", eine andere auf ein File im Ordner module-two. Die Sourcefiles selbst müssen nicht existieren) module-one (Ordner) pom.xml (Beliebiges pom.xml mit dem Tag <name>Module One</name>) module-two. (Ordner) pom.xml (Beliebiges pom.xml mit dem Tag <name>Module Two</name>) Sie können auch mal bei frankchrisg nachfragen, der bearbeitet den Moduldetector, der das macht. Vielleicht kann er mit einem Beispiel aushelfen. (Oder wir stellen das zurück, bis der Moduldetector Test fertig ist?)

          mhampp Manuel Hampp
          drulli Ulli Hafner
          Votes:
          0 Vote for this issue
          Watchers:
          2 Start watching this issue

            Created:
            Updated:
            Resolved: