diff --git a/.golangci.yaml b/.golangci.yaml
index acd9eeb..fa28eb3 100644
--- a/.golangci.yaml
+++ b/.golangci.yaml
@@ -22,6 +22,7 @@ linters:
         - exhaustive
         - exportloopref
         - gci
+        - godot
         - gofmt
         - gofumpt
         - goimports
@@ -64,7 +65,6 @@ linters:
         # - goconst
         # - gocritic
         # - gocyclo
-        # - godot
         # - gosec
         # - gosimple
         # - ifshort
diff --git a/file.go b/file.go
index 7fc6aff..a54fe5a 100644
--- a/file.go
+++ b/file.go
@@ -43,7 +43,7 @@ func (v *Viper) searchInPath(in string) (filename string) {
 	return ""
 }
 
-// Check if file Exists
+// exists checks if file exists.
 func exists(fs afero.Fs, path string) (bool, error) {
 	stat, err := fs.Stat(path)
 	if err == nil {
diff --git a/flags.go b/flags.go
index ddb4da6..de033ed 100644
--- a/flags.go
+++ b/flags.go
@@ -31,7 +31,7 @@ func (p pflagValueSet) VisitAll(fn func(flag FlagValue)) {
 }
 
 // pflagValue is a wrapper around *pflag.flag
-// that implements FlagValue
+// that implements FlagValue.
 type pflagValue struct {
 	flag *pflag.Flag
 }
diff --git a/internal/encoding/dotenv/codec_test.go b/internal/encoding/dotenv/codec_test.go
index 8a446ed..ac2257b 100644
--- a/internal/encoding/dotenv/codec_test.go
+++ b/internal/encoding/dotenv/codec_test.go
@@ -7,16 +7,16 @@ import (
 	"github.com/stretchr/testify/require"
 )
 
-// original form of the data
+// original form of the data.
 const original = `# key-value pair
 KEY=value
 `
 
-// encoded form of the data
+// encoded form of the data.
 const encoded = `KEY=value
 `
 
-// Viper's internal representation
+// data is Viper's internal representation.
 var data = map[string]any{
 	"KEY": "value",
 }
diff --git a/internal/encoding/dotenv/map_utils.go b/internal/encoding/dotenv/map_utils.go
index 1340c73..4901d7c 100644
--- a/internal/encoding/dotenv/map_utils.go
+++ b/internal/encoding/dotenv/map_utils.go
@@ -8,7 +8,7 @@ import (
 
 // flattenAndMergeMap recursively flattens the given map into a new map
 // Code is based on the function with the same name in the main package.
-// TODO: move it to a common place
+// TODO: move it to a common place.
 func flattenAndMergeMap(shadow map[string]any, m map[string]any, prefix string, delimiter string) map[string]any {
 	if shadow != nil && prefix != "" && shadow[prefix] != nil {
 		// prefix is shadowed => nothing more to flatten
diff --git a/internal/encoding/hcl/codec_test.go b/internal/encoding/hcl/codec_test.go
index 8182c66..b1d2d5a 100644
--- a/internal/encoding/hcl/codec_test.go
+++ b/internal/encoding/hcl/codec_test.go
@@ -7,7 +7,7 @@ import (
 	"github.com/stretchr/testify/require"
 )
 
-// original form of the data
+// original form of the data.
 const original = `# key-value pair
 "key" = "value"
 
@@ -28,7 +28,7 @@ nested map
   "list" = ["item1", "item2", "item3"]
 }`
 
-// encoded form of the data
+// encoded form of the data.
 const encoded = `"key" = "value"
 
 "list" = ["item1", "item2", "item3"]
@@ -43,10 +43,10 @@ const encoded = `"key" = "value"
   "list" = ["item1", "item2", "item3"]
 }`
 
-// decoded form of the data
+// decoded form of the data.
 //
-// in case of HCL it's slightly different from Viper's internal representation
-// (eg. map is decoded into a list of maps)
+// In case of HCL it's slightly different from Viper's internal representation
+// (e.g. map is decoded into a list of maps).
 var decoded = map[string]any{
 	"key": "value",
 	"list": []any{
@@ -75,7 +75,7 @@ var decoded = map[string]any{
 	},
 }
 
-// Viper's internal representation
+// data is Viper's internal representation.
 var data = map[string]any{
 	"key": "value",
 	"list": []any{
diff --git a/internal/encoding/ini/codec_test.go b/internal/encoding/ini/codec_test.go
index 624e069..f9d9e70 100644
--- a/internal/encoding/ini/codec_test.go
+++ b/internal/encoding/ini/codec_test.go
@@ -7,7 +7,7 @@ import (
 	"github.com/stretchr/testify/require"
 )
 
-// original form of the data
+// original form of the data.
 const original = `; key-value pair
 key=value ; key-value pair
 
@@ -17,17 +17,17 @@ key=%(key)s
 
 `
 
-// encoded form of the data
+// encoded form of the data.
 const encoded = `key=value
 
 [map]
 key=value
 `
 
-// decoded form of the data
+// decoded form of the data.
 //
-// in case of INI it's slightly different from Viper's internal representation
-// (eg. top level keys land in a section called default)
+// In case of INI it's slightly different from Viper's internal representation
+// (e.g. top level keys land in a section called default).
 var decoded = map[string]any{
 	"DEFAULT": map[string]any{
 		"key": "value",
@@ -37,7 +37,7 @@ var decoded = map[string]any{
 	},
 }
 
-// Viper's internal representation
+// data is Viper's internal representation.
 var data = map[string]any{
 	"key": "value",
 	"map": map[string]any{
diff --git a/internal/encoding/ini/map_utils.go b/internal/encoding/ini/map_utils.go
index c1919a3..06e703f 100644
--- a/internal/encoding/ini/map_utils.go
+++ b/internal/encoding/ini/map_utils.go
@@ -41,7 +41,7 @@ func deepSearch(m map[string]any, path []string) map[string]any {
 
 // flattenAndMergeMap recursively flattens the given map into a new map
 // Code is based on the function with the same name in the main package.
-// TODO: move it to a common place
+// TODO: move it to a common place.
 func flattenAndMergeMap(shadow map[string]any, m map[string]any, prefix string, delimiter string) map[string]any {
 	if shadow != nil && prefix != "" && shadow[prefix] != nil {
 		// prefix is shadowed => nothing more to flatten
diff --git a/internal/encoding/javaproperties/codec_test.go b/internal/encoding/javaproperties/codec_test.go
index 4d521e8..ab5aec0 100644
--- a/internal/encoding/javaproperties/codec_test.go
+++ b/internal/encoding/javaproperties/codec_test.go
@@ -7,18 +7,18 @@ import (
 	"github.com/stretchr/testify/require"
 )
 
-// original form of the data
+// original form of the data.
 const original = `#key-value pair
 key = value
 map.key = value
 `
 
-// encoded form of the data
+// encoded form of the data.
 const encoded = `key = value
 map.key = value
 `
 
-// Viper's internal representation
+// data is Viper's internal representation.
 var data = map[string]any{
 	"key": "value",
 	"map": map[string]any{
diff --git a/internal/encoding/javaproperties/map_utils.go b/internal/encoding/javaproperties/map_utils.go
index 8386920..7c7e78a 100644
--- a/internal/encoding/javaproperties/map_utils.go
+++ b/internal/encoding/javaproperties/map_utils.go
@@ -41,7 +41,7 @@ func deepSearch(m map[string]any, path []string) map[string]any {
 
 // flattenAndMergeMap recursively flattens the given map into a new map
 // Code is based on the function with the same name in the main package.
-// TODO: move it to a common place
+// TODO: move it to a common place.
 func flattenAndMergeMap(shadow map[string]any, m map[string]any, prefix string, delimiter string) map[string]any {
 	if shadow != nil && prefix != "" && shadow[prefix] != nil {
 		// prefix is shadowed => nothing more to flatten
diff --git a/internal/encoding/json/codec_test.go b/internal/encoding/json/codec_test.go
index 1a05e48..87146a1 100644
--- a/internal/encoding/json/codec_test.go
+++ b/internal/encoding/json/codec_test.go
@@ -7,7 +7,7 @@ import (
 	"github.com/stretchr/testify/require"
 )
 
-// encoded form of the data
+// encoded form of the data.
 const encoded = `{
   "key": "value",
   "list": [
@@ -30,7 +30,7 @@ const encoded = `{
   }
 }`
 
-// Viper's internal representation
+// data is Viper's internal representation.
 var data = map[string]any{
 	"key": "value",
 	"list": []any{
diff --git a/internal/encoding/toml/codec_test.go b/internal/encoding/toml/codec_test.go
index c03f280..91d9e13 100644
--- a/internal/encoding/toml/codec_test.go
+++ b/internal/encoding/toml/codec_test.go
@@ -7,7 +7,7 @@ import (
 	"github.com/stretchr/testify/require"
 )
 
-// original form of the data
+// original form of the data.
 const original = `# key-value pair
 key = "value"
 list = ["item1", "item2", "item3"]
@@ -27,7 +27,7 @@ list = [
 ]
 `
 
-// encoded form of the data
+// encoded form of the data.
 const encoded = `key = 'value'
 list = ['item1', 'item2', 'item3']
 
@@ -40,7 +40,7 @@ key = 'value'
 list = ['item1', 'item2', 'item3']
 `
 
-// Viper's internal representation
+// data is Viper's internal representation.
 var data = map[string]any{
 	"key": "value",
 	"list": []any{
diff --git a/internal/encoding/yaml/codec_test.go b/internal/encoding/yaml/codec_test.go
index 4f998c0..2d2d8ba 100644
--- a/internal/encoding/yaml/codec_test.go
+++ b/internal/encoding/yaml/codec_test.go
@@ -7,7 +7,7 @@ import (
 	"github.com/stretchr/testify/require"
 )
 
-// original form of the data
+// original form of the data.
 const original = `# key-value pair
 key: value
 list:
@@ -28,7 +28,7 @@ nested_map:
             - item3
 `
 
-// encoded form of the data
+// encoded form of the data.
 const encoded = `key: value
 list:
     - item1
@@ -45,10 +45,10 @@ nested_map:
             - item3
 `
 
-// decoded form of the data
+// decoded form of the data.
 //
-// in case of YAML it's slightly different from Viper's internal representation
-// (eg. map is decoded into a map with interface key)
+// In case of YAML it's slightly different from Viper's internal representation
+// (e.g. map is decoded into a map with interface key).
 var decoded = map[string]any{
 	"key": "value",
 	"list": []any{
@@ -71,7 +71,7 @@ var decoded = map[string]any{
 	},
 }
 
-// Viper's internal representation
+// data is Viper's internal representation.
 var data = map[string]any{
 	"key": "value",
 	"list": []any{
diff --git a/overrides_test.go b/overrides_test.go
index f0de2e9..a8f4cc1 100644
--- a/overrides_test.go
+++ b/overrides_test.go
@@ -126,7 +126,7 @@ func overrideFromLayer(l layer, assert *assert.Assertions, firstPath string, fir
 }
 
 // deepCheckValue checks that all given keys correspond to a valid path in the
-// configuration map of the given layer, and that the final value equals the one given
+// configuration map of the given layer, and that the final value equals the one given.
 func deepCheckValue(assert *assert.Assertions, v *Viper, l layer, keys []string, value any) {
 	if assert == nil || v == nil ||
 		len(keys) == 0 || len(keys[0]) == 0 {
diff --git a/util.go b/util.go
index 52116ac..117c6ac 100644
--- a/util.go
+++ b/util.go
@@ -156,7 +156,7 @@ func safeMul(a, b uint) uint {
 	return c
 }
 
-// parseSizeInBytes converts strings like 1GB or 12 mb into an unsigned integer number of bytes
+// parseSizeInBytes converts strings like 1GB or 12 mb into an unsigned integer number of bytes.
 func parseSizeInBytes(sizeStr string) uint {
 	sizeStr = strings.TrimSpace(sizeStr)
 	lastChar := len(sizeStr) - 1
diff --git a/viper.go b/viper.go
index bc63153..7de2e78 100644
--- a/viper.go
+++ b/viper.go
@@ -77,7 +77,7 @@ type remoteConfigFactory interface {
 	WatchChannel(rp RemoteProvider) (<-chan *RemoteResponse, chan bool)
 }
 
-// RemoteConfig is optional, see the remote package
+// RemoteConfig is optional, see the remote package.
 var RemoteConfig remoteConfigFactory
 
 // UnsupportedConfigError denotes encountering an unsupported
@@ -102,7 +102,7 @@ func (str UnsupportedRemoteProviderError) Error() string {
 // pull the configuration from the remote provider.
 type RemoteConfigError string
 
-// Error returns the formatted remote provider error
+// Error returns the formatted remote provider error.
 func (rce RemoteConfigError) Error() string {
 	return fmt.Sprintf("Remote Configurations Error: %s", string(rce))
 }
@@ -126,7 +126,7 @@ func (faee ConfigFileAlreadyExistsError) Error() string {
 }
 
 // A DecoderConfigOption can be passed to viper.Unmarshal to configure
-// mapstructure.DecoderConfig options
+// mapstructure.DecoderConfig options.
 type DecoderConfigOption func(*mapstructure.DecoderConfig)
 
 // DecodeHook returns a DecoderConfigOption which overrides the default
@@ -305,7 +305,7 @@ func Reset() {
 	SupportedRemoteProviders = []string{"etcd", "etcd3", "consul", "firestore", "nats"}
 }
 
-// TODO: make this lazy initialization instead
+// TODO: make this lazy initialization instead.
 func (v *Viper) resetEncoding() {
 	encoderRegistry := encoding.NewEncoderRegistry()
 	decoderRegistry := encoding.NewDecoderRegistry()
@@ -590,7 +590,7 @@ func (v *Viper) AddConfigPath(in string) {
 // path is the path in the k/v store to retrieve configuration
 // To retrieve a config file called myapp.json from /configs/myapp.json
 // you should set path to /configs and set config name (SetConfigName()) to
-// "myapp"
+// "myapp".
 func AddRemoteProvider(provider, endpoint, path string) error {
 	return v.AddRemoteProvider(provider, endpoint, path)
 }
@@ -622,8 +622,8 @@ func (v *Viper) AddRemoteProvider(provider, endpoint, path string) error {
 // path is the path in the k/v store to retrieve configuration
 // To retrieve a config file called myapp.json from /configs/myapp.json
 // you should set path to /configs and set config name (SetConfigName()) to
-// "myapp"
-// Secure Remote Providers are implemented with github.com/bketelsen/crypt
+// "myapp".
+// Secure Remote Providers are implemented with github.com/bketelsen/crypt.
 func AddSecureRemoteProvider(provider, endpoint, path, secretkeyring string) error {
 	return v.AddSecureRemoteProvider(provider, endpoint, path, secretkeyring)
 }
@@ -1115,7 +1115,7 @@ func (v *Viper) Unmarshal(rawVal any, opts ...DecoderConfigOption) error {
 }
 
 // defaultDecoderConfig returns default mapstructure.DecoderConfig with support
-// of time.Duration values & string slices
+// of time.Duration values & string slices.
 func defaultDecoderConfig(output any, opts ...DecoderConfigOption) *mapstructure.DecoderConfig {
 	c := &mapstructure.DecoderConfig{
 		Metadata:         nil,
@@ -1132,7 +1132,7 @@ func defaultDecoderConfig(output any, opts ...DecoderConfigOption) *mapstructure
 	return c
 }
 
-// A wrapper around mapstructure.Decode that mimics the WeakDecode functionality
+// decode is a wrapper around mapstructure.Decode that mimics the WeakDecode functionality.
 func decode(input any, config *mapstructure.DecoderConfig) error {
 	decoder, err := mapstructure.NewDecoder(config)
 	if err != nil {
@@ -1405,7 +1405,7 @@ func readAsCSV(val string) ([]string, error) {
 }
 
 // mostly copied from pflag's implementation of this operation here https://github.com/spf13/pflag/blob/master/string_to_string.go#L79
-// alterations are: errors are swallowed, map[string]any is returned in order to enable cast.ToStringMap
+// alterations are: errors are swallowed, map[string]any is returned in order to enable cast.ToStringMap.
 func stringToStringConv(val string) any {
 	val = strings.Trim(val, "[]")
 	// An empty string would cause an empty map
@@ -1429,7 +1429,7 @@ func stringToStringConv(val string) any {
 }
 
 // mostly copied from pflag's implementation of this operation here https://github.com/spf13/pflag/blob/d5e0c0615acee7028e1e2740a11102313be88de1/string_to_int.go#L68
-// alterations are: errors are swallowed, map[string]any is returned in order to enable cast.ToStringMap
+// alterations are: errors are swallowed, map[string]any is returned in order to enable cast.ToStringMap.
 func stringToIntConv(val string) any {
 	val = strings.Trim(val, "[]")
 	// An empty string would cause an empty map
@@ -2012,7 +2012,7 @@ func (v *Viper) watchRemoteConfig(provider RemoteProvider) (map[string]any, erro
 }
 
 // AllKeys returns all keys holding a value, regardless of where they are set.
-// Nested keys are returned with a v.keyDelim separator
+// Nested keys are returned with a v.keyDelim separator.
 func AllKeys() []string { return v.AllKeys() }
 
 func (v *Viper) AllKeys() []string {
diff --git a/viper_test.go b/viper_test.go
index 6b1b316..0e416e7 100644
--- a/viper_test.go
+++ b/viper_test.go
@@ -233,7 +233,7 @@ func initIni() {
 	unmarshalReader(r, v.config)
 }
 
-// make directories for testing
+// initDirs makes directories for testing.
 func initDirs(t *testing.T) (string, string) {
 	var (
 		testDirs = []string{`a a`, `b`, `C_`}
@@ -261,7 +261,7 @@ func initDirs(t *testing.T) (string, string) {
 	return root, config
 }
 
-// stubs for PFlag Values
+// stubs for PFlag Values.
 type stringValue string
 
 func newStringValue(val string, p *string) *stringValue {