Java静态检测工具的简单介绍 - Sonar、Findbugs
- 格式:docx
- 大小:35.42 KB
- 文档页数:12
白盒测试的静态分析工具推荐辅助测试的利器白盒测试是一种软件测试方法,它通过测试程序内部的结构、设计和实现来评估系统的质量。
为了提高白盒测试的效率和准确性,静态分析工具成为了不可或缺的辅助工具。
本文将推荐一些常用的白盒测试的静态分析工具,帮助测试人员提高测试效率和测试质量。
一、FindBugsFindBugs是一个基于静态分析原理的开源工具,用于发现Java代码中的潜在缺陷。
它利用Java字节码层面的分析技术,能够对代码中的常见错误、异常控制流、并发问题等进行检测。
FindBugs提供了丰富的规则集合,可以根据项目需求进行配置和扩展。
该工具还能够与主流的集成开发环境(IDE)进行整合,帮助开发人员及时发现和修复代码缺陷。
二、PMDPMD也是一款开源的静态分析工具,主要用于检测Java代码中的潜在问题和不良实践。
它通过静态分析代码,识别出代码中的潜在缺陷、可维护性问题、性能问题等。
PMD提供了丰富的规则集,开发人员可以根据项目需求进行配置和定制。
除了Java,PMD还支持其他编程语言,如C/C++、JavaScript等。
使用PMD可以帮助测试人员发现并修复代码中的问题,提高代码质量和可维护性。
三、CheckstyleCheckstyle是一个用于Java代码规范检查的工具,它可以帮助开发人员遵循一致的编码规范,提高代码的可读性和可维护性。
Checkstyle 支持多种常见的编码规范,例如Google Java Style、Sun Code Conventions等。
该工具通过静态分析代码,识别出代码中不符合规范的部分,并给出相应的警告和建议。
测试人员可以利用Checkstyle来保证测试代码的规范性和质量。
四、SonarQubeSonarQube是一个用于代码质量管理的开源平台,旨在帮助开发团队提高代码质量和可维护性。
SonarQube支持多种编程语言,如Java、C/C++、C#等,提供了丰富的代码质量度量指标和规则集。
代码质量与静态分析SonarQubePMDFindBugs代码质量与静态分析在软件开发过程中,代码质量一直是一个至关重要的问题。
优秀的代码质量不仅能够提高软件的可维护性和可扩展性,还能够减少潜在的bug和故障发生的概率。
为了保证代码质量,静态分析工具成为开发人员的得力助手。
而在众多静态分析工具中,SonarQube、PMD和FindBugs是最为常用的几种。
一、SonarQubeSonarQube是一款开源的静态代码分析工具,能够对代码进行全面的检查和评估。
它可以检查代码是否符合编码规范、是否存在代码重复、潜在的安全问题等等。
SonarQube基于静态分析原理,通过扫描代码,生成相应的报告和指标,帮助开发人员发现和修复问题。
SonarQube支持多种编程语言,如Java、C#、Python等,具有很强的灵活性和可扩展性。
二、PMDPMD是另一种常用的静态代码分析工具,它旨在检测和识别代码中的潜在问题和错误。
PMD通过解析代码,应用一系列的规则和规范,检查代码的可读性、性能、安全性等方面的问题。
PMD支持多种编程语言,如Java、C++、JavaScript等,可以帮助开发人员提高代码质量和规范性。
三、FindBugsFindBugs是一个基于静态分析的开源工具,主要用于检测Java代码中的潜在bug和错误。
FindBugs通过静态分析代码,发现类似空指针引用、资源泄露、代码逻辑错误等问题,并生成相应的报告和建议。
它提供了丰富的规则库,可以根据具体需求进行自定义配置。
FindBugs在代码审查和优化方面具有很高的价值。
四、代码质量与静态分析的关系代码质量和静态分析密切相关。
静态分析工具可以帮助开发人员发现潜在的问题,减少代码中的bug和错误。
通过使用SonarQube、PMD和FindBugs等工具,开发团队可以及时检测到代码中的问题,并有针对性地进行修复和优化。
这些工具提供的报告和指标,能够直观地反映代码的质量状况,帮助团队监控和改进代码的质量。
优化代码质量的静态分析工具推荐静态代码分析是一种静态分析方法,通过分析程序源代码而不是执行它来检查其潜在错误、质量问题和安全漏洞。
它可以帮助团队发现隐藏的缺陷、提高代码质量、加快开发过程和减少维护成本。
在本文中,我们将介绍一些常用的静态代码分析工具,以及它们的功能、优点和使用场景。
1. SonarQube:SonarQube是一个开源的代码质量管理平台,可以用于静态代码分析和连续集成。
它支持多种编程语言和框架,并提供了全面的代码检查、度量和报告功能。
SonarQube可以检测常见的编码问题、潜在的安全漏洞、重复代码、复杂度等问题,并提供了可视化的报告和仪表板。
它还与许多持续集成工具(如Jenkins)集成,可以在构建过程中自动运行静态代码分析。
2. PMD:PMD是一个基于规则的静态代码分析工具,适用于多种编程语言(如Java、C++、C#, JavaScript等)。
PMD提供了许多内置的规则,可以检查常见的编码问题(如命名问题、代码重复、未使用的变量等),并可以定制和扩展规则以适应特定的代码规范和项目需求。
PMD 还提供了命令行和插件接口,可以集成到IDE和构建系统中,以便在开发过程中自动运行静态代码分析。
3. Checkstyle:Checkstyle是一个针对Java代码的静态代码分析工具。
它提供了丰富的内置规则,可以检查代码的格式、命名、注释、导包等方面的问题,并支持自定义规则。
Checkstyle还可以生成详细的报告,并提供了命令行和插件接口,以便与常见的开发工具(如Eclipse、IntelliJ IDEA)和构建系统集成。
4. FindBugs:FindBugs是一个基于字节码分析的Java静态代码分析工具。
它可以检测潜在的缺陷、错误用法、性能问题等,并提供详细的报告。
FindBugs提供了众多的内置规则,也支持自定义规则。
它可以作为一个独立的命令行工具运行,也可以与构建工具(如Ant、Maven)和集成开发环境(如Eclipse、IntelliJ IDEA)集成。
国内外主流静态分析类工具静态分析是一种软件分析技术,主要用于检查和评估软件代码。
它通过分析代码的语法、结构、语义等方面,识别潜在的编程错误、安全漏洞和性能问题。
静态分析工具可以帮助开发人员提高代码质量、减少错误和缺陷,并提高软件的可靠性和可维护性。
以下是一些国内外主流静态分析类工具的介绍:1. SonarQube:SonarQube是一款开源的静态代码质量管理平台,提供了全面的代码分析和测试覆盖率检查等功能。
它支持多种编程语言,如Java、C++、Python等,可以检测代码质量、代码复杂度、缺陷、漏洞等问题,并提供详细的报告和建议。
2. Coverity:Coverity是一款商业化的静态分析工具,它主要用于C、C++、Java 等编程语言。
它能够识别出产品中的代码缺陷、安全漏洞和性能问题,并提供有效的修复建议。
Coverity具有高度的准确性和可扩展性,被广泛应用于许多行业,如金融、汽车和电子等。
3. FindBugs:FindBugs是一款开源的Java静态分析工具,它可以检测出Java程序中的常见编程错误、潜在问题和性能瓶颈。
FindBugs基于一系列预定规则进行分析,通过检查字节码来发现问题,并生成详细的报告。
它还提供了插件机制,方便开发人员自定义规则和扩展功能。
4.PMD:PMD是一款开源的静态代码分析工具,主要用于Java和其他JVM-based语言。
它可以检查代码风格、潜在的bug、未使用的变量、复杂的表达式等问题,并提供详细的报告和建议。
PMD还支持自定义规则和插件,方便开发人员根据具体需求进行定制。
5. ESLint:6. Clang Static Analyzer:Clang Static Analyzer是由LLVM开发的一款开源的静态分析工具,主要用于C、C++和Objective-C语言。
它能够检测出代码中的内存错误、空指针引用、资源泄漏等问题,并提供详细的报告和修复建议。
代码静态检查工具与应用介绍代码的质量直接关系到软件的性能和可靠性。
为了提高代码质量,开发人员常常采用代码静态检查工具来检测潜在的代码缺陷和错误。
本文将介绍常用的代码静态检查工具及其应用,帮助读者更好地理解和应用这些工具。
一、什么是代码静态检查工具?代码静态检查工具是一类软件工具,通过扫描源代码来检查潜在的编程错误、不合规范的代码和潜在的安全隐患。
它可以在代码编写的早期发现问题,帮助开发人员提前修复错误,从而提高代码质量。
二、常用的代码静态检查工具1. FindBugs:FindBugs是一个基于Java字节码的静态分析工具,用于查找Java程序中的潜在缺陷。
它可以检测出空指针引用、资源未释放、不必要的对象创建等问题,并提供详细的问题报告。
2. PMD:PMD是一个针对Java源代码的静态规则检查工具。
它可以帮助开发人员发现代码中的潜在问题,如未使用的变量、无效的方法重写、复杂的表达式等。
PMD提供了多种规则,可以根据项目需求进行配置和定制。
3. ESLint:ESLint是用于JavaScript代码的静态检查工具,它能帮助开发人员发现代码中的潜在问题并提供修复建议。
ESLint支持可配置的规则集,可以根据项目需求进行灵活的配置。
4. Checkstyle:Checkstyle是一个用于Java代码的静态规则检查工具。
它可以帮助开发人员遵循编码规范,并提供统一的代码风格。
Checkstyle支持自定义规则和可配置的检查选项,以满足项目的需求。
三、代码静态检查工具的应用1. 代码质量控制:代码静态检查工具能够帮助开发人员发现代码缺陷和不规范的编码风格,并及时提供修复建议。
通过使用这些工具,可以规范代码质量,提高代码的可读性和可维护性。
2. 安全漏洞检测:代码静态检查工具能够帮助开发人员发现潜在的安全隐患,如SQL注入、跨站脚本攻击等。
通过及时修复这些问题,可以提高软件的安全性和可靠性。
3. 性能优化:代码静态检查工具还可以检测不合理的代码结构和低效的算法,帮助开发人员发现性能瓶颈,并提供相应的优化建议。
提高代码质量的静态分析工具推荐在软件开发过程中,提高代码质量是一项至关重要的任务。
一个高质量的代码可以减少潜在的代码缺陷,提高可维护性和可扩展性,减少调试时间,降低维护成本。
其中,静态分析工具是一个非常有用的技术手段。
静态分析是指在不执行代码的情况下对代码进行分析,旨在发现代码中的问题并提供相关建议和改进意见。
下面是一些常见的提高代码质量的静态分析工具。
1. SonarQube:SonarQube是一个开放源代码的静态代码质量管理平台。
它可以对多种编程语言进行静态分析,包括Java、C/C++、C#、JavaScript等。
SonarQube可以检查代码规范性、代码重复、潜在的漏洞等,并提供可视化的报告和指标。
它还集成了其他工具,如FindBugs、Checkstyle等,可以提供更全面的代码分析。
2. PMD:PMD是一个基于规则的静态代码分析工具,支持Java、C/C++、Apex、PLSQL等多种语言。
PMD可以检查代码的规范性、性能问题、潜在的错误和漏洞等,提供详细的报告和建议。
PMD还支持自定义规则,可以根据具体项目的需求扩展分析功能。
3. FindBugs:FindBugs是一个基于静态分析的Java程序缺陷检测工具。
它可以检查代码中的潜在缺陷,如空指针引用、错误使用异常处理、不可达代码等。
FindBugs使用一组预定义的规则来检查代码,并提供详细的报告和建议。
它还支持自定义规则和插件,以满足特定项目的需求。
4. ESLint:ESLint是一个用于JavaScript和TypeScript的静态代码分析工具。
它可以检查代码的规范性、潜在的错误、性能问题等,并提供高度可配置的规则和可定制的报告格式。
ESLint支持在开发过程中自动检查代码,并可以与编辑器和构建工具集成,提供实时的反馈和建议。
5. Checkstyle:Checkstyle是一个用于Java代码的静态代码分析工具。
它可以检查代码的规范性,如命名约定、代码布局、注释规范等。
代码质量评估的工具介绍代码质量是衡量软件开发中代码的可维护性、可测试性、可读性、可扩展性等方面的一个重要指标。
为了评估代码的质量,开发人员可以使用各种代码质量评估工具来帮助他们自动化地检查代码,并提供有关代码潜在问题和改进的建议。
这篇文章将介绍一些常用的代码质量评估工具。
1. SonarQube:SonarQube是一个开源的代码质量管理平台,它提供了一套强大的静态代码分析工具,可以帮助开发人员识别潜在的技术债务和代码缺陷。
SonarQube支持多种编程语言,包括Java、C#、C++、JavaScript 等,并提供了一套丰富的规则集,以帮助开发人员检查代码的可读性、可维护性和安全性等方面的问题。
2. Checkstyle:Checkstyle是一个用于Java代码的静态代码分析工具,它可以强制执行一组编码规范,并帮助开发人员识别代码中的潜在问题。
Checkstyle支持各种代码规范,包括Sun编码规范、Google编码规范等,并提供了丰富的检查规则和自定义配置选项,以满足不同项目的需求。
3. PMD:PMD是一个用于静态代码分析的开源工具,它可以帮助开发人员查找代码中的潜在问题,并提供相应的修复建议。
PMD支持多种编程语言,包括Java、JavaScript、PL/SQL等,并提供了丰富的规则集,以帮助开发人员检查代码的可读性、性能、安全性等方面的问题。
4. FindBugs:FindBugs是一个用于静态代码分析的开源工具,它可以帮助开发人员查找Java代码中的潜在问题,并提供相应的修复建议。
FindBugs使用一组预定义的规则来检查代码,包括空指针引用、资源泄漏、不良代码实践等,并提供了可自定义的规则配置选项。
5. ESLint:ESLint是一个用于JavaScript代码的静态代码分析工具,它可以帮助开发人员查找代码中的潜在问题,并提供相应的修复建议。
ESLint支持各种代码规范,包括ES5、ES6等,并提供了丰富的规则集,以帮助开发人员检查代码的可读性、可维护性、安全性等方面的问题。
静态测试发现潜在问题的利器静态测试是软件开发过程中一个重要的环节,它通过检查代码和文档等静态资源,发现潜在的问题和缺陷,进而改善软件的质量。
本文将介绍几种常见的静态测试工具,它们在发现和解决问题上具有很高的效果和价值。
一、代码静态分析工具1. 静态代码扫描工具静态代码扫描工具是一种通过检查源代码中的潜在问题和错误,提供代码质量评估和改善建议的工具。
它能够发现一些常见的编码错误、未初始化变量、不安全的代码等问题。
常见的静态代码扫描工具有PMD、Checkstyle等。
2. 静态代码审查工具静态代码审查工具是一种通过对代码进行全面的审查和评估,找出代码中的问题和潜在风险的工具。
它能够识别代码中的不一致性、不标准的代码风格、潜在的逻辑错误等。
常见的静态代码审查工具有FindBugs、SonarQube等。
二、文档静态分析工具1. 静态文档扫描工具静态文档扫描工具是一种通过对文档中的内容进行扫描和分析,发现文档中的问题和错误的工具。
它能够发现文档中的格式错误、语法错误、规范性错误等。
常见的静态文档扫描工具有Grammarly、Hemingway Editor等。
2. 静态文档审查工具静态文档审查工具是一种通过对文档进行全面的审查和评估,找出文档中的问题和潜在风险的工具。
它能够识别文档中的不一致性、不完整的内容、潜在的错误等。
常见的静态文档审查工具有LanguageTool、Ginger等。
三、静态测试的优势1. 发现问题的效率高静态测试工具能够在软件开发的早期阶段就发现问题,避免将问题推迟到测试阶段才进行发现和解决,提高了问题发现和解决的效率。
2. 提升软件质量通过静态测试工具的使用,能够找出潜在的问题和缺陷,进而改善软件的质量,减少潜在的风险,提高软件的可靠性和稳定性。
3. 节省成本和时间静态测试工具的使用能够帮助开发团队及时发现和解决问题,避免将问题推迟到后期导致成本的增加和项目进度的延误。
四、静态测试的应用场景1. 代码开发阶段在代码开发阶段,利用静态测试工具进行代码的静态分析和审查,能够及时发现潜在的编码问题和错误,确保代码的质量和规范。
软件开发中的代码审查工具代码审查是软件开发过程中不可或缺的环节,它能够有效提高代码质量、减少bug产生,以及促进开发团队之间的协作和交流。
为了更高效地进行代码审查,开发人员可以采用各种代码审查工具来辅助完成任务。
本文将介绍几种常见的代码审查工具并分析其优势和适用场景。
一、静态代码分析工具静态代码分析工具主要通过对代码进行分析,检查其中的潜在问题和错误,以帮助开发人员尽早发现和修复潜在的bug。
这类工具通常会检查代码中的语法错误、代码风格违规、未使用的变量、空指针引用等常见问题,并给出相应的建议和警告。
1. SonarQubeSonarQube是一款功能强大的静态代码分析工具,支持多种编程语言。
它可以对代码质量进行全面的检查,并提供详细的报告和指导。
SonarQube不仅可以检查代码的规范性和可读性,还能检测出代码潜在的安全漏洞和性能问题。
开发人员可以根据报告中的提示进行修复和优化,从而提高代码的质量和可维护性。
2. FindBugsFindBugs是一款专注于Java代码的静态分析工具。
它能够自动检测出潜在的bug,如空指针引用、资源未释放等,并给出相应的修复建议。
FindBugs通过对代码进行反编译和语义分析,能够深入挖掘潜在的问题,并尽可能减少误报的情况。
开发人员可以通过FindBugs来提高代码的稳定性和可靠性。
二、版本控制工具版本控制工具能够对代码进行跟踪和管理,并提供代码审查的重要辅助功能。
通过版本控制工具,开发人员可以查看代码的历史变更,了解每个提交的内容和目的,并进行相应的审查和评估。
1. GitGit是一款分布式版本控制系统,广泛应用于软件开发领域。
它可以记录代码每次的更改,包括增加、删除和修改等操作,并提供强大的分支、合并和比较功能。
开发人员可以通过Git来进行代码审查,查看每次提交的具体内容,与其他人员进行讨论和评审。
2. SVNSVN是一款集中式版本控制系统,使用非常广泛。
sonarqube findbugs 实现原理SonarQube FindBugs 是一个开源的代码静态分析工具,它主要用于在 Java 代码中找出潜在的错误和漏洞。
FindBugs 使用静态分析技术对代码进行扫描,不需要运行时环境,也不需要编译后的字节码。
它基于字节码分析技术,通过对类文件(.class 文件)进行分析,以发现代码中的错误。
以下是 SonarQube FindBugs 实现原理的详细说明:一、下载和安装首先,需要从 SonarQube 官网下载 FindBugs 的 ZIP 文件,并解压到适当的位置。
然后,通过配置 SonarQube 的启动脚本(例如StartSonar.bat),将 FindBugs 集成到 SonarQube 中。
二、架构和组成FindBugs 的架构包括三个主要组件:FindBugs UI、FindBugs Plugin 和 FindBugs Engine。
FindBugs UI 用于展示分析结果和错误信息,FindBugs Plugin 是将 FindBugs 集成到 SonarQube 中的插件,FindBugs Engine 是执行实际分析的引擎。
三、工作原理FindBugs 使用静态分析技术对 Java 代码进行扫描。
它通过读取类文件(.class 文件)中的字节码信息,分析其中的指令和数据流,以发现潜在的错误和漏洞。
FindBugs 使用一组规则(称为检查器)来检查代码中的问题。
这些规则涵盖了常见的编程错误和安全漏洞,例如空指针异常、资源泄露、数据竞争等。
四、检查器的工作方式FindBugs 使用了一种称为“静态单赋值”(SSA)的中间表示形式来分析代码。
在这种表示形式中,每个变量只有一个赋值点,这有助于提高分析的精度。
FindBugs 通过遍历代码中的每个节点,对每个节点的操作进行静态单赋值分析,以确定可能存在的问题。
五、结果展示FindBugs 分析完成后,将结果展示在 SonarQube UI 中。
Java静态检测工具的简单介绍- Sonar、Findbugs2010-11-04 13:55:54标签:sonar休闲职场Java静态检测工具的简单介绍 from:/?p=9015静态检查:静态测试包括代码检查、静态结构分析、代码质量度量等。
它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。
代码检查代码检查包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;可以发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。
”。
看了一系列的静态代码扫描或者叫静态代码分析工具后,总结对工具的看法:静态代码扫描工具,和编译器的某些功能其实是很相似的,他们也需要词法分析,语法分析,语意分析...但和编译器不一样的是他们可以自定义各种各样的复杂的规则去对代码进行分析。
静态检测工具:1.PMD1)PMD是一个代码检查工具,它用于分析 Java 源代码,找出潜在的问题:1)潜在的bug:空的try/catch/finally/switch语句2)未使用的代码:未使用的局部变量、参数、私有方法等3)可选的代码:String/StringBuffer的滥用4)复杂的表达式:不必须的if语句、可以使用while循环完成的for循环5)重复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs2)PMD特点:1)与其他分析工具不同的是,PMD通过静态分析获知代码错误。
也就是说,在不运行Java程序的情况下报告错误。
2)PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题3)用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。
3)同时,PMD已经与JDeveloper、Eclipse、jEdit、JBuilder、BlueJ、CodeGuide、NetBeans、Sun JavaStudio Enterprise/Creator、IntelliJ IDEA、TextPad、Maven、Ant、Gel、JCreator以及Emacs 集成在一起。
4)PMD规则是可以定制的: 可用的规则并不仅限于内置规则。
您可以添加新规则:可以通过编写 Java 代码并重新编译 PDM,或者更简单些,编写 XPath 表达式,它会针对每个 Java 类的抽象语法树进行处理。
5)只使用PDM内置规则,PMD 也可以找到你代码中的一些真正问题。
某些问题可能很小,但有些问题则可能很大。
PMD 不可能找到每个 bug,你仍然需要做单元测试和接受测试,在查找已知 bug 时,即使是 PMD 也无法替代一个好的调试器。
但是,PMD 确实可以帮助你发现未知的问题。
1.FindBugs1)FindBugs是一个开源的静态代码分析工具,基于LGPL开源协议,无需运行就能对代码进行分析的工具。
不注重style及format,注重检测真正的bug及潜在的性能问题,尤其注意了尽可能抑制误检测(false positives)的发生。
以bytecode(*.class、*.jar)为对象进行检查。
除了单独动作,还可以用作Eclipse 的plug-in,以及嵌入Ant作为task之一进行利用。
2)findbugs自带检测器的介绍: findbugs自带60余种Bad practice,80余种 Correntness,1种Internationalization,12种Malicious codevulnerability,27种Multithreaded correntness,23种Performance, 43种Dodgy。
3)Findbugs的一些特点:1)FindBugs主要着眼于寻找代码中的缺陷,这就与其他类似工具有些区别了,直接操作类文件(class文件)而不是源代码。
2)FindBugs可以通过命令行、各种构建工具(如Ant、Maven等)、独立的Swing GUI或是以Eclipse和NetBeans IDE插件的方式来运行。
3)FindBugs输出结果既可以是XML的,也可以是文本形式的。
4)开发者可以通过多种方式来使用FindBugs,最常见的是在新编写模块的代码分析以及对现有代码进行更大范围的分析。
5)不注重style及format,注重检测真正的bug及潜在的性能问题,尤其注意了尽可能抑制误检测(false positives)的发生。
4)FindBugs可检测的bug pattern举例:检测java programing中容易陷入的bug pattern,equals() 实现时的一般规约违反Null pointer的参照,Method的返回值的check遗漏,初始化前field的访问, Multi-thread的正确性,同期化处理的矛盾,无条件的wait(), Code的脆弱性,可以变更的静态object ,内部数列参照的return等1.Checkstyle1)定义: Checkstyle是一款检查Java程序源代码样式的工具。
2)特点:1)它可以有效的帮助我们检视代码以便更好的遵循代码编写标准,特别适用于小组开发时彼此间的样式规范和统一。
2)Checkstyle提供了高可配置性,以便适用于各种代码规范,所以除了使用它提供的几种常见标准之外,你也可以定制自己的标准。
3)Checkstyle提供了支持大多数常见IDE的插件,大部分插件中就含有最新的Checkstyle,就不用费心再部署一份了。
4)Checkstyle可以检查代码的很多方面,从传统观点看,它主要是用来检查代码层面的,自从第三版以后,它的内部架构作了重大改变,很多其它意图的检测加了进来,现在Checkstyle可以检查像类设计的问题,重复代码,如锁的双重检查的bug模式。
3)CheckStyle的主要流程是:1)对Java文件进行词法语法分析,生成语法树。
2)载入配置文件(checkstyle-metadata.xml以及自定义的配置文件)register check事件。
3)按照深度优先遍历对语法树进行解析,按照注册的事件,在到达某些节点( AST ) 时进行style检查(AST,A child-Sibling Tree,是语法树中的某个节点,其类型在TokenTypes类中定义。
)4)我们所说的自定义Style的检查,就是在第二步设定的。
这里牵涉到一个叫com.puppycrawl.tools.checkstyle.api.Check 的类,我们通常需要重载其中的两个函数:public int[] getDefaultTokens()和public void visitToken(DetailAST ast). 这两个函数的含义为,在遍历语法树的过程中,每当到达getDefaultTokens函数所返回的AST类型,程序就进入visitToken进行具体的检查和分析,即,真正的分析检查过程是在visitToken中实现的。
1.Hammurapi1)定义: Hammurapi它是一个开源的代码审查/评审(review)工具。
它可以帮助改进 Java代码的质量。
它可以基于一套设计规范来分析代码库。
当它碰到违反规范的地方,会在报告中标识。
就像Checkstyle一样,它与Ant无缝集成并且由基于XML配置文件来驱动。
2)特点:1)Hammurapi是用来强制代码设计规范的。
2)Hammurapi是一个遵循设计的工具,提供了自动而且一致的方式来实现设计规范,因此使代码评审更加有效而轻松。
3)Hammurapi如何工作:Hammurapi这样的代码分析工具都带有语言分析器。
语言分析器是一种输入语言代码并输出抽象语法树的工具。
这个树上的节点代表语言标识。
例如,考虑一下简单的算术表达式:3+4. 语言分析器会解析他成为一个如图5所示的语法树。
在这个树中,节点+代表操作符标识。
节点3和4是操作数标识Hammurapi使用ANTLR(另一个语言识别工具)作为语言分析器。
然而ANTLR API是相当底层的。
为改善可用性,Hammurapi使用另一个API,基于ANTLR 的JSEL(Java源程序工程类库),来访问抽象语法树。
一旦树构建完成,一种树遍历算法就被用来访问树中每一个节点。
每次访问到一个节点,一种回调机制(Visitor模式)被用来提示相应的检查器。
在这些回调方法中,检查器收集相关的信息来确定是否有违反规范的地方存在。
1.Lint4j1)定义:Lint4J是一个针对Java的源代码分析工具,它可以对Java源码和字节码进行静态分析,判断其中是否存在死锁、性能问题或者伸缩性问题。
它可以集成到任何IDE种或构建系统2)特点:1)检测代码语法规则2)潜在的bug3)检测编码模式对代码可读性及大小的影响4)检测是否违反EJB规范1.Sonar1)定义:代码质量管理工具Sonar提供了设计与架构度量。
Sonar 2.0引入了针对Java应用的设计分析、架构与面向对象的度量,Sonar 2.1可以检测到未使用的方法以及对不建议使用方法的调用。
是一个集成了CheckStyle,PMD,Findbugs的代码校验规则 ,重复代码发现,代码测试覆盖率,代码注释率,及所有的检测率变化追踪的完美代码质量检查工具。
它包含了代码质量检测的七个方面,如下图2)特点:1)代码覆盖:通过单元测试,将会显示哪行代码被选中。
2)改善编码规则。
3)搜寻编码规则:按照名字,插件,激活级别和类别进行查询。
4)项目搜寻:按照项目的名字进行查询。
5)对比数据:比较同一张表中的任何测量的趋势。
6)单元测试3)Sonar2.1:Sonar还基于Squid引入了一个全新的规则引擎、Sonar解析器既可以处理源代码,也可以处理字节码,解析器带有内建的规则,可以检测未使用的私有与保护方法以及客户端对不建议使用的方法的调用。
Squid通过分析应用源代码、Java API和外部程序库的字节码来决定哪些方法、类和属性是不建议使用的。
Sonar 2.1的新特性:1)一个全新的“Libraries”页面,显示了项目中所有的程序库和依赖,该特性要求使用Maven来构建项目。
一旦在Sonar站点的主页上选择了一个项目,该服务就会以可视化的树形结构展示出项目依赖。
此外,还有一个可选的动态过滤器,可以根据名称过滤程序库以便在应用的依赖间导航。
2)用于搜索程序库使用情况的“Dependencies”页面。
比如说,可以搜索到使用了第三方框架如Commons Logging 1.1的所有项目。