A SonarQube plugin for analyzing ColdFusion code, based on the CFLint library.
Current Version: 3.2.0 - Major performance optimization with thread pool reuse for timeout enforcement, reducing analysis time by up to 91% on large codebases.
- Download
sonar-coldfusion-plugin-3.2.0.jarfrom the releases section or build it yourself by cloning the code and runningmvn clean package. - Copy
sonar-coldfusion-plugin-3.2.0.jarto<sonarqube dir>/extensions/plugins. - Restart SonarQube.
For Docker-based SonarQube installations:
# Copy plugin to container
docker cp sonar-coldfusion-plugin-3.0.0.jar sonarqube:/opt/sonarqube/extensions/plugins/
# Restart container
docker restart sonarqubeFor older SonarQube installations, use the appropriate legacy plugin version (see Compatibility section below).
| SonarQube Version | Plugin Version | Status |
|---|---|---|
| 2025.6+ | 3.2.0 | ✅ Current (Plugin API 12.0) |
| 2025.4 - 2025.5 | 3.0.0 | ✅ Supported |
| 9.0 - 9.1 | 2.2.0 | |
| 7.6 - 8.9 | 2.1.1 | |
| 5.6 - 7.5 | 1.5.0 |
- SonarQube: 2025.4 Community/Developer/Enterprise editions
- Java: 17+ (minimum 11 for runtime)
- CFLint: 1.5.9 (cfmleditor fork - bundled)
- Maven: 3.6+ (for building from source)
- Install the plugin in your SonarQube 2025.4+ instance
- Create a
sonar-project.propertiesfile in your ColdFusion project:sonar.projectKey=my-coldfusion-project sonar.projectName=My ColdFusion Project sonar.projectVersion=1.0 sonar.sources=. sonar.sourceEncoding=UTF-8 # Optional: specify file extensions (defaults to .cfc,.cfm) sonar.cf.file.suffixes=.cfc,.cfm,.cfml
- Run the SonarQube Scanner:
sonar-scanner
- Thread Pool Reuse: Replaced per-file ExecutorService creation with shared thread pool for timeout enforcement
- 91% Faster Analysis: Reduced analysis time from 709s to 60s on 493-file repositories
- Scalability Improvements: AIP repository (3,380 files) completes in 21 minutes vs projected 90-120 minutes
- Zero Timeouts: Maintains all timeout protection features while dramatically improving performance
- Production Ready: Tested on repositories ranging from 60 to 3,380 files with 100% success rates
- Per-file overhead: Reduced from ~1.3s to ~0.05s (96% reduction)
- Large repository performance: ~80% faster on 3,000+ file codebases
- Memory efficiency: Fixed resource leak with proper ExecutorService lifecycle management
- 38% faster analysis compared to v2.2.0
- Optimized Plugin API 12.0 integration
- Improved memory utilization
- Plugin API 12.0: Updated to latest SonarQube plugin architecture
- Java 17 Support: Built with modern Java for better performance
- Programmatic Configuration: Enhanced property definition system
- CFLint Integration: Uses cfmleditor/CFLint 1.5.9 fork with enhanced features
- Comprehensive unit test coverage with Plugin API 12.0 compatibility
- Enhanced error handling and validation
- Better integration with SonarQube 2025.4 security features
- Same CFLint Rules: All existing rule definitions preserved (cfmleditor/CFLint 1.5.9)
- Quality Profiles: Existing configurations remain compatible
- Analysis Results: Consistent issue detection and metrics
Follow the instructions for analyzing code with SonarQube Scanner. The ColdFusion plugin will automatically discover and analyze .cfc and .cfm files.
If you encounter log output indicating, that the Compute Engine of SonarQube has insufficient memory, similar to:
2016.06.22 16:17:43 INFO ce[o.s.s.c.t.CeWorkerCallableImpl] Execute task | project=ApplyNowModule | type=REPORT | id=AVV4eUIgcn4uboqEX1C3
java.lang.OutOfMemoryError: GC overhead limit exceeded
Dumping heap to java_pid8400.hprof ...
Heap dump file created [565019912 bytes in 6.373 secs]
you'll need to increase heap memory on the server, in <sonarqube dir>/conf/sonar.properties:
sonar.ce.javaOpts=-Xmx2g -Xms128m -XX:+HeapDumpOnOutOfMemoryError
2GB might be enough, or perhaps your code base warrants more.
- Java: 17+ (OpenJDK or Oracle JDK recommended)
- Maven: 3.6+ (3.9+ recommended)
- Git: For cloning the repository
- SonarQube Plugin API: 12.0.0.2960 (managed by Maven)
# Clone the repository
git clone https://github.com/mwinfie/sonar-coldfusion.git
cd sonar-coldfusion
# Build and test
mvn clean package
# Quick build without tests
mvn clean package -DskipTests
# Development build with verbose output
mvn clean compile -XThis project uses GitHub Actions for continuous integration:
- Main CI Pipeline: Runs on every push and pull request
- Nightly Builds: Extended compatibility testing across OS/Java versions
- Dependency Updates: Automated weekly dependency scanning
- Security Scanning: Automated vulnerability detection
- Pull Request Validation: Comprehensive PR checks and validation
See CONTRIBUTING.md for detailed development guidelines.
- Main Plugin:
target/sonar-coldfusion-plugin-3.2.0.jar - Test Reports:
target/surefire-reports/ - Coverage Reports:
target/site/jacoco/
We welcome contributions! Please read our Contributing Guide for details on:
- Development setup and workflow
- Code style and standards
- Testing requirements
- Pull request process
- Issue reporting guidelines
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes and add tests
- Run the test suite:
mvn clean verify - Submit a pull request
See CHANGELOG.md for recent changes and version history.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: Wiki
- SonarQube Docs: Plugin Development
Releases are automated through GitHub Actions:
- Create a release on GitHub with a version tag (e.g.,
v3.2.1) - CI/CD pipeline automatically builds and attaches artifacts
- Release notes are generated from changelog and commits
For maintainers with appropriate permissions:
# Update version in pom.xml
mvn versions:set -DnewVersion=3.2.1
# Build and test
mvn clean verify
# Create GitHub release
# Artifacts will be automatically built and attached by CIMany thanks for the people, who created or improved this project:
- Tomek Stec
- Michał Paluchowski
- Nicolas Bihan
- Gareth Edwards
- SonarQube 2025.4 compatibility upgrade
- Plugin API 12.0 migration and performance optimization
- Enhanced testing and documentation
Copyright 2016-2025 StepStone GmbH and contributors
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.