# Headers

- About
- Checkstyle
- Documentation
- Release Notes
- Configuration
- Property Types
- Running
- Ant Task
- Command Line
- Available Checks
- Standard Checks
- Javadoc Comments
- Naming Conventions
- Headers
- Header
- RegexpHeader
- Imports
- Size Violations
- Whitespace
- Modifiers
- Block Checks
- Coding
- Class Design
- Duplicate Code
- Metrics
- Miscellaneous
- Optional Checks
- J2EE Checks
- Extending Checkstyle
- Writing checks
- Writing filters
- Writing listeners
- Javadoc
- SourceForge
- Mailing Lists
- Bug Database
- Feature Requests
- Developers
- Project Page
- CVS Repository
- Contributing

- Hosted by:

## Header

### Description

Checks that a source file begins with a specified header. Property headerFile specifies a file that contains the required header. Alternatively, the header specification can be set directly in the header property without the need for an external file.

Property ignoreLines specifies the line numbers to ignore when matching lines in a header file. This property is very useful for supporting headers that contain copyright dates. For example, consider the following header:

    line 1: ////////////////////////////////////////////////////////////////////
    line 2: // checkstyle:
    line 3: // Checks Java source code for adherence to a set of rules.
    line 4: // Copyright (C) 2002  Oliver Burn
    line 5: ////////////////////////////////////////////////////////////////////

Since the year information will change over time, you can tell Checkstyle to ignore line 4 by setting property ignoreLines to 4.

### Properties

name | description | type | default value
--- | --- | --- | ---
headerFile | name of the file containing the required header | string | null
header | the required header specified inline. Individual header lines must be separated by the string "\n" (even on platforms with a different line separator), see examples below. | string | null
ignoreLines | line numbers to ignore | list of integers | {}

### Example

To configure the check to use header file "java.header" and ignore lines 2, 3, and 4:

    <module name="Header">
        <property name="headerFile" value="java.header"/>
        <property name="ignoreLines" value="2, 3, 4"/>
    </module>

To configure the check to verify that each file starts with the header

    // Copyright (C) 2004 MyCompany
    // All rights reserved

without the need for an external header file:

    <module name="Header">
        <property name="header"
                  value="// Copyright (C) 2004 MyCompany\n// All rights reserved"/>
    </module>

### Package

com.puppycrawl.tools.checkstyle.checks

### Parent Module

TreeWalker

## RegexpHeader

### Description

Checks the header of a source file against a header that contains a regular expression for each line of the source header.

Rationale: In some projects checking against a fixed header is not sufficient, e.g. the header might require a copyright line where the year information is not static.

For example, consider the following header:

    line  1: ^/{71}$
    line  2: ^// checkstyle:$
    line  3: ^// Checks Java source code for adherence to a set of rules\.$
    line  4: ^// Copyright \(C\) \d\d\d\d  Oliver Burn$
    line  5: ^// Last modification by \$Author.*\$$
    line  6: ^/{71}$
    line  7:
    line  8: ^package
    line  9:
    line 10: ^import
    line 11:
    line 12: ^/\*\*
    line 13: ^ \*([^/]|$)
    line 14: ^ \*/

Lines 1 and 6 demonstrate a more compact notation for 71 '/' characters. Line 4 enforces that the copyright notice includes a four digit year. Line 5 is an example how to enforce revision control keywords in a file header. Lines 12-14 is a template for javadoc (line 13 is so complicated to remove conflict with and of javadoc comment).

### Properties

name | description | type | default value
--- | --- | --- | ---
headerFile | name of the file containing the required header | string | null
header | the required header specified inline. Individual header lines must be separated by the string "\n" (even on platforms with a different line separator), and regular expressions must not span multiple lines. | string | null
multiLines | line numbers to repeat (zero or more times) | list of integers | {}

### Example

To configure the check to use header file "java.header" and 10 and 13 muli-lines:

    <module name="RegexpHeader">
        <property name="headerFile" value="java.header"/>
        <property name="multiLines" value="10, 13"/>
    </module>

To configure the check to verify that each file starts with the header

    ^// Copyright \(C\) (\d\d\d\d -)? 2004 MyCompany$
    ^// All rights reserved$

without the need for an external header file:

    <module name="RegexpHeader">
      <property
        name="header"
        value="^// Copyright \(C\) (\d\d\d\d -)? 2004 MyCompany$\n^// All rights reserved$"/>
    </module>

Note: ignoreLines property has been removed from this check to simplify it. To make some line optional use "^.*$" regexp for this line.

### Package

com.puppycrawl.tools.checkstyle.checks

### Parent Module

TreeWalker

Copyright © 2001-2005, Oliver Burn