idea企业环境搭建
一 配置jdk
在"系统变量"中设置3项属性,JAVA HOME, PATH, CLASSPATH(大小写无所谓),若已存在则点击编辑,不存在则点击新建
变量名: JAVA HOME
变量值: C:/Java/jdk1.8.0 151 [注意]要根据自己的实际路径配置
变量名: CLASSPATH(idk1.8以前)
变量值: .;%JAVA_HOME%/lib/dt.jar; %JAVA HOME%/lib/tools.jar; [注意]前面有个.;
变量名: Path
变量值: %JAVA_HOME%/bin;%JAVA_HOME%/jre/bin; [注意] PATH中的变量值为新增的,不要删掉原来有的值
检验 cmd后输入键入命令: java -version命令
二 安装idea,设置相应系统的bit (64-bit launcher)配置
在开发过程中,在一个类中对同一个类的方法或依赖包引用次数变多时,idea可能会将这个被引用的类或依赖包变为类似exampl.package.的格式,比如import org.springframework.web.bind.annotation., 这不符合代码规范。
导致这个的原因主要是idea中的一个属性设置,Settings-> Editor-> Code Style-> Java-> Imports,如下图,对图中的两个属性Class count to use import with "*和Names count to use static import with大设置为较大的数值即可

1) Maven配置
在安装好IDEA之后,需要在IDEA配置Maven仓库的相关信息,一般公司会提供maven settings文件模板,在本地新建settings.xml并把Mave源配置拷贝进去修改保存。
需要maven在settings并中存储加密密码(根据公司要求来定)
配置环境变量:
- 在计算机-属性-高级系统设置环境变量中,在系统变量栏下单击新建,创建新的系统环境变量:
- 新建-变量名"MAVEN_HOME’",变量值为“[IDEA安装路径] “\plugins\maven\lib\maven3”;如C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.2.2\plugins\maven\lib\maven3
- 编辑path变量, 增加"%MAVEN HOME%\bin":
在IDEA的File-> Settings -> Build,Execution,Deployment -> Build Tools -> Maven中,在User setting files 中配置maven的setting文件,如下图所示,点击0K或Apply即可完成IDEA中对Maven的配置。详细的Maven可参考: maven的相关资料。

2)CheckStyle安装配置
安装CheckStyle插件
Checkstyle是Idea的用于检验代码开发规范的插件。
插件Checkstyle下载(一般公司会提供,自己电脑可以直接在插件中搜索安装)
选择File-> Settings-Plugins,从本地安装插件(Install plugin from disk…),选择CheckStyle-IDEA-5.22.0ZiP.
安装后需重启IDEA,重启完成后可看下方出现CheckStyle模块。
●配置CheckStyle
checkstyle.xml(一般公司会提供"checkstyle.xml")
选择File -> Setting -> Other Settings -> Checkstyle ,选择工程/scripts/pipline/checkstyte.xml。
安装完毕之后需要配置Checktyle,以下是对配置的过程和配置属性的说明。
1.下图中检查范围选项分别为:仅java源文件(不含测试)、仅java源文件(包含测试)、所有源文件(不会测试)、所有源文件(包含测试、工程中所有文件。我们选择:仅java源文件(不含测试)。

2.输入如图所示,点击Next核对后,勾选Apply就可以使用checkstyle规则了。(以下是我用的,也可以参考后面自己改)
DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN""http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker"><property name="severity" value="error"/><property name="charset" value="UTF-8"/><module name="TreeWalker"><module name="JavadocMethod"><property name="suppressLoadErrors" value="true"/><property name="allowUndeclaredRTE" value="true"/><property name="allowMissingPropertyJavadoc" value="true"/><property name="allowMissingThrowsTags" value="true"/><property name="allowMissingParamTags" value="true"/>module><module name="JavadocVariable"/><module name="JavadocStyle"><property name="checkEmptyJavadoc" value="true"/><property name="checkFirstSentence" value="false"/><property name="checkHtml" value="false"/><message key="javadoc.missing" value="空白注释,请确保注释中文中至少留有一行纯中文功能描述注释"/>module><module name="JavadocType"><property name="scope" value="public"/><property name="allowMissingParamTags" value="true"/><property name="allowUnknownTags" value="true"/><property name="authorFormat" value="[\u4e00-\u9fa5]"/><message key="javadoc.missing" value="类注释:缺少Javadoc注释.或者作者格式没按照@author + 中文姓名来注释"/>module><module name="AnnotationUseStyle"><property name="elementStyle" value="ignore"/><property name="trailingArrayComma" value="ignore"/><property name="closingParens" value="ignore"/>module><module name="AvoidStarImport"><property name="severity" value="error"/><message key="import.avoidStar" value="请不要使用''.*''进行import - {0}."/>module><module name="NestedTryDepth"><property name="max" value="3"/>module><module name="SuperClone"/><module name="SuperFinalize"/><module name="DefaultComesLast"/><module name="StringLiteralEquality"><metadata name="net.sf.eclipsecs.core.comment" value="String比较请使用equals"/><property name="severity" value="error"/><message key="string.literal.equality" value="String比较请使用equals(),而不是''{0}''."/>module>module><module name="RegexpSingleline"><metadata name="net.sf.eclipsecs.core.comment" value="不允许使用System.out.print"/><property name="severity" value="error"/><property name="format" value="System\.out\.print"/><property name="message" value="不允许使用System.our.print,请使用log4j"/>module>
module>

根据自己的需求在此基础上修改
DOCTYPE module PUBLIC"-//Puppy Crawl//DTD Check Configuration 1.3//EN""http://www.puppycrawl.com/dtds/configuration_1_3.dtd"><module name="Checker"><module name="TreeWalker"> <module name="JavadocType"> <property name="authorFormat" value="\S"/> <property name="scope" value="protected"/> <property name="versionFormat" value="\$Revision.*\$"/> <property name="excludeScope" value="public"/> <property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/> module> <module name="JavadocMethod"> <property name="scope" value="private"/> <property name="allowMissingParamTags" value="false"/> <property name="allowMissingThrowsTags" value="false"/> <property name="allowMissingReturnTag" value="false"/> <property name="tokens" value="METHOD_DEF"/> <property name="allowUndeclaredRTE" value="true"/> <property name="allowThrowsTagsForSubclasses" value="true"/> <property name="allowMissingPropertyJavadoc" value="true"/> module> <module name="JavadocVariable"> <property name="scope" value="private"/> module> <module name="AbstractClassName"> <property name="format" value="^Abstract.*$|^.*Factory$"/> module> <module name="ConstantName"> <property name="format" value="^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/> module> <module name="LocalFinalVariableName"> <property name="format" value="^[A_Z][A-Z0-9]*(_[A_Z0-9]+)*$"/> module> <module name="LocalVariableName"> <property name="format" value="^[a-z][a-zA-Z0-9]*$"/> module> <module name="MemberName"> <property name="format" value="^[a-z][a-zA-Z0-9]*$"/> <property name="applyToPublic" value="true"/> <property name="applyToProtected" value="true"/> <property name="applyToPackage" value="true"/> <property name="applyToPrivate" value="true"/> module> <module name="MethodName"> <property name="format" value="^[a-z][a-zA-Z0-9]*$"/> module> <module name="PackageName"> <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/> module> <module name="ParameterName"> <property name="format" value="^[a-z][a-zA-Z0-9]*$"/> module> <module name="StaticVariableName"> <property name="format" value="^[a-z][a-zA-Z0-9]*$"/> module> <module name="TypeName"> <property name="format" value="^[A-Z][a-zA-Z0-9]*$"/> <property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/> module> <module name="AvoidStarImport"> <property name="excludes" value="java.io,java.util"/> module> <module name="IllegalImport"/> <module name="ImportOrder"> <property name="groups" value="java,javax"/> <property name="ordered" value="true"/> <property name="separated" value="true"/> <property name="caseSensitive" value="true"/> module> <module name="RedundantImport"/><module name="UnusedImports"/> <module name="AnonInnerLength"> <property name="max" value="20"/> module> <module name="ExecutableStatementCount"> <property name="max" value="20"/> <property name="tokens" value="CTOR_DEF,METHOD_DEF,STATIC_INIT,INSTANCE_INIT"/> module> <module name="FileLength"> <property name="max" value="1000"/> module> <module name="LineLength"> <property name="max" value="80"/> <property name="ignorePattern" value="^ *\* *[^ ]+$"/> module> <module name="MethodLength"> <property name="max" value="100"/> <property name="countEmpty" value="true"/> <property name="tokens" value="METHOD_DEF"/> module> <module name="ParameterNumber"> <property name="max" value="10"/> <property name="tokens" value="METHOD_DEF,CTOR_DEF"/> module> <module name="EmptyForInitializerPad"> <property name="option" value="space"/> module> <module name="EmptyForIteratorPad"> <property name="option" value="space"/> module> <module name="NoWhitespaceAfter"/> <module name="NoWhitespaceBefore"/> <module name="OperatorWrap"> <property name="tokens" value="ASSIGN, DIV, DIV_ASSIGN, PLUS_ASSIGN, MINUS, MINUS_ASSIGN, STAR, STAR_ASSIGN, MOD, MOD_ASSIGN, SR, SR_ASSIGN, BSR, BSR_ASSIGN, SL, SL_ASSIGN, BXOR, BXOR_ASSIGN, BOR, BOR_ASSIGN, BAND, BAND_ASSIGN,PLUS, QUESTION"/> <property name="option" value="eol"/> module> <module name="MethodParamPad"> <property name="allowLineBreaks" value="false"/> <property name="option" value="space"/> <property name="tokens" value="METHOD_DEF,CTOR_DEF"/> module> <module name="ParenPad"> <property name="option" value="nospace"/> module> <module name="TypecastParenPad"> <property name="option" value="space"/> module> <module name="TabCharacter"/> <module name="WhitespaceAfter"> <property name="tokens" value="COMMA,SEMI,TYPECAST"/> module> <module name="WhitespaceAround"> <property name="tokens" value="ASSIGN"/> module> <module name="ModifierOrder"/> <module name="RedundantModifier"> <property name="tokens" value="METHOD_DEF,VARIABLE_DEF"/> module> <module name="AvoidNestedBlocks"> <property name="allowInSwitchCase" value="true"/> module><module name="EmptyBlock"> <property name="option" value="stmt"/> module><module name="LeftCurly"> <property name="option" value="eol"/> <property name="maxLineLength" value="80"/> <property name="tokens" value="CLASS_DEF,INTERFACE_DEF,METHOD_DEF,CTOR_DEF"/> module><module name="NeedBraces"/><module name="RightCurly"> <property name="option" value="alone"/> <property name="tokens" value="LITERAL_TRY"/> module> <module name="AvoidInlineConditionals"/><module name="CovariantEquals"/> <module name="DefaultComesLast"/><module name="EmptyStatement"/><module name="EqualsHashCode"/><module name="ExplicitInitialization"/><module name="FallThrough"/><module name="FinalLocalVariable"/> <module name="HiddenField"/><module name="IllegalInstantiation"/><module name="IllegalCatch"/><module name="InnerAssignment"/><module name="MagicNumber"><property name="ignoreNumbers" value="0, 1"/><property name="ignoreAnnotation" value="true"/>module><module name="MissingSwitchDefault"/><module name="ModifiedControlVariable"/><module name="MultipleStringLiterals"> <property name="allowedDuplicates" value="3"/> module><module name="MultipleVariableDeclarations"/><module name="NestedIfDepth"> <property name="max" value="1"/> module><module name="NestedTryDepth"> <property name="max" value="3"/> module><module name="PackageDeclaration"/><module name="ParameterAssignment"/><module name="RedundantThrows"> <property name="allowUnchecked" value="true"/> <property name="allowSubclasses" value="true"/> module><module name="RequireThis"> <property name="checkFields" value="false"/> <property name="checkMethods" value="false"/> module><module name="Regexp"><property name="format" value="System\.out\.println"/><property name="illegalPattern" value="true"/>module><module name="ReturnCount"> <property name="max" value="3"/> module><module name="SimplifyBooleanExpression"/><module name="SimplifyBooleanReturn"/> <module name="StringLiteralEquality"/><module name="SuperClone"/> <module name="SuperFinalize"/><module name="ArrayTrailingComma"/><module name="UnnecessaryParentheses"/><module name="DesignForExtension"/><module name="FinalClass"/><module name="HideUtilityClassConstructor"/><module name="InterfaceIsType"> <property name="allowMarkerInterfaces" value="true"/> module><module name="ThrowsCount"> <property name="max" value="7"/> module><module name="VisibilityModifier"> <property name="packageAllowed" value="false"/> <property name="protectedAllowed" value="false"/> <property name="publicMemberPattern" value="^seriaVersionUID$"/> module><module name="StrictDuplicateCode"> <property name="min" value="7"/> <property name="charset" value="UTF-8"/> module> <module name="BooleanExpressionComplexity"> <property name="max" value="7"/> module><module name="ClassDataAbstractionCoupling"> <property name="max" value="7"/> module><module name="CyclomaticComplexity"> <property name="severity" value="ignore"/> module><module name="ArrayTypeStyle"> <property name="javaStyle" value="true"/> module><module name="FinalParameters"/><module name="Indentation"> <property name="basicOffset" value="4"/> <property name="braceAdjustment" value="0"/> <property name="caseIndent" value="4"/> module><module name="NewlineAtEndOfFile"/><module name="Translation"> <property name="severity" value="info"/> module><module name="UncommentedMain"> <property name="excludedClasses" value="^$"/> module><module name="UpperEll"/>module>module>
3.配置完成后,在IDEA下方的CheckStyle模块可以看到对代码规范的检查结果。下图为示例检查结果。
3) Lombok插件安装
Lombok是一个java实用工具, 可以帮助开发人员消除java的冗长,例如使用GCetter可以让代码在编译时自动生etter方法。为了使idea不在代码检测时报错,需要安装对应播件。
Lombok的下载
注意:如果Idea版本使用的是2020版的,则需要下载对应版本的Lombok插件:
Lombok的下载
选择File -> Setting -> Plugins,从本地安装插件,选择lombok plugin-0.19-2018.EAP-mercurylog1.0.zip。
激活
安装后需重启IDEA,重启完成后可以在使用lombok组件时不出现代码检测错误。
在配置好Lombok之后,需要在工程中导入maven,才能在开发中使用ombok的注解。这里是在工程的pom.xml文件中的lombok依赖。
需要导入相应的依赖
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>
4) SonarLint插件安装
Sonar是款代码质量管理 工具,SonarLint是Sonar的插件名称。
支持版本: 2016.3.8
SonarLint插件下载
安装
点击File-> Settings。
- 在弹出框内左侧点击Plugins, 点击右侧齿轮按钮,选择Install Plugin from Disk.
安装后需重启IDEA
本地使用 - 点击View-SonarLint,添加SonarLint面板

点击绿色执行按钮,可分析当前选定文件。在项目上右键SonarLint-Analyzewith
SonarLint可分析整个项目。
点击File-Settings,打开设置面板,在OtherSettings中选中,SonarLintGeneralSettings. 勾选Automatically trigger analysis即可自动扫描。
Tools->SonarLInt

需要手动分析,可右击项目或文件,点击SonarLint-Analyze

分析结果中的问题,可跳转至具体代码行,右侧可查看具体规则。

服务器配置
在SonarLint面板,点击工具按钮,可对项目进行配置,也可通过File-Settings, Other Settings-SonarLint Project Settings对SonarQube服务器进行配置。
●. 勾选Enable binding to remote SonarQube Server, 点击Configure servers. 对服务器进行具体配置。

点击加号,在弹出的对话框中输入配置名称,选择右侧SonarQube, 输入服务器地址例如:http://127.0.0.1:8080 (针对新项目)。

(next)下一步
●登陆方式选择账户密码式(一般公司会提供)
配置完成后,在Bind to server中选择刚才配置的服务器,在下方的SonarQube Project中输入想要关联的工程,点击Search in ls查找,关联即可。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
