栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Scala 的代码风格怎么统一?这份 scalastyle 配置你可以无脑复制

Scala 的代码风格怎么统一?这份 scalastyle 配置你可以无脑复制

前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系

正文

本文参考 Apache Spark 的 scalastyle 配置。

首先需要在 pom.xml 里面新增 scalastyle 的 plugin。

pom.xml

先定义 2 个和文件字符编码相关的全局变量。


        UTF-8
        UTF-8

配置 scalastyle-maven-plugin

				
                    org.scalastyle
                    scalastyle-maven-plugin
                    1.0.0
                    
                        false
                        true
                        false
                        false
                        ${basedir}/src/main/scala
                        ${basedir}/src/test/scala
                        scalastyle-config.xml
                        ${basedir}/target/scalastyle-output.xml
                        ${project.build.sourceEncoding}
                        ${project.reporting.outputEncoding}
                    
                    
                        
                            
                                check
                            
                        
                    
                

在项目根目录下定义 scalastyle 的配置文件:scalastyle-config.xml

scalastyle-config.xml 可以无脑复制的部分


    Scalastyle standard configuration

    
    
    

    
    

    
    

    
    

    
    

    
    
        
            
            
            true
        
    

    
    
        
            
        
    

    
    
        
            
        
    

    
    
        
            
        
    

    
    
        
            
        
    

    
    

    
    

    
    

    
    

    
    
        
            
            
        
    

    
    

    
    

    
    

    
    

    
    
        
            ARROW, EQUALS, ELSE, TRY, CATCH, FINALLY, LARROW, RARROW
        
    

    
    
        
            ARROW, EQUALS, COMMA, colon, IF, ELSE, DO, WHILE, FOR, MATCH, TRY, CATCH, FINALLY,
                LARROW, RARROW
            
        
    

    
    

    
    
        
            ^println$
        
        
    

    
    
        
            mutable.SynchronizedBuffer
        
        
    

    
    
        
            Class.forName
        
        
    

    
    
        
            (.toUpperCase|.toLowerCase)(?!((|(Locale.ROOT)))
        
        
    

    
    
        
            throw new w+Error(
        
        
    

    
    
        
            JavaConversions
        
        不要去隐式导入 scala.collection.JavaConversions._ 了, 导入
            scala.collection.JavaConverters._ 并且使用 .asScala / .asJava 方法
        
    

    
    
        
            extractOpt
        
        使用 jsonOption(x).map(.extract[T]) 来替代 .extractOpt[T],因为后者太低级了。
        
    

    
    
        
            COMMA
        
    

    
    
        
            ){
        
        
    

    
    
        
            (?m)^(s*)/[*][*].*$(r|)n^1 [*]
        
        多行注释使用 Javadoc 风格的行首缩进
    

    
    
        
            case[^n>]*=>s*{
        
         case 子句省略括号
    

    
    

    
    

    
    
        
            
        
        
    

    
    
    

    
    

    
    
    
    

    
    
        
            
        
    

    
    

    
    
    

    
    
        
            
        
    

    
    

    
    

    
    
    

    
    
    

    
    

    
    
        
            800>
        
    

    
    
        
            30
        
    

    
    
        
            10
        
    

    
    
        
            50
        
    

    
    
        
            
        
    

    
    
        
            -1,0,1,2,3
        
    

需要自定义配置的部分
	
    
        
            java,scala,3rdParty,shockang
            javax?..*
            scala..*
            (?!com.shockang.study.spark.).*
            com.shockang.study.spark..*
        
    
可选部分
	
    
        
            spark(.sqlContext)?.sparkContext.hadoopConfiguration
        
        
    

    
    
        
            Runtime.getRuntime.addShutdownHook
        
        
    

	
    
        
            Class.forName
        
        
    

    
    
        
            Await.result
        
        
    

    
    
        
            Await.ready
        
        
    

	
    
        
            org.apache.commons.lang.
        
        使用 Commons Lang 3 的类 (包 org.apache.commons.lang3.*) ,不要去使用
            Commons Lang 2 了(包 org.apache.commons.lang.*)
        
    

    
    
        
            FileSystem.get([a-zA-Z_$][a-zA-Z_$0-9]*)
        
        
    

	
    
        
            Objects.toStringHelper
        
        避免使用 Object.toStringHelper。使用 ToStringBuilder 来替代。
    

笔者后续会开源一些 scala 工程,里面使用了上面的 scalastyle 配置,敬请期待。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/581444.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号