Fixinator's New Compatibility Scanner
By Pete Freitag
Upgrading to the latest version of ColdFusion can be stressful. What will break? What might start to act differently? While Adobe generally prioritizes backward compatibility, there are always nuances to consider. For instance did you know that the meaning of the D date mask character changed in ColdFusion 2021?
In ColdFusion 2018 and below the uppercase D date mask character means day of month. In ColdFusion 2021 it was changed to mean day of year. So code like this:
dateFormat("2024-10-31", "mm-D-yyyy")
Would return 10-305-2024 in ColdFusion 2021 and above, and 10-31-2024 in ColdFusion 2018 and below.
Fixinator to the rescue
I’m happy to report that the latest version of Fixinator (version 5.0.0) has added a ColdFusion code compatibility scanner. This new scanner is capable of searching your code for compatibility issues, deprecated, and removed features. In fact it can check your code for over 100 compatibility issues including the date mask issue above.
In the Fixinator version 5 release there is a new argument called goals. The goals argument defaults to security but you can pass compatibility to initiate Fixinator’s ColdFusion code compatibility analyzer, like this:
fixinator path=c:\code goals=compatibility engines=adobe@2023
As you can see it has the ability to target version numbers, and as the next version of ColdFusion is released (ColdFusion 2025?) support for any possible issues will be added in the future.
Here are just some of the Adobe ColdFusion code compatibility issues that it can detect:
- Date Format - D mask change
- Unscoped Variables / searchImplicitScopes change
- Change to default Encrypt / Decrypt / Hash Algorithms in CF2023 update 8 and CF2021 update 14
- Improper use of reserved words such as final, static, abstract and function after CF2018
- Use of ColdFusion Portlets
- Removed tags & Functions
- Deprecated tags and Functions - Tags or functions which are deprecated can be detected by running the scan with severity=low, these are not reported by default.
Lucee Compatibility Scanner
You can also use fixinator to find compatibility issues for Lucee. It can currently find over 300 lucee compatibility issues in your code. This includes things like tags or functions which are or were supported on Adobe ColdFusion, but are not supported on Lucee. You could run a lucee compatibility scan like this:
fixinator path=c:\code goals=compatibility engines=lucee@6
Afraid to Upgrade
One of the main reasons I decided to build this feature is that I often encounter a ColdFusion shop that is stuck on an older version of ColdFusion. My hope is that with this feature, it should make the upgrade process easier by identifying the issues in the code that may need to be addressed.
Give it a try
If you’re not already a Fixinator customer (and I must say, a huge thank you to the CFML community for really embracing Fixinator and putting it into use in so many places!), then you can get a free trial key here.
Feedback Welcome
I’ve spent a good chunk of time researching hundreds of compatibility issues that Fixinator can already detect, but If you know of an incompatibility it can’t yet detect, please let me know.
Fixinator's New Compatibility Scanner was first published on October 31, 2024.
If you like reading about fixinator, coldfusion, compatibility, or scanner then you might also like:
- Fixinator fixes unscoped variables
- Ways to suppress a finding in Fixinator
- Fixinator and Foundeo Security Bundle
- ColdFusion Server Security Scanner
The FuseGuard Web Application Firewall for ColdFusion & CFML is a high performance, customizable engine that blocks various attacks against your ColdFusion applications.