ColdFusion and Professional Grade Tools

This post is more than 2 years old.

Robby sent this to me this morning and I thought it would be something that folks much smarter than I could help discuss:

I was hoping you or the community could provide some guidance.

I am terribly distraught over the lack of professional grade tools for ColdFusion. I have used other languages (C/C++, Java, ASP, Perl, Motorola Assembly, Fortran, Ada, etc.) and they generally have much more tools available. I'm not talking about IDEs/editors as I have used combinations of Eclipse, CF Builder, Notepad++, and Dreamweaver. I'm thinking more in terms of unit testing, code coverage, static component analysis, etc. I don't know how much Adobe wants to push the platform as many in the industry consider it aging or dead, but many developers still use it and don't have a choice to migrate to anything else but since it is no longer "fashionable", many independant software houses don't want to implement developer tools for it.

For example, consider some of the tools here: http://www.mccabe.com/iq_developers.htm

I would give my right arm for this support in CF.

I wasn't sure if you knew of some good tools with CF support. I'm in reference to commercial grade, not necessarily community software though in some instances community tools can be of high quality as well. cflib.org has not yielded much unfortunately.

Thoughts?

I think you touch upon an interesting topic here. First off - cflib.org was not built to be a tools site. CFLib is simply a large collection of UDFs - quick snippets of code to solve common problems. Basically it's a code sharing site. You are looking for tools that help work with code. That's a completely different thing.

I think in terms of that - you have a few options available to you right now. So for example, unit testing with MXUnit. This is an open source framework for testing. It even provides ANT integration. "Professional" is certainly up for debate, but I'd think MXUnit qualifies. There was also a ColdFusion code coverage project began, but my Google skills have failed me today. Another area where I think things are well represented is in server monitoring. You've got an excellent tool built into ColdFusion itself as well as two powerful tools from the Intergral folks.

So that being said - what are the spots folks think are missing? Which should Adobe be helping out with and which should be in the hands on the community?

Raymond Camden's Picture

About Raymond Camden

Raymond is a senior developer evangelist for Adobe. He focuses on document services, JavaScript, and enterprise cat demos. If you like this article, please consider visiting my Amazon Wishlist or donating via PayPal to show your support. You can even buy me a coffee!

Lafayette, LA https://www.raymondcamden.com

Archived Comments

Comment 1 by Dave Ferguson posted on 8/31/2011 at 6:27 PM

I think that the term "Professional" is completely arbitrary and mostly over used. For example, the professional strength cleaner I bought worked worse than Formula 409.

Like Ray stated, there is MXUnit for unit testing. There are tools from Integral to help with debugging. There is even a debugger built into ColdFusion Builder. If you are using ColdBox it has a suite of tools for testing.

There are a million ways you can write ColdFusion. In contrast to other languages where they are highly structured and don't allow the free-form development you find in ColdFusion. This probably makes it harder to create a one size fits all unit testing suite.

--Dave

Comment 2 by Dan G. Switzer, II posted on 8/31/2011 at 6:31 PM

Not to throw fuel on the fire, but there's absolutely nothing wrong with utilizing Java for your business logic and using ColdFusion for the presentation wrapper.

Java has plenty of sophisticated tools that can analyze code and give you this kind of reporting. Dropping to Java certainly gives you some advantages, but you're going to loose a lot of the RAD nature of CFML.

CFML is a fantastic language that excels at HTML presentation, but if you're looking for more sophisticated tools to manage your backend logic, one of the great things about CF is you can utilize other languages within CF--languages that have the types of tools you're looking for.

Comment 3 by Andrew Scott posted on 8/31/2011 at 6:41 PM

This is a very interesting subject and one that is something that I have been complaining about for many years as well, yes we have CFB now but I would far from call it professional at the moment.

Other things like being able to to Open up a Hibernate Studio like tool, where I can see the tables and create the links and then see the generated HQL, is something that is very lacking. I mean I could use what Java already has, but the hibernate cfg is not even exposed for ColdFusion so that gos out the window very quickly.

Integration into Mylyn I believe is coming, but it is still behind the rest of the world.

Unit testing, yes we have mxunit. But we have nothing when it comes to Behavioural development or BDD, which is far better than TDD.

I could go on about many and I mean many other areas, but the question is very relevant that there isn't a great deal of things that we can use to integrate.

Not sure this is something that Adobe can fully address, but there is an extreme lack of professional tools, and I will include the IDE in that because CFB is no way what I would even consider professional.

Comment 4 by Robby Bankston posted on 8/31/2011 at 6:43 PM

Please do not take this the wrong way. I was not trying to disparage MXUnit or any other project. I was merely lamenting the number of tool choices. If you are a Java, ASP, or C++ developer, you have more tool choices than you care to shake a stick at. Someone did mention server monitoring and I have found that FusionReactor is quite nice from my experience but I was in reference to developer tools, not server tools. Thank you everyone for your input.

Comment 5 by Barney Boisvert posted on 8/31/2011 at 6:44 PM

I would happily plunk down the cost of a CF enterprise license for an IDE which was based on either the Eclipse or IDEA platform (and didn't hose the core tenets of the platform like CF & Flash Builder do), and had the following features:

* complete support for CF8, 9, and Railo dialects of CFML, including both autocompletion, highlighting, and structural views (outlines, etc.),
* an internal runtime engine which would allow dummy execution of code to facilitate emulation of "static" typing checks, but which CFML only does at runtime, and
* use of that same internal runtime for executing unit tests (I like MXUnit, but anything JUnit-y is fine with me) without needing an external app server.

Point two, in particular, is the only way to get reasonable dynamic component insight and refactoring support. The stuff in CFBuilder today is a good start, but without some dynamic evaluation it's never going to "get there". But even if it does, it still doesn't meet the "embrace the Eclipse platform" criteria.

Honestly, every time I work on a Java or Groovy project and come back to CFML I'm really disappointed but the dev experience. If not for the hundreds of thousands of lines of CFML which I already have to support, the lack of tooling would definitely be enough to make me ditch CFML.

Of course, the tooling problem is a huge one for every platform, not just CFML. If you've ever looked at PHP tooling, it's better, but still hardly ideal. Java, C/C++ and .NET, because they're the 8,000# gorillas, have good tooling. And older languages usually do because of how long they've been around.

Comment 6 by Lance Staples posted on 8/31/2011 at 7:05 PM

The code coverage tool you mentioned is called chimera. It is currently in alpha.

http://cfcommons.org/index....

Comment 7 by Robby Bankston posted on 8/31/2011 at 7:47 PM

I had actually seen that page for Chimera before but at that time could not find any download link in order to test. Perhaps that is what the author wanted since it was in alpha stage but I followed it for a long time with no status updates/updated ETA so I got disappointed as I was looking forward to trying it out.

Comment 8 by James, F.E. posted on 8/31/2011 at 7:50 PM

Maybe something like Charlie Arehart's CF411 list of tools is what you are looking for? http://www.cf411.com/

Comment 9 by Rob Brooks-Bilson posted on 8/31/2011 at 8:40 PM

Robby, you might also want to take a look at Nathan Struts's CFML Complexity Metric tool. It will give you the McCabe Index for CFML that you're looking for.

http://cfmlcyclomaticcomple...

Comment 10 by Nathanael Waite posted on 8/31/2011 at 9:29 PM

Ray you should fix http://carehart.org/cf411/#...

"Ray Camden's CF resources page" - http://www.coldfusionjedi.c... Comes up with page not found.

Comment 11 by Raymond Camden posted on 8/31/2011 at 9:31 PM

I don't own Charlie's site. ;) But I'll ping him. Thanks.

Comment 12 by Bob posted on 8/31/2011 at 9:43 PM

Maybe a tangent here but one thing Adobe does not do well and needs desperately to address with Coldfusion is that “many in the industry consider it aging or dead” or not “fashionable”

Comment 13 by Raymond Camden posted on 8/31/2011 at 9:48 PM

@Bob: ColdFusion is old. So is PHP and Ruby. You can't change that. As for 'cool', Adobe can't say it's cool. You need developers to do that. Personally I've been trying to do that by using it _outside_ of our community. For example, almost all of my jQuery blog entries use CF for the back end. I don't use it to push CF but more as a "oh btw, look how well CF works along with..." type thing. ;)

Comment 14 by Raymond Camden posted on 8/31/2011 at 9:53 PM

@Dan: I think you make a fair point. It's not abandoning CF to use it with Java.

@Andrew: Unless I'm misunderstanding you, the Hibernate config _is_ exposed. You can also generate the hbxml files if you want. I _would_ like to see tools in CFB to make it easy to do ad hoc HQL queries.

@Barney: Doesn't CFB already support multiple dialects? And you can't honestly expect it to ship with a Railo library.

Comment 15 by steve ryan posted on 8/31/2011 at 10:06 PM

Man, I hate hearing about the death of CF. I just started to get the hang of it.

Comment 16 by Barney posted on 8/31/2011 at 10:30 PM

@Ray,

I don't know if CFB supports multiple dialects. It doesn't let you use the Eclipse platform though, so it's irrelevant to me. Adobe's implementations of CFBuilder and Flex/FlashBuilder don't allow you to network install the plugins, you have to install them onto your local machine, rather than just the license. Which pretty much defeats the whole purpose. And it doesn't run on Linux, but that's a lesser gripe. If I could at least centralize, I'd consider running a VM for CFB. But since it doesn't, I'll run CFE (which does centralize) native.

As for the internal runtime, I don't much care what it is. Ideally it'd follow the project's dialect, but whatever. Though I'm not sure why Adobe wouldn't bundle Railo and OBD, since both of their licenses allow it. The problem would be if a third-party tool vendor wanted to support ACF natively.

Comment 17 by Raymond Camden posted on 8/31/2011 at 10:35 PM

@Barney: CFB supports 7-9.

I'm confused why you say it doesn't let you use the "Eclipse platform." That is a very broad statement. I can use other plugins with CFB no problem. You mention "network install" - is that some feature where - remotely - you can push a plugin? If so - I've never heard of anyone doing that. I can see how that would be useful in an Enterprise- but it seems like an edge case to me. I also think it's unfair to say it totally defaults the purpose. You make it sound like it's not even Eclipse, which doesn't seem right to me. But I'm assuming I'm misreading you. Can you clarify that?

Comment 18 by Dave DuPlantis posted on 8/31/2011 at 10:38 PM

Of course CF is aging. Like Ray says, it's old. So is Java. So is any other language that people like and continue to use. All languages are either aging or extinct. I prefer aging. :) (You can argue that new languages are not yet aging ... I'd ask what constitutes "new", and then I'll take that list and ask you about them in a year.)

As far as "dead" goes, and I'm not picking on Robby on this one, but rather on the general idea ... "people in the industry" who think an active language is "dead", no matter which language it is, are not people whose opinions you need to worry about. They're lost. The people you want to approach are the ones with questions about it, and maybe some of those would be lured by a better tool set.

IIRC, Nathan Strut's tool is an approximation of McCabe's CC ... but it could use some help, and maybe the best way to give it help is to download it, use it, and give him feedback about it (or even to tweak it yourself). Maybe it's not the polished tool that you could get for another language, but it's a start, and how many of those polished tools were once side projects that an enterprising developer did in his or her spare time?

I like what's happened so far with CF Builder, and I'd love to see Adobe pick up some code coverage and complexity tools based on CFCs and run with them, even if they have to start with tag-only and script-only options.

Comment 19 by Judah McAuley posted on 8/31/2011 at 10:55 PM

I've said it before to Adobe and I'll say it again here: What I really want from a professional cfml development tool is refactoring and code introspection support.

Right now I do a lot of .Net development and in Visual Studio 2008 and 2010 (especially with the Resharper add on), I can use dependency injection to add a class to my service and after that, the IDE just knows about it. It knows what all the methods are called, what the arguments are for those methods, what types they return. I can right click on a method and go right to the definition of that method without having to remember which file it is in. I can easily find every place in my project that references that method. When I change the signature on a method by adding an argument, syntax highlighting will be changed project-wide showing that I now have invalid calls (if the argument is required).

I love working in cfml, a lot more than I like writing C#. But I have to say, Visual Studio is light years ahead of anything available for CF. CF has made some excellent strides in the area of frameworks and I'd happily put ColdBox or FW/1 up against .Net MVC, but the dev tools just aren't up to par.

Comment 20 by Jaime Metcher posted on 9/1/2011 at 2:45 AM

+1 to Dan.

Also I'll add that the tooling challenge is complicated by the complex positioning of ColdFusion.

Is it a front-end technology? In which case you have to compare the tooling to Flash Builder and Visual Studio's screen painter, both of which are streets ahead at this point.

Is it a back-end technology? Java is waaay ahead for pure back-end coding, both for tooling and sheer speed of development.

Is it a full stack? That's a huge tooling challenge. It's worth pointing out that the full-stack tooling for Java is still pretty ordinary after all these years (acknowledging the huge strides in the last little while), and CF is actually ahead here.

Or is it a bit of everything (which I think is closest to the mark)? In which case it's just not reasonable to expect best-in-class tooling in any single scenario.

Comment 21 by Andrew Scott posted on 9/1/2011 at 5:34 AM

@Ray, there is a huge difference between the Hibernate Configuration file and generated mapping files. One is used for mapping to the database, the other is the details or configuration of the database.

Comment 22 by Raymond Camden posted on 9/1/2011 at 6:06 AM

I didn't say they were the same. I said that I believe you have access to both. I just checked - you can specify an ormconfig file in app.cfc, and you can also use a setting there to generate the mapping files.

Comment 23 by Andrew Scott posted on 9/1/2011 at 7:20 AM

@Ray, sorry my bad for not reading you correctly. Very nice that you can specify the ormconfig, that could be very useful and might allow us to use the likes of Hibernate Studio or similar tools.

But it would also be nice if ColdFusion allowed for this file to be exposed as well, not too many are going to be able to be confident enough to create this file on their own.

Also you might want to ping the Adobe people for the docs on this section, the link for ormconfig to the Hibernate area is broken. Looks like the Hibernate site has been redone and many links seem to be now broken.

Comment 24 by Kamil posted on 9/2/2011 at 11:17 PM

In reading through the string, I wonder why the "death of CF" comes up so frequently! I have never, to the best of my knowledge, heard that about any other language.

Comment 25 by Gary F posted on 9/4/2011 at 2:45 AM

Two things:
1) If some people are still using a language then it can't be dead.
2) Those who have never used any of these "professional" tools aren't missing them. ;-)

...but it would be very nice to have more "coolness" in IDEs and the development process. Whatever that may be.

Comment 26 by Andy Sandefer posted on 9/8/2011 at 1:47 AM

For starters, I was strictly a CF'er for about 5 or 6 years. In March I was forced into C# and I have to admit that after some early struggles I now very much like it.
My strategy for web application development makes nearly zero use of Microsoft's server controls and is almost entirely based on jQuery + web services + C# for DAO/Business Logic. After using both technology stacks I feel like I have a pretty objective perspective on this whole dead language business.
First off, CF is not dead, it is a niche language that serves several medium to large scale enterprises. Secondly, CF does more out of the box with no third party add-ins than any other environment on the market.
It fell down when compared to ASP.NET prior to version 9 in terms of OOP constructs. It also lacked a solid, universally accepted development environment until CF builder came along.
It does things in 1 or 2 lines of code that take .netters writing piles of code to do - which says that the CF team truly cares about developer productivity.
It is unfortunate that they've caught up with (and in many cases surpassed) other popular rivals - the problem is that they did it 6 years too late.
It will endure as long as it is profitable for Adobe. CF 8 was extremely profitable and I would imagine that they're in the black for CF9 already so I doubt that the product is going anywhere. It is a niche product with talented cf zealots who put about every other blogging community to shame, but it's days of dominating the web landscape are over.
As far as advanced tools go I am sorry to say that Microsoft and pure Java offerings completely outclass CF Builder (no comparison).

Comment 27 by kacperus posted on 4/22/2013 at 1:28 AM

I know the topic is quite old now but I was looking for some Cold Fusion code coverage statistics tool for some time and eventually I end up creating one on my own.

If anyone is interested then I invite you to visit my project page on Google Code: http://code.google.com/p/cf.... Give it a try and tell me what you think. The tool is called cf-metrics and offers code coverage for Adobe Cold Fusion servers.

Constructive feedback (and/or contribution) is more than welcome!