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

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

  •  
  •   blindpirate · 10 天前 · 4933 次点击

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

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

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

    无知不是你们的错,出来嘲讽就是你们的不对了。
        32
    blindpirate   9 天前   ♥ 1
    @dfjslkjdf 想看我的代码的话,这是给 OpenJDK 修的 bug:

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

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

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

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

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

    通过这俩帖子知道为啥国内对开源贡献之差了,吃饱了宁可吃鸡、王者、水 v2 也不愿去帮开源项目改个 typo
        41
    dfjslkjdf   9 天前
    @blindpirate
    你要是 qa,我收回我的话,我不知道啥叫一个好的 qa。
        42
    dfjslkjdf   9 天前
    @David1119
    "吃饱了宁可吃鸡、王者、水 v2 也不愿去帮开源项目改个 typo ”
    改 typo 这么有意思吗,能超过吃鸡,王者、水 v2 ?
        43
    yuikns   9 天前   ♥ 11
    勿以恶小而为之,勿以善小而不为。

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

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

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

    不玩文字游戏了.
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2366 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 11:25 · PVG 19:25 · LAX 04:25 · JFK 07:25
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1