2017-08-21 8 views
2

Je dois configurer une inspection dans IntelliJ qui trouvera les éléments de page xhtml/html/jsf sans attribut 'id'.Inspection IntelliJ pour rechercher des balises sans élément 'id'

<h:outputText value="myOutputValue" 
         styleClass="someStyle"/> 
<h:outputText value="myOtherOutputValue" /> 

J'ai essayé de mettre en place une inspection de code dans intelliJ sous recherche structurelle. avec l'expression rationnelle suivante mais je ne peux pas le configurer correctement. Toute aide serait appréciée.

<(?:h:inputText|h:outputText)(?:\s+(?!id\b)[\w\-.:]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[\w\-.:]+))?)*\s*/?> 

Je sais que le regexp fonctionne parce qu'il trouvera les occurrences dans mon fichier lorsqu'il est entré dans la zone de recherche. Une dernière chose, à la fin, je veux étendre (?:h:inputText|h:outputText) pour inclure de nombreux tags, donc si vous utilisez des variables dans l'inspection ou autre chose dans intelliJ alors cette solution serait la meilleure. Nous voulons nous assurer que tous les développeurs mettent des attributs id sur tous les éléments de page applicables pour faciliter la facilité de test. (Balises JSF sont hideux)

Répondre

1

Vous pouvez utiliser un modèle de recherche de structure comme les suivantes:

<$name$ $id$> 

Souvenez-vous de définir le type de fichier correct. Cliquez sur Edit Variables... et donner $ name $ les contraintes suivantes:
Texte/regexp: h:inputText|h:outputText

Donnez $ id $ les contraintes suivantes:
Texte/regexp: id
Occurrences count: 0,0

Vous trouverez tous les tags <h:inputText> et <h:outputText> sans l'attribut id.

+0

Cela a fonctionné à merveille, je n'ai pas assez de représentant pour donner le vote officiel. J'ai lu la documentation à plusieurs reprises et je n'ai pas pu trouver la réponse, les documents ne sont pas très clairs. Comment avez-vous appris/comprendre cela? –

+0

Vous devriez pouvoir "accepter" la réponse. La recherche structurelle est malheureusement assez complexe et n'a pas beaucoup de documentation. Il est possible d'en comprendre beaucoup en regardant attentivement tous les * modèles existants *. Ou vous pouvez regarder le code source et faire du développement sur SS & R pour Jetbrains comme je le fais ;-) –