# 6.6静态代码分析工具

在进行静态分析时，源代码文本会接受一系列形式检查，以扫描应用程序中的不规范和错误。这可以手动进行，也可以在工具的支持下进行。\
工具可以帮助评估现有软件系统中的各种质量特性（如复杂性）。通过识别依赖关系，静态代码分析工具还可以用于优化运行时效率。它们还可以确定实现是否符合架构的要求，例如，确定在何处遵守了允许的依赖规则。

#### &#xD;6.6.1需求和决策标准

• 可自动化，能够被集成到构建过程中\
• 报告，能够以多种格式(HTML、RSS等)处理结果，包括可视化\
• 灵活的分析标准和度量\
• 支持多种编程语言\
• 定义包含和排除标准(即应分析源代码的哪些部分以及如何分析)

#### &#xD;6.6.2静态代码分析工具面临的挑战

• 支持多种编程语言\
• 由于直接依赖（调用、包含）或间接依赖（依赖注入、通过数据结构的依赖或通过运行时环境的依赖），源代码中会出现依赖关系和耦合。间接依赖的分析要困难得多。

#### &#xD;6.6.3 示例

静态分析:\
• Application Intelligence Platform (CAST Software .Inc)\
• Coverity (Synopsys)\
• FindBugs(开源)\
• Fortify Static Code Analyzer（Micro Focus）\
• JDepend(开源)\
• SonarQube (SonarSource)\
• Sonargraph (hello2morrow GmbH)\
• Sotograph (hello2morrow GmbH)\
• structure101（Headway Software）
