Giter Club home page Giter Club logo

codestyle-guide's Introduction

codestyle-guide

java 代码风格指导文档及相关工具

文件结构

  • codestyle_guide.md 代码风格指导文档
  • config.xml 对应文档的checkstyle配置文件
  • README.md 项目指南

更新日志

  • 2019/02/13 更新v1.0版本文档和v1.0版本的配置文件
  • 2019/02/14 基本完善项目版本,并完成配置文件的简单验证
  • 2019/02/25 修复常量命名的问题,改为建议规则。由于没有对应的常量检查规则,所以checkstyle检查到连续的大写字母命名时会报错,请大家以config.xml中实际配置为准。(这里感谢17373348刘宸同学)

分数计算方式

  • 每次作业代码风格部分默认总分为100分,采用扣分制
  • 对于设计风格类(即风格文档的第六节)部分
    • 类长度风格问题,每个扣50分
    • 可见性检查、方法长度问题,每个扣20分
    • 参数个数、循环嵌套、语句嵌套问题,每个扣10分
    • 嵌套内联条件、布尔表达式、参数赋值问题,每个扣5分
  • 对于命名约定类(即风格文档第五章)部分
    • 所有的问题,每个扣5分
  • 对于除此之外的问题,每个扣2分
  • 对于所有的问题扣分上不封顶,扣到0分为止

常见问题

Q:作业中会如何检查代码风格?

A:我们会使用一个叫做checkstyle的Java代码风格检查工具进行代码风格的检查。其中配置文件使用本仓库内提供的config.xml文件,作为代码风格检查的依据。

值得注意的是,我们的检查对象为你的代码仓库内全部的.java文件,其他的文件会被系统自动忽略。

Q:我们本地是否可以检查代码风格?

A:当然可以。你们有以下几种方法检测自己的代码风格:

  • 从Checkstyle官网上下载checkstyle的jar文件,并在本机按照help里提供的命令行参数进行代码风格的检查。

  • 对于ubuntu(应该其他unix系统也行,但是只在ubuntu上试过)用户,可以使用我们封装的pycheckstylePython包进行快速代码风格检测(目前仅支持Python3)

  • 【推荐】对于IDEA用户,可以下载安装Checkstyle-IDEA插件(见下文),对ide内的代码进行实时风格检测。只需要安装好插件后在设置中将我们提供的config.xml载入即可。(更详细的攻略可以自行百度)

  • 对于Eclipse用户,实际上也存在checkstyle支持,可以自行百度探索。

Q:代码风格文档内是否会和配置文件等存在冲突?如果存在,如何处理?

A:我们的文档主要是将官方文档中相关的部分进行一些较为通俗的解释,可能有些细节上确实不够,也有可能存在少量的偏差。对于这样的情况,我们以checkstyle的官方文档,以及checkstyle在使用config.xml时的实际检查结果为准。

Q:我们如何去查看官方文档的对应规则?

A:在我们提供的风格文档中,均将配置文件中的对应部分写了出来。可以根据modulename字段信息,在官方文档上查找对应的规则以及说明。

一些有用的资料

关于作者

如有问题或建议,欢迎联系作者。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.