V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
blindpirate
V2EX  ›  Java

帮助阿里巴巴遵守阿里巴巴规范(第二季)

  •  
  •   blindpirate ·
    blindpirate · 2019-03-14 06:39:27 +08:00 · 7064 次点击
    这是一个创建于 2080 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前情提要: https://www.v2ex.com/t/543954

    想要为开源项目做贡献,但是苦于找不到门路?请加入我,一起向阿里巴巴提交 PR,修正阿里巴巴的开源项目中违背 https://github.com/alibaba/p3c 规范的代码吧!许多人向开源社区做贡献就是 fix typo/code style 开始的,我也不例外。现在有一个好机会向知名项目提交代码,并且十分容易!

    方法参见: https://github.com/blindpirate/does-alibaba-follow-their-own-guidelines/blob/master/README.md#%E5%B8%AE%E5%8A%A9%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E9%81%B5%E5%AE%88%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E8%A7%84%E8%8C%83

    • 在仓库列表中挑选一个你喜欢的、未使用 p3c-pmd 的项目。注意选择活跃项目,否则可能处于无人维护状态,这可以通过项目提交状态甄别。
    • pom.xml中加入:
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>3.8</version>
        <configuration>
          <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
          <targetJdk>1.8</targetJdk>
          <printFailingErrors>true</printFailingErrors>
          <rulesets>
            <ruleset>rulesets/java/ali-comment.xml</ruleset>
            <ruleset>rulesets/java/ali-concurrent.xml</ruleset>
            <ruleset>rulesets/java/ali-constant.xml</ruleset>
            <ruleset>rulesets/java/ali-exception.xml</ruleset>
            <ruleset>rulesets/java/ali-flowcontrol.xml</ruleset>
            <ruleset>rulesets/java/ali-naming.xml</ruleset>
            <ruleset>rulesets/java/ali-oop.xml</ruleset>
            <ruleset>rulesets/java/ali-orm.xml</ruleset>
            <ruleset>rulesets/java/ali-other.xml</ruleset>
            <ruleset>rulesets/java/ali-set.xml</ruleset>
          </rulesets>
        </configuration>
        <executions>
          <execution>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>com.alibaba.p3c</groupId>
            <artifactId>p3c-pmd</artifactId>
            <version>1.3.6</version>
          </dependency>
        </dependencies>
      </plugin>
    
    • 运行mvn clean install -DskipTests -DminimumPriority=1,修正列出的 violations。如果你拿不准如何修改,可以使用@SuppressWarnings("PMD.<RuleName>")(这是编译期注解,放心使用),这样至少可以保证未来的代码不会变得更差。
    • 提交 PR。
    • 加分项:你可以尝试不加-DminimumPriority=1,修正所有 violations。代价是工作量可能增长数倍。

    非常简单,唯一困难的地方就是迈出第一步。我向 arthas 项目提交了一个 PR 作为样例: https://github.com/alibaba/arthas/pull/568

    可以看到几乎都是体力活,十五分钟足够了。

    欢迎 review 我的 PR。有任何问题欢迎在此贴中讨论。

    第 1 条附言  ·  2019-03-14 09:55:07 +08:00
    阿里开源项目的负责人已经联系我了。我们碰巧很久前就认识。
    第 2 条附言  ·  2019-03-14 14:38:34 +08:00
    59 条回复    2019-03-15 11:48:51 +08:00
    blindpirate
        1
    blindpirate  
    OP
       2019-03-14 06:40:09 +08:00   ❤️ 3
    @PP 我已经提交了两个 PR 了,你呢?你还在那里高谈阔论么?
    pabupa
        2
    pabupa  
       2019-03-14 07:39:05 +08:00   ❤️ 1
    你发高烧了吧…………
    blindpirate
        3
    blindpirate  
    OP
       2019-03-14 07:51:08 +08:00   ❤️ 1
    @pabupa 我刚数了一下我迄今为止已经在 GitHub 上提交了 365 个 PR 了,可能发了 365 次高烧吧。
    mswlander
        4
    mswlander  
       2019-03-14 07:51:59 +08:00 via Android   ❤️ 1
    工作量不够饱和。。。
    skd918
        5
    skd918  
       2019-03-14 07:57:55 +08:00 via Android
    你气量可真够可以的
    KinneyZhang
        6
    KinneyZhang  
       2019-03-14 08:00:47 +08:00   ❤️ 1
    意思是阿里自己的项目代码没有遵守自己的规范?有点滑稽^o^
    PALELESS
        7
    PALELESS  
       2019-03-14 08:12:18 +08:00 via Android   ❤️ 1
    这不算为开源做贡献,这算杠,写代码的人八成很感谢你来修人家的代码
    fzy0728
        8
    fzy0728  
       2019-03-14 09:01:04 +08:00
    工作量不饱和...
    hirasawayui
        9
    hirasawayui  
       2019-03-14 09:03:12 +08:00
    这也算开源?
    honeycomb
        10
    honeycomb  
       2019-03-14 09:03:48 +08:00 via Android
    不错
    hhhsuan
        11
    hhhsuan  
       2019-03-14 09:05:40 +08:00 via Android
    支持,阿里的规范自己都不遵守,拿出来忽悠人
    jeffersonpig
        12
    jeffersonpig  
       2019-03-14 09:11:33 +08:00
    阿里付我工资了吗我就要帮它?总觉得是阿里的人自己推规范推不动,想利用外面的人来施加压力,大家千万别上当受骗被利用做了免费苦力
    VoidChen
        13
    VoidChen  
       2019-03-14 09:35:02 +08:00
    BLOCK,感觉 V2 也快呆不下去了,一楼还 @PP,还删了假装什么都没发生= =
    binux
        14
    binux  
       2019-03-14 09:45:22 +08:00   ❤️ 1
    这很正常,这在开源中很正常,无论是在国内还是国外都很正常。
    当年那个给我项目提 pep8 的,人家现在已经是 CTO 了。
    yhxx
        15
    yhxx  
       2019-03-14 09:50:21 +08:00   ❤️ 1
    @hirasawayui 这都不算,难道只有 “致阿里巴巴,此人不值得”,这样才算?
    morethansean
        16
    morethansean  
       2019-03-14 09:51:08 +08:00
    @VoidChen 哈哈哈,看原文我觉得 PP 言辞和善观点也挺正的,不知道楼主为啥这么杠……
    mingqing
        17
    mingqing  
       2019-03-14 09:51:10 +08:00
    规范是经历过大量基础实践才总结出来的,原先的实践也必须通过一定的时间去迭代改进,不可能一出规范所有的项目都一定遵守(主要是给新项目做标准)
    huangdayu
        18
    huangdayu  
       2019-03-14 09:51:12 +08:00 via Android
    声援
    VoidChen
        19
    VoidChen  
       2019-03-14 10:03:04 +08:00
    @morethansean 大概是“除了我以外在座各位都是键盘侠,别瞎 BB 打扰到我用 TNT 提 PR 了”。其实事情本身是件好事,想要改变整个环境规范也非一日之功,就是心急了想提前摘果子= =
    leeloc
        20
    leeloc  
       2019-03-14 11:53:46 +08:00
    支持。看看这些冷嘲热讽的,还言辞和善观点正
    abmin521
        21
    abmin521  
       2019-03-14 12:07:38 +08:00 via Android
    这种帖子大多反对上一个观点
    不管怎么说 我是支持的
    这就像有些人总是让别人早睡早起 自己却天天熬夜一样
    还有一个不得不面对的现实 有一部分人只关注能用就行 而不是尽力优化。
    Raymon111111
        22
    Raymon111111  
       2019-03-14 14:54:06 +08:00   ❤️ 1
    挺好的啊

    既然阿里自己出了规范, 那么就应该觉得这个规范是好的. 如果开源项目不用遵守这个规范, 说明规范有提高的空间

    无论是哪个角度, 都有提高的空间
    HongJay
        23
    HongJay  
       2019-03-14 15:24:19 +08:00
    大气量。支持楼主一楼艾特 pp ( dog )
    ily433664
        24
    ily433664  
       2019-03-14 15:50:24 +08:00
    规范也只是规范而已,又不是强制,就像所有人都知道早睡有助于健康,但是很多人不也是经常熬夜,lz 明显就是专门来杠的。
    还是吃的太饱——袁隆平(并不是)
    natforum
        25
    natforum  
       2019-03-14 15:56:26 +08:00
    钢筋同学,你好
    tyrealgray
        26
    tyrealgray  
       2019-03-14 16:03:58 +08:00 via Android
    楼主这种事是好事,不过发帖一次就可以了,再发第二次别人就真的觉得你是要蹭热度搞事了
    pabupa
        27
    pabupa  
       2019-03-14 19:50:40 +08:00
    @blindpirate 和您其他的 364 次有什么关系呀……
    dfjslkjdf
        28
    dfjslkjdf  
       2019-03-14 21:33:16 +08:00   ❤️ 2
    看见 lz 说,“阿里开源项目的负责人已经联系我了。我们碰巧很久前就认识。”
    我想,哟,这是个大人物啊,想必有什么好东西吧,看看。
    我就随便翻了一个文件,这都是什么东西? lz 你是不是闲的蛋疼?
    ![]( )
    fancyhan
        29
    fancyhan  
       2019-03-14 21:39:03 +08:00
    @dfjslkjdf 确实蛋疼,这个改成这样没必要
    cuebyte
        30
    cuebyte  
       2019-03-14 21:45:09 +08:00
    已經不懂中國程序員了。指出 typo 在你們看來都算貢獻的情況下,用阿里的代碼規範來敲打阿里開源項目不是比修修 typo 更有意義嗎?難道樓上都是阿里員工?
    blindpirate
        31
    blindpirate  
    OP
       2019-03-14 22:22:15 +08:00   ❤️ 7
    @fancyhan @dfjslkjdf

    阿里巴巴 Java 开发手册:

    (七) 控制语句

    2. [强制] 在 if/else/for/while/do 语句中必须使用大括号。即使只有一行代码,避免采用 单行的编码方式:if (condition) statements;

    https://stackoverflow.com/questions/2125066/is-it-a-bad-practice-to-use-an-if-statement-without-curly-braces

    https://coolshell.cn/articles/11112.html

    历史上引起过严重 bug。

    无知不是你们的错,出来嘲讽就是你们的不对了。
    blindpirate
        32
    blindpirate  
    OP
       2019-03-14 22:24:46 +08:00   ❤️ 1
    @dfjslkjdf 想看我的代码的话,这是给 OpenJDK 修的 bug:

    http://hg.openjdk.java.net/jdk/jdk/rev/53a4760e9fcc

    https://bugs.openjdk.java.net/browse/JDK-8210810

    无知不是你的错,出来嘲讽就是你的不对了。
    dfjslkjdf
        33
    dfjslkjdf  
       2019-03-14 22:41:48 +08:00
    @blindpirate
    我难道不知道这是规范的一部分?我只是觉得你要是觉得你的时间就值这么多,你自便好了。
    反正我觉得对我来说,我要是做这种事情非抽自己一个大嘴巴子,浪费时间。
    dfjslkjdf
        34
    dfjslkjdf  
       2019-03-14 22:48:03 +08:00
    @blindpirate
    第二个链接我打不开,不过我没觉得哪里有水平了。
    你要是发个自己的什么构想,什么奇思妙想,什么项目框架,让别人能拍案而起的东西让别人看看,让我们也佩服佩服。
    但是你发这个,这就跟国家主席拍个照一样,有人觉得了不起,我反正不吃这一套。
    blindpirate
        35
    blindpirate  
    OP
       2019-03-14 22:50:40 +08:00 via iPhone   ❤️ 3
    @dfjslkjdf 我的时间比你值钱的多,但我乐意。合并 PR 的人都没意见,你算个什么东西。
    dfjslkjdf
        36
    dfjslkjdf  
       2019-03-14 22:52:57 +08:00
    @blindpirate
    我还以为你能拿出什么有价值的项目拍我脸呢,但是...
    你继续乐意吧,我时间不值钱,但是我不乐意。
    yuikns
        37
    yuikns  
       2019-03-14 23:27:21 +08:00 via iPhone   ❤️ 3
    那个… 楼主在 gradle 的 contribution 列表排 #19,654 commits 40,489 ++ 156,545 --

    虽然我打开和关闭了 sbt 和 bazel 比较熟练,但还是觉得很厉害了。
    至少比只会 judge 别人的厉害
    Zzdex
        38
    Zzdex  
       2019-03-14 23:34:52 +08:00 via iPhone
    支持楼主
    ilgharkus
        39
    ilgharkus  
       2019-03-14 23:46:47 +08:00   ❤️ 2
    坐等理学家,高级软件工程师,语言学家和礼仪学家 PP 出现。
    后排支持楼主。
    BTW,自己觉得有意义的事自己去做就行了,用不着和别人争执,一件事是否有意义取决于双方的能力,个人状况,阅历和价值观种种因素,有分歧很正常,如果引起争执就很没有必要了。
    David1119
        40
    David1119  
       2019-03-14 23:48:00 +08:00   ❤️ 1
    支持!!!

    @dfjslkjdf 楼主在 gradle 啊。。。。你要啥有价值的???

    通过这俩帖子知道为啥国内对开源贡献之差了,吃饱了宁可吃鸡、王者、水 v2 也不愿去帮开源项目改个 typo
    dfjslkjdf
        41
    dfjslkjdf  
       2019-03-14 23:53:09 +08:00
    @blindpirate
    你要是 qa,我收回我的话,我不知道啥叫一个好的 qa。
    dfjslkjdf
        42
    dfjslkjdf  
       2019-03-14 23:54:09 +08:00
    @David1119
    "吃饱了宁可吃鸡、王者、水 v2 也不愿去帮开源项目改个 typo ”
    改 typo 这么有意思吗,能超过吃鸡,王者、水 v2 ?
    yuikns
        43
    yuikns  
       2019-03-15 00:23:48 +08:00   ❤️ 11
    勿以恶小而为之,勿以善小而不为。

    如楼主所说,改 typo 是向开源社区做贡献的开始,不仅因为它让新手们可以开始学会正确地沟通和协作,也可以让一个很好的项目的 #19 的作者可以将更多精力花费在更多 feature 上。

    相反的,作为一个评论者,动不动就论心定罪,恐怕脱袜子来了,都能说人家一句抄 Unix 吧。这也是一种做法。

    前者枯燥而收益不大,后者当场站在了世界之巅。当然选后者。
    ericgui
        44
    ericgui  
       2019-03-15 00:36:16 +08:00
    支持楼主
    zwh2698
        45
    zwh2698  
       2019-03-15 00:44:41 +08:00 via Android
    楼主,规范已经是公司建立影响行销的手段,你认真了
    Cabana
        46
    Cabana  
       2019-03-15 00:47:41 +08:00 via Android
    支持楼主,首先不管楼主心态是怎样的,但至少是真的有在「做」,而不是站在 xx 的制高点评头论足
    dan666
        47
    dan666  
       2019-03-15 00:59:59 +08:00
    其实如果有人给我的丑代码提修正规范——而且是按照我自己的规范来提的,我很乐意啊——这不正是我从开源社区获得到的吗
    dangyuluo
        48
    dangyuluo  
       2019-03-15 04:50:58 +08:00
    黑一下得了啊,还得工作呢
    lxml
        49
    lxml  
       2019-03-15 04:57:55 +08:00 via Android
    想问楼上的,认真有什么错?
    ironMan1995
        50
    ironMan1995  
       2019-03-15 05:41:38 +08:00 via Android
    支持楼主,我强烈建议那些只会嘴上叫嚣,没有一点实际行动的人,闭上你们臭嘴。教育为开源社区做贡献的人,有些人还不配。
    TuringGunner
        51
    TuringGunner  
       2019-03-15 08:41:16 +08:00 via Android
    支持楼主,自己出的规范自己不遵守,这不搞笑么
    yoshiyuki
        52
    yoshiyuki  
       2019-03-15 09:42:07 +08:00
    实干胜空谈
    fatedier
        53
    fatedier  
       2019-03-15 09:43:26 +08:00
    规范代码,提倡大家一起来改进,怎么反而有人嘲讽?
    本来就是一件吃力不讨好的事,有点体力活的意思,但是也可以让更多的人接触开源项目,顺带学习一下大厂的规范和经验,对提 PR 的人和项目社区来说是双赢的事情。
    mentalkiller
        54
    mentalkiller  
       2019-03-15 09:52:07 +08:00
    支持楼主。楼主对于开源社区是实实在在的贡献,即使每一步可能都很微小。但是相比于坐在制高点指点江山的键盘侠,真的是高得不知道哪里去了。
    Raymon111111
        55
    Raymon111111  
       2019-03-15 10:22:03 +08:00
    @ily433664 并不是, 阿里那个规范里面很多项都是标注"强制", 如果认为标注"强制"的可以不用改, 那么规范本身应该把"强制"给降级成"推荐". 这也不是推进规范更好的发展吗?
    Shintaku
        56
    Shintaku  
       2019-03-15 10:58:05 +08:00 via Android
    @dfjslkjdf 感觉还是有必要的,我司这里要不加大括号都过不了规范检查
    Nostalgiaaaa
        57
    Nostalgiaaaa  
       2019-03-15 11:03:43 +08:00
    能实干的人已经很佩服了,支持!
    ily433664
        58
    ily433664  
       2019-03-15 11:25:34 +08:00
    @Raymon111111 规范里的“强制”是指,你遵守规范的前提下,请搞清楚前后的因果关系
    Raymon111111
        59
    Raymon111111  
       2019-03-15 11:48:51 +08:00
    @ily433664 阿里内部出了个规范, 里面有"强制", 说明这些要求都是不遵守会造成重大影响的. 但是阿里内部的团队还可以不去遵守, 说明这个"强制"并不合理, 应该被修改.

    不玩文字游戏了.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4447 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:04 · PVG 12:04 · LAX 20:04 · JFK 23:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.