Using the Code Analyzer

The Code Analyzer has two purposes:

  • It can validate the CFML syntax of your application. To do so, the analyzer runs the ColdFusion compiler on your pages, but does not execute the compiled code. It reports errors that the compiler encounters.

  • It provides information about the incompatibility (and its severity), and suggests a remedy where one is required.

  • It can identify places where ColdFusion might behave differently than previous versions. The analyzer identifies the following kinds of features:

    • No longer supported: Their use results in errors. For example, the closable attribute is not supported for the tag cflayoutarea in border layout (cflayout with type="border").

    • Deprecated: They are still available, but their use is not recommended and they might not be available in future releases. Deprecated features might also behave differently now than in previous releases. For example, in cfcache tag the following attributes are deprecated: directory, cachedirectory, port, and protocol.

    • Modified behavior: They might behave differently than in previous versions. For example, if you use cfcache tag in ColdFusion 9 without end tag (</cfcache>), then instead of caching only the current page (which was the behavior in the previous releases), the entire request is cached.

    • New: These are features newly added to ColdFusion 9. For example, if you use throw as a user-defined function in a CFM, analyzer informs that throw is a built-in ColdFusion function and suggests you to rename. If you use throw as a user-defined function in a CFC, analyzer informs that throw is a built-in function and suggests you to prefix it with object scope. For more details on new features, see example, What’s New in ColdFusion 9.

You can run the Code Analyzer from the ColdFusion Administrator. Select Code Analyzer from the list of Debugging & Logging pages.

Note: The Code analyzer does not execute the pages that it checks. Therefore, it cannot detect invalid attribute combinations if the attribute values are provided dynamically at runtime.