Skip to content
  • Marcelo Vanzin's avatar
    2ff17bcf
    [SPARK-3873][BUILD] Add style checker to enforce import ordering. · 2ff17bcf
    Marcelo Vanzin authored
    The checker tries to follow as closely as possible the guidelines of
    the code style document, and makes some decisions where the guide is
    not clear. In particular:
    
    - wildcard imports come first when there are other imports in the
      same package
    - multi-import blocks come before single imports
    - lower-case names inside multi-import blocks come before others
    
    In some projects, such as graphx, there seems to be a convention to
    separate o.a.s imports from the project's own; to simplify the
    checker, I chose not to allow that, which is a strict interpretation
    of the code style guide, even though I think it makes sense.
    
    Since the checks are based on syntax only, some edge cases may
    generate spurious warnings; for example, when class names start
    with a lower case letter (and are thus treated as a package name
    by the checker).
    
    The checker is currently only generating warnings, and since there
    are many of those, the build output does get a little noisy. The
    idea is to fix the code (and the checker, as needed) little by little
    instead of having a huge change that touches everywhere.
    
    Author: Marcelo Vanzin <vanzin@cloudera.com>
    
    Closes #6502 from vanzin/SPARK-3873.
    2ff17bcf
    [SPARK-3873][BUILD] Add style checker to enforce import ordering.
    Marcelo Vanzin authored
    The checker tries to follow as closely as possible the guidelines of
    the code style document, and makes some decisions where the guide is
    not clear. In particular:
    
    - wildcard imports come first when there are other imports in the
      same package
    - multi-import blocks come before single imports
    - lower-case names inside multi-import blocks come before others
    
    In some projects, such as graphx, there seems to be a convention to
    separate o.a.s imports from the project's own; to simplify the
    checker, I chose not to allow that, which is a strict interpretation
    of the code style guide, even though I think it makes sense.
    
    Since the checks are based on syntax only, some edge cases may
    generate spurious warnings; for example, when class names start
    with a lower case letter (and are thus treated as a package name
    by the checker).
    
    The checker is currently only generating warnings, and since there
    are many of those, the build output does get a little noisy. The
    idea is to fix the code (and the checker, as needed) little by little
    instead of having a huge change that touches everywhere.
    
    Author: Marcelo Vanzin <vanzin@cloudera.com>
    
    Closes #6502 from vanzin/SPARK-3873.
Loading