2009-08-05 8 views
4

J'essaie de créer une application pour rechercher la base de code ColdFusion de mon entreprise. Je voudrais être capable de 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, je devrais analyser le code ColdFusion pour identifier des choses comme les déclarations de fonctions, les appels de fonctions, les requêtes de base de données, etc.Analyseur de code ColdFusion?

J'ai regardé en utilisant lex et yacc, mais je n'ai jamais utilisé eux avant 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 désordre de code regex-spaghetti difficile à maintenir, que je veux éviter.

+0

Kip, c'est quelque chose qui m'intéresse aussi (et quelque chose que je veux intégrer dans CFE), alors je me demandais si vous aviez fait des progrès utiles? –

+0

@Peter Boughton: En fait, je posais cette question au nom d'un collègue. Voir ma réponse ci-dessous - il a utilisé l'analyseur dans le code source de CFEclipse. Je ne sais pas si cela serait légal de redistribuer, mais nous l'utilisions pour un outil de développement interne. – Kip

+0

Eh bien, vous devez vérifier le libellé précis de la licence, mais si elle est dérivée du code EPL (la source CFEclipse), il faudrait simplement la distribuer avec une licence EPL. Cependant, c'est l'analyseur CFE actuel que je veux remplacer, donc à moins que vous n'ayez fait une grosse refonte, ce ne serait pas ce que je voulais de toute façon. –

Répondre

3

J'ai utilisé le source to CFEclipse, car il est open source et a un analyseur. Pas sûr de la légalité de cela si nous vendions/redistribuons, mais nous l'utilisons uniquement pour un outil interne.

+0

Je crois qu'il utilise la [MIT License] (https://github.com/cfeclipse/cfeclipse/blob/master/org.cfeclipse.cfml/License.txt). – John

0

Aucune n'existe. Puisque ColdFusion ressemble plus à des scripts qu'à du code, j'imagine que ce sera difficile d'écrire un analyseur pour cela. ColdFusion Builder peut analyser CFM/CFC en un contour dans Eclipse. Peut-être que vous pouvez faire des recherches sur si un plugin CF Builder peut faire ce que vous voulez faire.

+3

Être semblable à un script ne signifie pas qu'il est difficile d'écrire un parseur pour cela. Toute langue est représentée par un ensemble de chaînes. Les analyseurs analysent les ensembles de chaînes décrits implicitement par le code de procédure qui comprend l'analyseur, ou explicitement par les règles de grammaire qui pilotent l'analyseur si elles sont ainsi conçues. Définir ColdFusion sur un générateur d'analyseur piloté par la grammaire demande plus qu'une bonne description de ColdFusion qu'autre chose. –

1

L'écriture d'analyseurs pour des langages réels est généralement difficile car ils contiennent des constructions que Lex et Yacc ne manipulent souvent pas bien, par exemple, la langue n'est pas LALR (1). ColdFusion pourrait être plus facile que certains en raison de son style similaire à XML.

Si vous souhaitez construire rapidement un analyseur sophistiqué, vous pouvez envisager d'utiliser notre DMS Software Reengineering Toolkit qui prend en charge l'analyse GLR.

Si vous voulez évitez en écrivant le vôtre ou en piratant tous ces Regex, vous pouvez envisager notre Source Code Search Engine. Il a des analyseurs sensibles à la langue et peut très rapidement effectuer des recherches sur de très grandes bases de code source. AdhocText, l'un de ses parseurs "sensibles à la langue", est conçu pour gérer des langages de programmation "génériques" tels que ceux que vous pourriez trouver dans un livre de programmation aléatoire; Il comprend même des balises XML comme 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 utilisations séparément. Cela répondrait au désir du PO de trouver la définition de la fonction plutôt que tous les appels.

+0

Le Reengineering Toolkit peut en effet être un bon outil de départ, c'est juste une honte qu'il ne liste pas le soutien des FC parmi [ses frontaux prêts à l'emploi] (http://www.semanticdesigns.com/Products/FrontEnds/index.html? Accueil = DMSDomains). – CrazyPyro

+0

@CrazyPro: oui, c'est vraiment dommage, parce que vous n'auriez pas besoin de construire un analyseur du tout. Mais nous ne pouvons faire grand chose que sur un budget limité: -} Le ​​fait est que si vous devez construire votre propre analyseur, c'est une bonne base. –