# XmlDocumentation

Set of rules that analyse whether or not certain areas of code contain XML documentation.

### Rationale

Provides users of your code more information through their IDE e.g. intellisense.

### Analyser Settings

Enabled - A boolean property that can enable and disable this analyser. (Default false)

#### Each Rule Settings

Access - A string property that defines when the rule is applied. (Default None)

Enabled - A boolean property that can enable and disable this rule. (Default false)

Allowed Access values: Public - only evaluate when the rule target is public Internal - only evaluate when the rule target is internal Private - only evaluate when the rule target is private All - always evaluate the rule NotPrivate - evaluate the rule when the rule target is Public or Internal NotPublic - evaluate the rule when the rule target is Internal or Private * None - never evaluate the rule

### Rules

##### Cause

A module was defined and did not have a header XML documentation comment e.g.

 1:  module XmlDocumentation 
##### How To Fix

Add XML header documentation to the module definition e.g.

 1: 2:  /// Rules to enforce the use of XML documentation in various places. module XmlDocumentation 

##### Cause

An exception was defined and did not have a header XML documentation comment e.g.

 1:  exception ParseException of string 
##### How To Fix

Add XML header documentation to the exception definition e.g.

 1: 2:  /// Failure during parsing, contains a failure message. exception ParseException of string 

##### Cause

A type was defined and did not have a header XML documentation comment e.g.

 1: 2:  type SimpleType = member this.Member = "Foo" 
##### How To Fix

Add XML header documentation to the type definition e.g.

 1: 2: 3:  /// A simple type type SimpleType = member this.Member = "Foo" 

##### Cause

A member was defined and did not have a header XML documentation comment e.g.

 1: 2:  type IsAType = member this.Member = "Foo" 
##### How To Fix

Add XML header documentation to the member definition e.g.

 1: 2: 3:  type IsAType = /// A simple member member this.Member = "Foo" 

##### Cause

An enum case was defined and did not have a header XML documentation comment e.g.

 1: 2: 3: 4:  type Colors = | Red = 0 | Green = 1 | Blue = 2 
##### How To Fix

Add XML header documentation to the enum case definition e.g.

 1: 2: 3: 4: 5: 6: 7:  type Colors = /// This is red | Red = 0 /// This is green | Green = 1 /// This is blue | Blue = 2 

##### Cause

A union case was defined and did not have a header XML documentation comment e.g.

 1: 2: 3: 4:  type Shape = | Rectangle of width : float * length : float | Circle of radius : float | Shape 
##### How To Fix

Add XML header documentation to the union case definition e.g.

 1: 2: 3: 4: 5: 6: 7:  type Shape = /// this is a Rectangle | Rectangle of width : float * length : float /// this is a Circle | Circle of radius : float /// this is a Shape | Shape 

##### Cause

A record field was defined and did not have a header XML documentation comment e.g.

 1: 2: 3: 4:  type GeoCoord = { lat: float long: float } 
##### How To Fix

Add XML header documentation to the record field definition e.g.

 1: 2: 3: 4: 5: 6:  type GeoCoord = { /// this is latitude lat: float /// this is longitude long: float } 

##### Cause

A property was defined and did not have a header XML documentation comment e.g.

 1: 2: 3:  type GeoCoord() = member val Lat = 0 with get, set member val Long = 0 with get, set 
##### How To Fix

Add XML header documentation to the property definition e.g.

 1: 2: 3: 4: 5:  type GeoCoord() = /// this is latitude member val Lat = 0 with get, set /// this is longitude member val Long = 0 with get, set 

##### Cause

A let binding was defined and did not have a header XML documentation comment e.g.

 1:  let add1 x = x + 1 
##### How To Fix

Add XML header documentation to the let binding definition e.g.

 1: 2:  /// add 1 to a number let add1 x = x + 1 
Multiple items
val string : value:'T -> string

Full name: Microsoft.FSharp.Core.Operators.string

--------------------
type string = System.String

Full name: Microsoft.FSharp.Core.string
Multiple items
val float : value:'T -> float (requires member op_Explicit)

Full name: Microsoft.FSharp.Core.Operators.float

--------------------
type float = System.Double

Full name: Microsoft.FSharp.Core.float

--------------------
type float<'Measure> = float

Full name: Microsoft.FSharp.Core.float<_>
val set : elements:seq<'T> -> Set<'T> (requires comparison)

Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.set