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

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

  •  
  •   blindpirate · 12 天前 · 4949 次点击

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

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

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

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

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

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

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

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

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

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

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

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

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