Hi Roman,

1) Yes, the rule seems useful, thanks! You can create a PR, or shall I?

2) How about leaving out the <where>:

      <filecontent filename="{*}.jsp" pattern="import=&quot;&quot;" />

<where> is generally useful if you need to match a regex, or refer to the value somewhere else in the rule.

Ondra




On 21.4.2016 09:40, Roman Martin Gil wrote:
Thanks Ondrej, my latest rule version is working as I want.

Now I create a new rule to identify page import definitions empty (<%@ page import="" %>, .... this line in WAS is working successfully 🤔 but in EAP not (compile error).

<rule id="jsp-empty-imports">
<when>
<filecontent filename="{*}.jsp" pattern="import={emptyString}" />
</when>
<perform>
<hint message="Empty imports definition in a jsp" effort="1" severity="mandatory">
<message>
                        Empty import definitions in .jsp or .jspf files will fail in compilation time. It is needed to
                        remove them.
                    </message>
</hint>
</perform>
<where param="emptyString">
<matches pattern="(&quot;&quot;)" />
</where>
</rule>


I think that rule is also important in other migrations so WindUp could introduce in its global rules. What do you think?

Regards

On Thu, Apr 21, 2016 at 4:58 AM, Ondrej Zizka <ozizka@redhat.com> wrote:
For the cases like "Message: ", i'd suggest to use negative lookbehind:

(?<!\w)[a-z]:[\\\\|/]

Which basically says, make sure there's no word character prior to the potential drive letter.

Ondra



On 20.4.2016 16:02, Marek Novotny wrote:
forgot to include Romain in CC

On 20.4.2016 16:01, Brad Davis wrote:
+1 -- it is not only important for Windows to Linux, but also for identifying file read / writes that need to be mounted for cloud deployments to things like OpenShift.

Brad Davis
Director of FSI Solutions, Red Hat Consulting
Email: bdavis@redhat.com | c: 980.226.7865 | http://www.redhat.com

----- Original Message -----
From: "Marek Novotny" <mnovotny@redhat.com>
To: "Windup-dev List" <windup-dev@lists.jboss.org>
Sent: Wednesday, April 20, 2016 9:49:31 AM
Subject: [windup-dev] Fwd: [WindUp] Regular expression to detect filesystem     paths

adding windup-dev ml as this could be interested to Windup community.


Romain,

  I would go with simplified pattern for every unique occurrence to more
more general one.

So try to use <or></or> and condition patterns in it.
Something like the following:

  <rule id="filesystem-paths-properties">
        <when>
                <or>
                        <filecontent filename="{*}.{extensions}"
                                pattern="{filesystem}" />
                        <filecontent filename="{*}.{extensions}"
                                pattern="{netfilesystem}" />
                        <filecontent filename="{*}.{extensions}"
pattern="page import="{filesystem}" />
                </or>
        </when>
        <perform>
                <hint message="File system properties" effort="1"
                severity="mandatory">
                        <message>
                        TODO
                        </message>
                </hint>
        </perform>
        <where param="extensions">
                <matches pattern="(java|properties|jsp|jpsf|tag|xml|txt)" />
        </where>
        <where param="filesystem">
                <matches pattern="(\S:[\\|/])" />
        </where>
        <where param="netfilesystem">
                <matches pattern="(\\\\ntfileserver\)" />
        </where>
        <where param="netfilesystem">
                <matches pattern="" />
        </where>
</rule>

-------- Forwarded Message --------
Subject:        [WindUp] Regular expression to detect filesystem paths
Date:   Wed, 20 Apr 2016 15:29:03 +0200
From:   Roman Martin Gil <rmarting@redhat.com>
To:     Marek Novotny <mnovotny@redhat.com>



Hi,

I am very obfuscated to create a rule to identify some filesystem paths
patterns. I am trying to detect when the code (.java, .properties) have
the following entries:

   * "c:\\"
   * "e:\\"
   * "c:/"
   * "e:/"
   * "\\\\ntfileserver\"
   * "page import="""


My first approach is similar to:

         <rule id="filesystem-paths-properties">
             <when>
                 <filecontent filename="{*}.{extensions}"
pattern="{filesystem}" />
             </when>
             <perform>
                 <hint message="File system properties" effort="1"
severity="mandatory">
                     <message>
                         TODO
                     </message>
                 </hint>
             </perform>
             <where param="extensions">
                 <matches pattern="(java|properties|jsp|jpsf|tag|xml|txt)" />
             </where>
             <where param="filesystem">
                 <matches pattern="((c|e):|[\\])" />
             </where>
         </rule>

However I am detecting cases as "Message: " as a pattern. How could I
create a rule to identify these cases?

Thank you very much in advance

PD: What is the better mail list to send it?







--

Saludos/Best regards
______________________________________________________________________
Jose Roman Martin Gil  
MW Senior Architect | +34 605 926 271 | roman.martin@redhat.com

Red Hat Iberia
C/ José Bardasano Baos, 9, Edif. Gorbea 3, planta 3ºD, 28016 Madrid, Spain

______________________________________________________________________