Question

J'essaie de créer une application pour effectuer une recherche dans le code de base ColdFusion de mon entreprise. J'aimerais pouvoir faire des recherches intelligentes, par exemple: trouver où une fonction est définie (et ne pas frapper partout où la fonction est appelée). Pour ce faire, j’ai besoin d’analyser le code ColdFusion pour identifier des éléments tels que les déclarations de fonction, les appels de fonction, les requêtes de base de données, etc.

J'ai envisagé d'utiliser Lex et Yacc, mais je ne les avais jamais utilisés auparavant et la courbe d'apprentissage semble très raide. J'espère qu'il y a déjà quelque chose que je pourrais utiliser. Mon autre option est un fouillis de code regex-spaghetti difficile à maintenir, ce que je veux éviter.

Était-ce utile?

La solution

J'ai utilisé la source de CFEclipse , car il est open source et possède un analyseur. Pas sûr de la légalité de ceci si nous le vendions / le redistribuions, mais nous ne l’utilisons que pour un outil interne.

Autres conseils

Écrire des analyseurs syntaxiques pour de vraies langues est généralement difficile car ils contiennent des constructions que Lex et Yacc gèrent mal, par exemple, la langue n’est pas LALR (1). ColdFusion est peut-être plus facile que d’autres en raison de son style semblable à celui de XML.

Si vous souhaitez créer rapidement un analyseur syntaxique sophistiqué, vous pouvez utiliser notre DMS Software Reengineering Toolkit doté de la prise en charge de l'analyse GLR.

Si vous voulez éviter d'écrire vos propres regexps ou de les pirater, vous pouvez envisager notre Moteur de recherche de code source . Il possède des analyseurs syntaxiques sensibles à la langue et peut parcourir très rapidement de très grandes bases de code source. L’un de ses "sensibles au langage" " analyseur est AdhocText, qui est conçu pour gérer "générique" langages de programmation tels que ceux que vous pourriez trouver dans un livre de programmation aléatoire; il comprend même les balises de type XML telles que ColdFusion. Vous pouvez télécharger une version d'évaluation à partir du lien fourni pour l'essayer.

EDIT 4/3/2010: Une fonctionnalité récente ajoutée au SCSE est la possibilité de baliser les définitions et les utilise séparément. Cela répondrait au souhait du PO de trouver la définition de la fonction plutôt que tous les appels.

Aucun n’existait. Puisque ColdFusion ressemble plus à des scripts qu’à du code, j’imagine qu’il sera difficile d’écrire un analyseur syntaxique.

ColdFusion Builder peut analyser CFM / CFC dans un contour dans Eclipse. Peut-être pourriez-vous faire des recherches pour savoir si un plug-in CF Builder peut faire ce que vous voulez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top