##### Overview

- License
- System Requirements
- Downloads
- User Manual
- Developer Manual
- Javadocs
- FAQ
- Wiki
- Browse/Submit a Bug
- Related Projects
  - Archive Access
  - Heritrix Cluster Controller (hcc)
  - cmdline-jmxclient
  - Deduplicator
  - Hadoop DFS Writer Processor

##### Project Documentation

- About Heritrix
- Project Info
- Project Reports
  - Project License
  - Unit Tests
  - Source Xref
  - Test Xref
  - PMD Report
  - Task List
- Development Process

## PMD Results

The following document contains the results of PMD.

## Summary

Files | Errors
--- | ---
44 | 69

## Files

Files | Violations
--- | ---
org/archive/crawler/deciderules/DecideRuleSequenceTest.java | 1
org/archive/crawler/deciderules/NotExceedsDocumentLengthTresholdDecideRule.java | 1
org/archive/crawler/deciderules/PrerequisiteAcceptDecideRule.java | 1
org/archive/crawler/deciderules/SeedAcceptDecideRule.java | 1
org/archive/crawler/deciderules/recrawl/IdenticalDigestDecideRule.java | 1
org/archive/crawler/event/CrawlStatusListener.java | 1
org/archive/crawler/extractor/ExtractorDOC.java | 1
org/archive/crawler/filter/OrFilter.java | 2
org/archive/crawler/filter/PathDepthFilter.java | 2
org/archive/crawler/filter/PathologicalPathFilter.java | 2
org/archive/crawler/filter/SurtPrefixFilter.java | 2
org/archive/crawler/filter/TransclusionFilter.java | 2
org/archive/crawler/filter/URIListRegExpFilter.java | 2
org/archive/crawler/filter/URIRegExpFilter.java | 2
org/archive/crawler/framework/AbstractTracker.java | 1
org/archive/crawler/framework/Processor.java | 3
org/archive/crawler/framework/exceptions/ConfigurationException.java | 1
org/archive/crawler/framework/exceptions/FatalConfigurationException.java | 1
org/archive/crawler/frontier/AdaptiveRevisitHostQueueTest.java | 4
org/archive/crawler/frontier/WorkQueue.java | 2
org/archive/crawler/io/UriProcessingFormatter.java | 1
org/archive/crawler/postprocessor/CrawlStateUpdater.java | 2
org/archive/crawler/prefetch/PreconditionEnforcer.java | 1
org/archive/crawler/prefetch/Preselector.java | 4
org/archive/crawler/scope/DomainScope.java | 1
org/archive/crawler/scope/SurtPrefixScope.java | 1
org/archive/crawler/settings/MapType.java | 1
org/archive/crawler/settings/OverrideTest.java | 1
org/archive/crawler/settings/refinements/TimespanCriteria.java | 1
org/archive/crawler/url/Canonicalizer.java | 1
org/archive/crawler/util/BdbUriUniqFilter.java | 1
org/archive/crawler/util/BenchmarkUriUniqFilters.java | 1
org/archive/crawler/writer/Kw3WriterProcessor.java | 1
org/archive/io/ByteReplayCharSequence.java | 2
org/archive/io/GzippedInputStream.java | 1
org/archive/io/MultiByteReplayCharSequence.java | 5
org/archive/io/RecordingInputStreamTest.java | 1
org/archive/io/ReplayCharSequenceTest.java | 1
org/archive/io/SinkHandlerLogRecord.java | 2
org/archive/net/UURI.java | 1
org/archive/net/UURIFactory.java | 2
org/archive/util/AbstractLongFPSet.java | 1
org/archive/util/ArchiveUtilsTest.java | 2
org/archive/util/ms/PieceReaderTest.java | 1

### org/archive/crawler/deciderules/DecideRuleSequenceTest.java

Violation | Line
--- | ---
Avoid unused local variables such as 'baseUri' | 410

### org/archive/crawler/deciderules/NotExceedsDocumentLengthTresholdDecideRule.java

Violation | Line
--- | ---
Avoid empty catch blocks | 109

### org/archive/crawler/deciderules/PrerequisiteAcceptDecideRule.java

Violation | Line
--- | ---
Avoid empty catch blocks | 58

### org/archive/crawler/deciderules/SeedAcceptDecideRule.java

Violation | Line
--- | ---
Avoid empty catch blocks | 57

### org/archive/crawler/deciderules/recrawl/IdenticalDigestDecideRule.java

Violation | Line
--- | ---
Avoid unused local variables such as 'type' | 55

### org/archive/crawler/event/CrawlStatusListener.java

Violation | Line
--- | ---
Avoid unused imports such as 'CrawlController' | 23

### org/archive/crawler/extractor/ExtractorDOC.java

Violation | Line
--- | ---
Avoid empty catch blocks | 104

### org/archive/crawler/filter/OrFilter.java

Violation | Line
--- | ---
Avoid unused imports such as 'DecideRule' | 33
Avoid unused imports such as 'DecidingFilter' | 34

### org/archive/crawler/filter/PathDepthFilter.java

Violation | Line
--- | ---
Avoid unused imports such as 'DecideRule' | 33
Avoid unused imports such as 'DecidingFilter' | 34

### org/archive/crawler/filter/PathologicalPathFilter.java

Violation | Line
--- | ---
Avoid unused imports such as 'DecideRule' | 32
Avoid unused imports such as 'DecidingFilter' | 33

### org/archive/crawler/filter/SurtPrefixFilter.java

Violation | Line
--- | ---
Avoid unused imports such as 'DecideRule' | 31
Avoid unused imports such as 'DecidingFilter' | 32

### org/archive/crawler/filter/TransclusionFilter.java

Violation | Line
--- | ---
Avoid unused imports such as 'DecideRule' | 29
Avoid unused imports such as 'DecidingFilter' | 30

### org/archive/crawler/filter/URIListRegExpFilter.java

Violation | Line
--- | ---
Avoid unused imports such as 'DecideRule' | 34
Avoid unused imports such as 'DecidingFilter' | 35

### org/archive/crawler/filter/URIRegExpFilter.java

Violation | Line
--- | ---
Avoid unused imports such as 'DecideRule' | 32
Avoid unused imports such as 'DecidingFilter' | 33

### org/archive/crawler/framework/AbstractTracker.java

Violation | Line
--- | ---
Avoid unused imports such as 'Date' | 22

### org/archive/crawler/framework/Processor.java

Violation | Line
--- | ---
Avoid unused imports such as 'Iterator' | 27
Avoid unused imports such as 'Level' | 28
Avoid unused imports such as 'MapType' | 36

### org/archive/crawler/framework/exceptions/ConfigurationException.java

Violation | Line
--- | ---
No need to import a type that's in the same package | 24

### org/archive/crawler/framework/exceptions/FatalConfigurationException.java

Violation | Line
--- | ---
No need to import a type that's in the same package | 24

### org/archive/crawler/frontier/AdaptiveRevisitHostQueueTest.java

Violation | Line
--- | ---
Avoid empty catch blocks | 137
Avoid empty catch blocks | 217
Avoid empty catch blocks | 250
Avoid empty catch blocks | 264

### org/archive/crawler/frontier/WorkQueue.java

Violation | Line
--- | ---
Avoid empty catch blocks | 595
Avoid empty catch blocks | 602

### org/archive/crawler/io/UriProcessingFormatter.java

Violation | Line
--- | ---
Avoid unused imports such as 'Base32' | 35

### org/archive/crawler/postprocessor/CrawlStateUpdater.java

Violation | Line
--- | ---
Avoid unused imports such as 'CrawlHost' | 30
Avoid unused imports such as 'FrontierGroup' | 35

### org/archive/crawler/prefetch/PreconditionEnforcer.java

Violation | Line
--- | ---
Avoid unnecessary return statements | 138

### org/archive/crawler/prefetch/Preselector.java

Violation | Line
--- | ---
Avoid empty catch blocks | 104
Avoid empty catch blocks | 118
Avoid empty catch blocks | 133
Avoid empty catch blocks | 148

### org/archive/crawler/scope/DomainScope.java

Violation | Line
--- | ---
Avoid unused imports such as 'DecidingScope' | 30

### org/archive/crawler/scope/SurtPrefixScope.java

Violation | Line
--- | ---
Avoid unused imports such as 'DecidingScope' | 32

### org/archive/crawler/settings/MapType.java

Violation | Line
--- | ---
Avoid empty catch blocks | 103

### org/archive/crawler/settings/OverrideTest.java

Violation | Line
--- | ---
Avoid empty catch blocks | 115

### org/archive/crawler/settings/refinements/TimespanCriteria.java

Violation | Line
--- | ---
Ensure you override both equals() and hashCode() | 132

### org/archive/crawler/url/Canonicalizer.java

Violation | Line
--- | ---
This for loop could be simplified to a while loop | 85

### org/archive/crawler/util/BdbUriUniqFilter.java

Violation | Line
--- | ---
Avoid empty catch blocks | 158

### org/archive/crawler/util/BenchmarkUriUniqFilters.java

Violation | Line
--- | ---
An empty statement (semicolon) not part of a loop | 92

### org/archive/crawler/writer/Kw3WriterProcessor.java

Violation | Line
--- | ---
No need to import a type that's in the same package | 46

### org/archive/io/ByteReplayCharSequence.java

Violation | Line
--- | ---
Avoid unused imports such as 'UnsupportedEncodingException' | 27
Avoid unused private fields such as 'DEFAULT_SINGLE_BYTE_ENCODING' | 131

### org/archive/io/GzippedInputStream.java

Violation | Line
--- | ---
Avoid unused imports such as 'EOFException' | 30

### org/archive/io/MultiByteReplayCharSequence.java

Violation | Line
--- | ---
Avoid unused imports such as 'Writer' | 34
Avoid unused imports such as 'CharsetDecoder' | 39
Avoid unused imports such as 'CoderResult' | 40
Avoid unused imports such as 'CodingErrorAction' | 41
Avoid unused imports such as 'Level' | 42

### org/archive/io/RecordingInputStreamTest.java

Violation | Line
--- | ---
Avoid empty catch blocks | 131

### org/archive/io/ReplayCharSequenceTest.java

Violation | Line
--- | ---
Avoid unused imports such as 'File' | 25

### org/archive/io/SinkHandlerLogRecord.java

Violation | Line
--- | ---
Ensure you override both equals() and hashCode() | 71
Ensure you override both equals() and hashCode() | 75

### org/archive/net/UURI.java

Violation | Line
--- | ---
Ensure you override both equals() and hashCode() | 200

### org/archive/net/UURIFactory.java

Violation | Line
--- | ---
Avoid unused private methods such as 'create' | 311
Avoid empty 'if' statements | 646

### org/archive/util/AbstractLongFPSet.java

Violation | Line
--- | ---
Avoid unused formal parameters such as 'index' | 116

### org/archive/util/ArchiveUtilsTest.java

Violation | Line
--- | ---
Avoid unused imports such as 'LinkedList' | 29
Avoid modifying an outer loop incrementer in an inner loop for update expression | 384

### org/archive/util/ms/PieceReaderTest.java

Violation | Line
--- | ---
Avoid unused formal parameters such as 'end' | 145