# asciicheck

[![Go Report Card](https://goreportcard.com/badge/github.com/golangci/asciicheck)](https://goreportcard.com/report/github.com/golangci/asciicheck)

Simple linter to check that your code does not contain non-ASCII identifiers

The project has been moved to the golangci organization because the GitHub account of the original author (@tdakkota) is no longer available.

## Install
  
```bash
go install github.com/golangci/asciicheck/cmd/asciicheck@latest
```

## Reason to use

So, do you see this code? Looks correct, isn't it?

```go
package main

import "fmt"

type TеstStruct struct{}

func main() {
	s := TestStruct{}
	fmt.Println(s)
}
```

But if you try to run it, you will get an error:

```
./prog.go:8:7: undefined: TestStruct
```
What? `TestStruct` is defined above, but compiler thinks diffrent. Why?

**Answer**:

Because `TestStruct` is not `TеstStruct`.
```
type TеstStruct struct{}
      ^ this 'e' (U+0435) is not 'e' (U+0065)
```

## Usage

asciicheck uses [`singlechecker`](https://pkg.go.dev/golang.org/x/tools/go/analysis/singlechecker) package to run:

```
asciicheck: checks that all code identifiers does not have non-ASCII symbols in the name

Usage: asciicheck [-flag] [package]


Flags:
  -V	print version and exit
  -all
    	no effect (deprecated)
  -c int
    	display offending line with this many lines of context (default -1)
  -cpuprofile string
    	write CPU profile to this file
  -debug string
    	debug flags, any subset of "fpstv"
  -fix
    	apply all suggested fixes
  -flags
    	print analyzer flags in JSON
  -json
    	emit JSON output
  -memprofile string
    	write memory profile to this file
  -source
    	no effect (deprecated)
  -tags string
    	no effect (deprecated)
  -trace string
    	write trace log to this file
  -v	no effect (deprecated)
```
