IntelliJ IDEA for CleanCode

IntelliJ IDEA作为顶级Java开发工具,以其出色的重构能力、智能代码助手、自动提示等功能著称,支持J2EE、Ant、JUnit等,提供便捷的GUI设计与代码审查,是提升开发效率的首选。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


C++的重构代码工具

RefactorCpp

用于Visual Studio 2005,2008

http://www.devexpress.com/Produc ... Add-in/RefactorCPP/


Java的重构代码工具

Uncle Bob的CleanCode介绍时候一直在用Mac下的IntelliJ IDEA,这工具ms可以很方便地重构Java代码

IntelliJ IDEA被认为是当前Java开发效率最快的IDE工具。它整合了开发过程中实用的众多功能,几乎可以不用鼠标可以方便的完成你要做的任何事情,最大程度的加快开发的速度。简单而又功能强大。与其他的一些繁冗而复杂的IDE工具有鲜明的对比。



IDEA

http://baike.baidu.com/view/2735945.htm

IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、 J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。IDEA是 JetBrains公司的产品,这家公司总部位于 捷克共和国的首都 布拉格,开发人员以严谨著称的东欧 程序员为主。
IntelliJ IDEA是一个屡获殊荣的Java和Groovy开发环境,不过在现在Eclipse横行的世道,只剩下一些铁杆粉丝还在坚持使用此开发环境。
IntelliJ IDEA界面

  IntelliJ IDEA界面

IntelliJ IDEA被认为是当前Java开发效率最快的IDE工具。它整合了开发过程中实用的众多功能,几乎可以不用鼠标可以方便的完成你要做的任何事情,最大程度的加快开发的速度。简单而又功能强大。与其他的一些繁冗而复杂的IDE工具有鲜明的对比。 [1]
IntelliJ IDEA是Java语言开发的集成环境,在业界被公认为最好的Java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、 JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。以下简称IDEA。
主界面由6个主要区域组成(图中红色数字标注的)
1.菜单和工具栏
2.导航条:编辑文件时帮助定位和导航项目中的文件
3.状态栏:显示当前项目,IDEA本身的状态,还有别的一些状态相关的一些信息
4.编辑器
5.工具窗口:辅助类窗口。IDEA提供了各式各样的辅助窗口来帮助完成各种任务, 如项目管理,代码查找,版本控制等,类型eclipse中VIEW的概念,
6.工具窗口栏:位于IDEA界面的上下左右各有一个,摆放着工具窗口显示和隐藏的按键 [2]

IDEA所提倡的是智能编码,是减少程序员的工作,IDEA的特色功能有以下25点 [3]
●  智能的选取
在很多时候我们要选取某个方法,或某个循环或想一步一步从一个变量到整个类慢慢扩充着选取,IDEA就提供这种基于语法的选择,在默认设置中Ctrl+w,可以实现选取范围的不断扩充,这种方式在重构的时候尤其显得方便。
●  丰富的导航模式
IDEA提供了丰富的导航查看模式,例如ctrl+e显示最近打开过的文件,ctrl+n显示你希望显示的类名查找框(该框同样有智能补充功能,当你输入字母后IDEA将显示所有候选类名)。在最基本的project视图中,你还可以选择多种的视图方式。
●  历史记录功能
不用通过 版本管理服务器,单纯的IDEA就可以查看任何工程中文件的历史记录,但版本恢复时你可以很容易的将其恢复。
●  JUnit 的完美支持
●  对重构的优越支持
IDEA是所有IDE中最早支持重构的,其优秀的重构能力一直是其主要卖点之一。
●  编码辅助
Java规范中提倡的tostring(),hashcode(),equals(),以及所有的get/set方法,你可以不用进行任何的输入就可以实现代码的自动生成,从而把你从无聊的基本方法编码中解放出来。
●  灵活的排版功能
基本所有的IDE都有重 排版功能,但仅有IDEA的是人性的,因为她支持排版模式的定制,你可以根据不同的项目要求采用不同的排版方式。
●  XML 的完美支持
●  动态语法检测
任何不符合java规范,自己预定义的规范,累赘都将在页面中加亮显示。
●  代码检查
对代码进行自动分析,检测不符合规范的,存在风险的代码,并加亮显示。
●  对JSP的完全支持
不需要任何的 插件,完全支持 JSP
●  智能编辑
代码输入过程中,自动补充方法或类。
●  EJB支持
不需要任何插件完全支持 EJB(6.0 支持 ejb3.0)
●  列编辑模式
用过UtralEdit的肯定对其的列编辑模式赞赏不已,因为她减少了很多很多的无聊重复工作,而IDEA完全支持该模式,从而更加提高了编码效率。
●  预置模板
预置模板可以让你把经常用到的方法编辑进模板,使用时你只用输入简单的几个字母就可以完成全部代码的编写。例如使用 比较高的public static void main(String[] args){}你可以在模板中预设pm为该方法,输入时你只要输入pm再按代码辅助键,IDEA将完成代码的自动输入。
●  完美的自动代码完成
智能检查类中方法,当发现方法名只有一个时自动完成代码输入,从而减少剩下代码的编写工作。
●  Ant 支持
不需要任何的第三方插件。
●  不使用代码检查
自动检查代码中不使用的代码,并给出提示,从而使代码更高效。
●  智能代码
自动检查代码,发现与预置规范有出入的代码给出提示,若程序员同意修改自动完成修改。例如代码:String str = "Hello Intellij " + "IDEA"; IDEA将给出优化提示,若程序员同意修改IDEA将自动将代码修改为:String str = "Hello Intellij IDEA";
●  正则表达的查找和替换功能
查找替代支持正则表达,从而提高效率。
●  JavaDoc 预览支持
支持JavaDoc的预览功能,在JavaDoc代码中ctrl+q显示JavaDoc的结果,从而提高doc文档的质量。
●  程序员意图支持
程序员编码时IDEA时时检测你的意图,或提供建议,或直接帮你完成代码。

最突出的功能自然是调试(Debug),可以对Java代码,JavaScript,JQuery,Ajax等技术进行调试。
其他编辑功能抛开不看,这点远胜Eclipse。
首先查看Map类型的对象,如果实现类采用的是哈希映射,则会自动过滤空的Entry实例。 不像Eclipse,只能在默认的toString()方法中寻找你所要的key。
其次,需要动态Evaluate一个表达式的值,比如我得到了一个类的实例,但是并不知晓它的API,可以通过Code Completion点出它所支持的方法,这点Eclipse无法比拟。

最后,在 多线程调试的情况下,Log on console的功能可以帮你检查多线程执行的情况。




转载于:https://my.oschina.net/alphajay/blog/152327

<think>好的,我现在需要解决用户遇到的Maven编译错误,具体是“For input string: ""”的问题,同时用户提到使用的是JDK17,可能涉及maven.multiModuleProjectDirectory、plexus-classworlds和maven-resources-plugin。首先,我需要分析这个错误的常见原因,然后结合用户的引用内容来寻找解决方案。 首先,用户提供的引用中有多个关于Maven插件版本问题的解决案例。比如引用[1]和[2]提到修改maven-resources-plugin的版本来解决打包错误,引用[4]提到升级maven-plugin-plugin版本来兼容JDK9+环境。这可能意味着当前用户的错误也是由于插件版本与JDK17不兼容导致的。 错误信息“For input string: ""”通常发生在尝试将空字符串转换为数值类型时,比如Integer.parseInt()。在Maven项目中,这可能与插件配置中的某个属性有关,该属性预期是一个数值但实际为空。例如,可能在pom.xml中引用了某个属性,但该属性未正确设置,导致解析失败。 接下来,我需要考虑用户的环境是JDK17,而高版本的JDK可能带来与旧版Maven插件的兼容性问题。例如,引用[4]中提到的maven-plugin-plugin在JDK9+下需要升级到3.15.1。类似地,maven-resources-plugin可能需要更高版本来支持JDK17。 可能的解决步骤包括: 1. 检查pom.xml中的属性是否正确设置,尤其是数值类型的属性,如资源过滤中的占位符是否有未定义或空值的情况。 2. 升级相关Maven插件,特别是maven-resources-plugin,到兼容JDK17的版本。根据引用[2],版本2.7或3.3.0可能有效。 3. 确保Maven本身的版本足够新,支持JDK17。建议使用Maven 3.8.6或更高版本。 4. 检查资源文件中的过滤符号是否正确,避免意外触发属性替换。 5. 如果存在多模块项目,确认maven.multiModuleProjectDirectory是否正确配置,或者尝试在IDE中设置MAVEN_OPTS环境变量。 另外,用户提到的plexus-classworlds可能与类加载器有关,但通常升级Maven和插件版本可以解决这类问题。需要指导用户逐步排查,从升级插件开始,再检查属性配置,最后考虑Maven版本和环境设置。</think>针对Maven项目在JDK17环境下编译时报错“For input string: ""”的问题,以下是分步解决方案: --- ### **问题分析** 该错误通常由以下原因导致: 1. **插件版本不兼容JDK17**:旧版Maven插件(如`maven-resources-plugin`)对高版本JDK支持不足,解析空字符串时触发异常[^4] 2. **属性占位符未正确配置**:资源过滤(`<filtering>true</filtering>`)中存在未赋值的占位符(如`${undefined.property}`),导致空字符串被尝试转换为数值[^3] 3. **多模块项目路径问题**:`maven.multiModuleProjectDirectory`环境变量未正确设置(常见于IDE环境)[^3] --- ### **解决方案** #### **1. 升级Maven插件版本** 修改`pom.xml`中相关插件的版本以适配JDK17: ```xml <!-- 升级maven-resources-plugin --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.3.0</version> <!-- 或3.3.1 --> <dependencies> <dependency> <groupId>org.apache.maven.shared</groupId> <artifactId>maven-filtering</artifactId> <version>3.3.1</version> <!-- 兼容性依赖 --> </dependency> </dependencies> </plugin> </plugins> </build> ``` *说明:高版本插件修复了JDK17下的资源过滤逻辑问题[^2][^4]* --- #### **2. 检查资源过滤占位符** 排查资源文件(如`.properties`或`.yml`)中的属性占位符: - **错误示例**:`port=${server.port}`(若`server.port`未定义则解析为空) - **修复方法**: - **方案1**:在`pom.xml`中定义默认值 ```xml <properties> <server.port>8080</server.port> <!-- 显式赋值 --> </properties> ``` - **方案2**:关闭资源过滤(不推荐) ```xml <resource> <directory>src/main/resources</directory> <filtering>false</filtering> <!-- 关闭过滤 --> </resource> ``` --- #### **3. 配置多模块项目路径** 在IDE(如IntelliJ IDEA)中设置环境变量: - **步骤**: 1. 打开运行配置(Run/Debug Configurations) 2. 添加环境变量:`MAVEN_OPTS=-Dmaven.multiModuleProjectDirectory=$MAVEN_HOME` 3. 确保`MAVEN_HOME`指向正确路径(如`/usr/local/maven`) --- #### **4. 更新Maven版本** 使用**Maven 3.8.6+**(原生支持JDK17): - 下载地址:https://maven.apache.org/download.cgi - 验证版本: ```bash mvn -v Apache Maven 3.8.6 ``` --- ### **验证步骤** 1. 执行清理并重新编译: ```bash mvn clean compile -U ``` 2. 若仍报错,启用调试模式定位具体文件: ```bash mvn -X resources:resources ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值