1、C++、AutoConfig和SonarQube
欢迎使用SonarQube 10.6的AutoConfig,开启代码分析的未来。在这里,高质量的清洁代码不再只是一个想法,而是每个C和C++项目的即时现实。
AutoConfig消除了所有常见的先决条件:无需依赖特定的编译器,无需复杂的设置操作,也无需依赖于项目的构建环境。无论您是在使用特定、鲜为人知的编译器进行嵌入式项目开发,还是在资源匮乏的小型项目中工作,AutoConfig都可以无缝集成,为您提供轻松的代码分析路径。它消除了过去的复杂性——在过去,生成编译数据库和确保环境兼容性是不可避免的麻烦事。现在,每个开发人员都可以以更少的努力实现更大的影响,立即踏上编写更清洁、更优质代码的旅程。
2、从配置混乱到清晰明了
那些需要静态了解C和C++代码的工具,如代码分析、重构和IntelliSense,通常要求开发人员手动提供有关项目如何编译的详细配置信息。这一关键设置涉及指定“include”搜索目录和宏定义,通过解析不同的依赖关系和调整预处理器行为来彻底改变代码语义。每种工具都有其各自的方法,通常需要特定的配置文件,这导致设置过程既分散又费力。
编译数据库是LLVM 项目的一项创新,其出现标志着一个重大飞跃。它提供了一种标准化的JSON格式,用于描述每个源文件的编译命令,有助于统一不同工具之间的配置过程。但是,生成此数据库并不简单,并且在很大程度上取决于构建系统。在Sonar,我们设计了 Build-Wrapper,通过包装构建和捕获构建命令来简化编译数据库的生成。不过,它可能与一些具有限制性构建环境或非标准工具链的项目并不兼容。另外,虽然CMake可以在没有事先构建的情况下生成编译数据库,但这一选项仍然受到特定CMake生成器和编译器的限制。对于许多无法或不愿仅仅为了代码分析兼容性而调整工具链的项目来说,这一要求可能会使其变得不切实际。此外,即使使用CMake生成的编译数据库,仍然需要在构建后执行分析,以考虑任何生成的文件和获取的依赖项。这种必要性凸显了挑战所在:虽然灵活的现代环境有助于满足这些要求,