This group contains metrics that compute basic information about the code.

### Average Lines of Code Per Method

This is the average of the number of lines of code (LOC) in each method defined in the target elements.

This metric includes details on the minimum and maximum numbers of lines of code in any of the methods.

## Applicability

This metric can be computed for any type or type container.

## Parameters

- Maximum average value
- Causes the metric to flag any projects or packages with too high an average LOC/method.

### Average Number of Constructors Per Type

This is the average of the number of constructors defined for each type defined in the target elements.

This metric includes details on the minimum and maximum numbers of constructors defined by a type.

## Applicability

This metric can be computed for any type or type container.

## Parameters

- Maximum average value
- Causes the metric to flag any projects or packages with too many constructors per type.

### Average Number of Fields Per Type

This is the average of the number of fields defined for each type defined in the target elements.

This metric includes details on the minimum and maximum numbers of fields defined by a type.

## Applicability

This metric can be computed for any type or type container.

## Parameters

- Include constant (static final) fields in computation
- Determines whether static final fields are counted.
- Maximum average value
- Causes the metric to flag any projects or packages with too many fields per type.

### Average Number of Methods Per Type

This is the average of the number of methods defined for each type defined in the target elements.

This metric includes details on the minimum and maximum numbers of methods defined by a type.

## Applicability

This metric can be computed for any type or type container.

## Parameters

- Maximum average value
- Causes the metric to flag any projects or packages with too many methods per type.

### Average Number of Parameters

This is the average of the number of parameters defined for methods (but not constructors) defined in the target elements.

This metric includes details on the minimum and maximum numbers of parameters defined by a method. It also provides details on the number of methods of each particular size.

## Applicability

This metric can be computed for any type or type container.

## Parameters

- Maximum average value
- Causes the metric to flag any projects or packages with too many parameters per method.

### Lines of Code

This is a count of the number of lines in the target elements that contain characters other than white space and comments.

## Applicability

This metric can be computed for any source-based elements.

## Parameters

- Maximum lines of code per compilation unit
- Causes the metric to flag any types with too many lines of code.

### Number of Characters

This is a simple count of the number of characters in the source code associated with the target elements. The source code associated with an element includes any Javadoc comment that might precede the element.

## Applicability

This metric can be computed for any source-based elements.

## Parameters

- Maximum characters per compilation unit
- Causes the metric to flag any compilation unit with too many characters.

### Number of Comments

This is a count of the number of comments. It is not a count of the number of lines that contain comments; multi-line comments are counted as a single comment no matter how many lines they occupy.

This metric includes a breakdown based on the kind of comment: end-of-line, multi-line, and Javadoc.

## Applicability

This metric can be computed for any source-based elements.

### Number of Constructors

This is a count of the number of constructors defined in the target elements.

This metric includes a breakdown based on the visibility of the constructor (public, package, protected or private).

## Applicability

This metric can be computed for any type or type container.

## Parameters

- Maximum constructors per type
- Causes the metric to flag any type with too many constructors.

### Number of Fields

This is a count of the number of fields defined in the target elements.

This metric includes a breakdown based on both the scope of the field (static or instance) and the visibility of the field (public, package, protected or private).

## Applicability

This metric can be computed for any type or type container.

## Parameters

- Maximum fields per type
- Causes the metric to flag any type with too many fields.

### Number of Lines

This is a simple count of the number of lines in the target elements, including blank lines.

## Applicability

This metric can be computed for any source-based elements.

## Parameters

- Maximum lines per compilation unit
- Causes the metric to flag any compilation unit with too many lines.

### Number of Methods

This is a count of the number of methods defined in the target elements.

This metric includes a breakdown based on both the scope of the method (static or instance) and the visibility of the method (public, package, protected or private).

## Applicability

This metric can be computed for any type or type container.

## Parameters

- Maximum methods per type
- Causes the metric to flag any type with too many methods.

### Number of Packages

This is a count of the number of packages defined in the target elements.

## Applicability

This metric can be computed for any package or package container.

### Number of Semicolons

This is a simple count of the number of semicolons in the source code associated with the target elements. Semicolons occuring within comments are not counted, but those at the end of package and import declarations are.

## Applicability

This metric can be computed for any source-based elements.

## Parameters

- Maximum semicolons per compilation unit
- Causes the metric to flag any compilation unit with too many semicolons.

### Number of Types

This is a count of the number of types defined in the target elements.

This metric includes a breakdown based on whether the type is a class or an interface.

## Applicability

This metric can be computed for any type container.

## Parameters

- Maximum types per package
- Causes the metric to flag any packages with too many types.