shoufeng

瘦风的南墙

如何向开源项目(Apache-InLong)提交代码

Apache InLong(应龙)是一个一站式海量数据集成框架,
提供自动、安全、可靠和高性能的数据传输能力,同时支持批和流,方便业务构建基于流式的数据分析、建模和应用。

1 - 认领或提交 ISSUE

ISSUE,就是 Bug 或特性的说明,开源项目中的所有代码,都必须要有相关的 ISSUE 说明。

如果你在查看文档、编译代码,或使用部署好的 InLong 平台的时候,遇到错误或你觉得可以优化的地方,欢迎在这里提交 ISSUE:

提交 ISSUE

ISSUE 标题的命名规范,请务必参考:https://github.com/apache/inlong/discussions/3605

2 - clone 代码,本地编译安装

clone 代码,初始化环境,请参考官网的步骤:贡献代码

编译代码,需要配置 Maven 以访问中心仓库,配置链接:Maven configuration

编译代码时,必须使用 install 参数,否则部分依赖的模块会找不到依赖,具体命令如下:

 mvn clean install -s /your_dir/apache-maven-3.6.3/conf/settings-public.xml

3 - 代码格式设置(必须)

请保存下面的配置到本地(保存为 xml 文件):

=====👇点这里展开代码👇=====
<code_scheme name="InLong-CodeStyle" version="173">
    <option name="OTHER_INDENT_OPTIONS">
        <value>
            <option name="INDENT_SIZE" value="4"/>
            <option name="CONTINUATION_INDENT_SIZE" value="8"/>
            <option name="TAB_SIZE" value="4"/>
            <option name="USE_TAB_CHARACTER" value="false"/>
            <option name="SMART_TABS" value="false"/>
            <option name="LABEL_INDENT_SIZE" value="0"/>
            <option name="LABEL_INDENT_ABSOLUTE" value="false"/>
            <option name="USE_RELATIVE_INDENTS" value="false"/>
        </value>
    </option>
    <option name="FORMATTER_TAGS_ENABLED" value="true"/>
    <JSCodeStyleSettings version="0">
        <option name="INDENT_CHAINED_CALLS" value="false"/>
    </JSCodeStyleSettings>
    <JavaCodeStyleSettings>
        <option name="INSERT_INNER_CLASS_IMPORTS" value="true"/>
        <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999"/>
        <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999"/>
        <option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
            <value/>
        </option>
        <option name="JD_ALIGN_PARAM_COMMENTS" value="false"/>
        <option name="JD_ALIGN_EXCEPTION_COMMENTS" value="false"/>
        <option name="JD_P_AT_EMPTY_LINES" value="false"/>
        <option name="JD_PRESERVE_LINE_FEEDS" value="true"/>
        <option name="JD_INDENT_ON_CONTINUATION" value="true"/>
    </JavaCodeStyleSettings>
    <Python>
        <option name="USE_CONTINUATION_INDENT_FOR_ARGUMENTS" value="true"/>
    </Python>
    <ScalaCodeStyleSettings>
        <option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true"/>
    </ScalaCodeStyleSettings>
    <TypeScriptCodeStyleSettings version="0">
        <option name="INDENT_CHAINED_CALLS" value="false"/>
    </TypeScriptCodeStyleSettings>
    <XML>
        <option name="XML_ALIGN_ATTRIBUTES" value="false"/>
    </XML>
    <codeStyleSettings language="CSS">
        <indentOptions>
            <option name="INDENT_SIZE" value="2"/>
            <option name="CONTINUATION_INDENT_SIZE" value="4"/>
            <option name="TAB_SIZE" value="2"/>
        </indentOptions>
    </codeStyleSettings>
    <codeStyleSettings language="ECMA Script Level 4">
        <option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
        <option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
        <option name="ALIGN_MULTILINE_FOR" value="false"/>
        <option name="CALL_PARAMETERS_WRAP" value="1"/>
        <option name="METHOD_PARAMETERS_WRAP" value="1"/>
        <option name="EXTENDS_LIST_WRAP" value="1"/>
        <option name="BINARY_OPERATION_WRAP" value="1"/>
        <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
        <option name="TERNARY_OPERATION_WRAP" value="1"/>
        <option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true"/>
        <option name="FOR_STATEMENT_WRAP" value="1"/>
        <option name="ARRAY_INITIALIZER_WRAP" value="1"/>
        <option name="IF_BRACE_FORCE" value="3"/>
        <option name="DOWHILE_BRACE_FORCE" value="3"/>
        <option name="WHILE_BRACE_FORCE" value="3"/>
        <option name="FOR_BRACE_FORCE" value="3"/>
    </codeStyleSettings>
    <codeStyleSettings language="HTML">
        <indentOptions>
            <option name="INDENT_SIZE" value="2"/>
            <option name="CONTINUATION_INDENT_SIZE" value="4"/>
            <option name="TAB_SIZE" value="2"/>
        </indentOptions>
    </codeStyleSettings>
    <codeStyleSettings language="JAVA">
        <option name="RIGHT_MARGIN" value="120"/>
        <option name="LINE_COMMENT_AT_FIRST_COLUMN" value="false"/>
        <option name="BLOCK_COMMENT_AT_FIRST_COLUMN" value="false"/>
        <option name="LINE_COMMENT_ADD_SPACE" value="true"/>
        <option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false"/>
        <option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
        <option name="BLANK_LINES_BEFORE_PACKAGE" value="1"/>
        <option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1"/>
        <option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
        <option name="ALIGN_MULTILINE_RESOURCES" value="false"/>
        <option name="ALIGN_MULTILINE_FOR" value="false"/>
        <option name="CALL_PARAMETERS_WRAP" value="1"/>
        <option name="METHOD_PARAMETERS_WRAP" value="1"/>
        <option name="EXTENDS_LIST_WRAP" value="1"/>
        <option name="THROWS_KEYWORD_WRAP" value="1"/>
        <option name="METHOD_CALL_CHAIN_WRAP" value="1"/>
        <option name="BINARY_OPERATION_WRAP" value="1"/>
        <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
        <option name="TERNARY_OPERATION_WRAP" value="1"/>
        <option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true"/>
        <option name="FOR_STATEMENT_WRAP" value="1"/>
        <option name="ARRAY_INITIALIZER_WRAP" value="1"/>
        <option name="WRAP_COMMENTS" value="true"/>
        <option name="IF_BRACE_FORCE" value="3"/>
        <option name="DOWHILE_BRACE_FORCE" value="3"/>
        <option name="WHILE_BRACE_FORCE" value="3"/>
        <option name="FOR_BRACE_FORCE" value="3"/>
        <indentOptions>
            <option name="INDENT_SIZE" value="4"/>
            <option name="CONTINUATION_INDENT_SIZE" value="8"/>
            <option name="TAB_SIZE" value="4"/>
        </indentOptions>
    </codeStyleSettings>
    <codeStyleSettings language="JSON">
        <indentOptions>
            <option name="CONTINUATION_INDENT_SIZE" value="4"/>
            <option name="TAB_SIZE" value="2"/>
        </indentOptions>
    </codeStyleSettings>
    <codeStyleSettings language="JavaScript">
        <option name="RIGHT_MARGIN" value="80"/>
        <option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
        <option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
        <option name="ALIGN_MULTILINE_FOR" value="false"/>
        <option name="CALL_PARAMETERS_WRAP" value="1"/>
        <option name="METHOD_PARAMETERS_WRAP" value="1"/>
        <option name="BINARY_OPERATION_WRAP" value="1"/>
        <option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true"/>
        <option name="TERNARY_OPERATION_WRAP" value="1"/>
        <option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true"/>
        <option name="FOR_STATEMENT_WRAP" value="1"/>
        <option name="ARRAY_INITIALIZER_WRAP" value="1"/>
        <option name="IF_BRACE_FORCE" value="3"/>
        <option name="DOWHILE_BRACE_FORCE" value="3"/>
        <option name="WHILE_BRACE_FORCE" value="3"/>
        <option name="FOR_BRACE_FORCE" value="3"/>
        <indentOptions>
            <option name="INDENT_SIZE" value="2"/>
            <option name="TAB_SIZE" value="2"/>
        </indentOptions>
    </codeStyleSettings>
    <codeStyleSettings language="PROTO">
        <option name="RIGHT_MARGIN" value="80"/>
        <indentOptions>
            <option name="INDENT_SIZE" value="2"/>
            <option name="CONTINUATION_INDENT_SIZE" value="2"/>
            <option name="TAB_SIZE" value="2"/>
        </indentOptions>
    </codeStyleSettings>
    <codeStyleSettings language="protobuf">
        <option name="RIGHT_MARGIN" value="120"/>
        <indentOptions>
            <option name="INDENT_SIZE" value="2"/>
            <option name="CONTINUATION_INDENT_SIZE" value="2"/>
            <option name="TAB_SIZE" value="2"/>
        </indentOptions>
    </codeStyleSettings>
    <codeStyleSettings language="Python">
        <option name="KEEP_BLANK_LINES_IN_CODE" value="1"/>
        <option name="RIGHT_MARGIN" value="80"/>
        <option name="ALIGN_MULTILINE_PARAMETERS" value="false"/>
        <indentOptions>
            <option name="INDENT_SIZE" value="2"/>
            <option name="CONTINUATION_INDENT_SIZE" value="4"/>
            <option name="TAB_SIZE" value="2"/>
        </indentOptions>
    </codeStyleSettings>
    <codeStyleSettings language="SASS">
        <indentOptions>
            <option name="CONTINUATION_INDENT_SIZE" value="4"/>
            <option name="TAB_SIZE" value="2"/>
        </indentOptions>
    </codeStyleSettings>
    <codeStyleSettings language="SCSS">
        <indentOptions>
            <option name="CONTINUATION_INDENT_SIZE" value="4"/>
            <option name="TAB_SIZE" value="2"/>
        </indentOptions>
    </codeStyleSettings>
    <codeStyleSettings language="TypeScript">
        <indentOptions>
            <option name="INDENT_SIZE" value="2"/>
            <option name="TAB_SIZE" value="2"/>
        </indentOptions>
    </codeStyleSettings>
    <codeStyleSettings language="XML">
        <option name="RIGHT_MARGIN" value="120"/>
        <indentOptions>
            <option name="INDENT_SIZE" value="4"/>
            <option name="CONTINUATION_INDENT_SIZE" value="8"/>
            <option name="TAB_SIZE" value="4"/>
        </indentOptions>
    </codeStyleSettings>
</code_scheme>

然后打开 IDEA 的偏好设置,按照下面的顺序导入配置:

并确保导入包的顺序如下:

4 - 安装自动格式化插件(推荐)

推荐安装 Save Action 插件,用于自动格式化代码:

安装好之后,在这里修改使用如下配置:

此插件有助于按照上述代码规范,自动格式化新增或修改的文件。

5 - 提交代码

修改完代码后,参考这里的格式来提交代码到你的仓库:

然后发起 PR(也就是 Pull Request,即请求代码主仓库拉取你的代码),后续流程,请参考:贡献代码


版权声明

作者:瘦风(https://healchow.com)

出处:博客园-瘦风的南墙(https://www.cnblogs.com/shoufeng)

感谢阅读,公众号 「瘦风的南墙」 ,手机端阅读更佳,还有其他福利和心得输出,欢迎扫码关注🤝

本文版权归博主所有,欢迎转载,但 [必须在页面明显位置标明原文链接],否则博主保留追究相关人士法律责任的权利。

posted @ 2022-04-24 19:22  瘦风  阅读(560)  评论(0编辑  收藏  举报