This commit is contained in:
softlandia 2020-04-13 22:31:31 +04:00
Родитель 6c0e43bfcf
Коммит b0000b80c7
10 изменённых файлов: 240 добавлений и 159 удалений

Просмотреть файл

@ -1,4 +1,8 @@
## ver 0.1.5 // 2020.04.10 ##
## ver 0.1.6 // 2020.04.13 ##
- мелкие улучшения
## ver 0.1.5 // 2020.04.10 ##
- мелкие улучшения
@ -16,5 +20,3 @@
_todo_
- нужно поправить чтение параметра WELL, при наличии пробела в имени скважины, считывается только до пробела...
- нужно подумать про запись сначала во Writer, а потом его сохранение на диск...

Просмотреть файл

@ -9,4 +9,4 @@ DEPT .F :DEPTH (BOREHOLE) {F10.1}
#
~A
200.0
201.0
201.1

Просмотреть файл

@ -1,43 +1,46 @@
**file: data\more_20_warnings.las**
0, line: -1, desc: invalid STEP parameter, equal 0. replace to 1.000
0, line: -1, desc: STEP parameter equal 0, replace to 0.000
1, line: -1, desc: invalid STRT: 0.000 or STOP: 0.000, will be replace to actually
2, line: 24, desc: can't convert string: '6.2.2' to number, set to NULL
3, line: 25, desc: not all column readed, set log value to NULL
4, line: 25, desc: not all column readed, set log value to NULL
5, line: 26, desc: actual number of data lines more than expected, check: STRT, STOP, STEP
6, line: 26, desc: expand number of points
7, line: 27, desc: can't convert string: '6.2.2' to number, set to NULL
5, line: 27, desc: actual step 1.00 ≠ global STEP 0.00
6, line: 27, desc: can't convert string: '6.2.2' to number, set to NULL
7, line: 29, desc: actual step 1.00 ≠ global STEP 0.00
8, line: 29, desc: can't convert string: '5.97.' to number, set to NULL
9, line: 30, desc: actual number of data lines more than expected, check: STRT, STOP, STEP
10, line: 30, desc: expand number of points
11, line: 31, desc: can't convert string: '6.47.' to number, set to NULL
12, line: 33, desc: actual step 64.00 ≠ global STEP 1.00
13, line: 33, desc: step 64.00 ≠ previously step 1.00
14, line: 33, desc: can't convert string: '5.97.' to number, set to NULL
15, line: 35, desc: actual step 47.00 ≠ global STEP 1.00
16, line: 35, desc: step 47.00 ≠ previously step 64.00
17, line: 35, desc: can't convert string: '5.47.' to number, set to NULL
9, line: 31, desc: actual step 1.00 ≠ global STEP 0.00
10, line: 31, desc: can't convert string: '6.47.' to number, set to NULL
11, line: 33, desc: actual step 64.00 ≠ global STEP 0.00
12, line: 33, desc: step 64.00 ≠ previously step 1.00
13, line: 33, desc: can't convert string: '5.97.' to number, set to NULL
14, line: 35, desc: actual step 47.00 ≠ global STEP 0.00
15, line: 35, desc: step 47.00 ≠ previously step 64.00
16, line: 35, desc: can't convert string: '5.47.' to number, set to NULL
17, line: 37, desc: actual step 1.00 ≠ global STEP 0.00
18, line: 37, desc: step 1.00 ≠ previously step 47.00
19, line: 37, desc: can't convert string: '4.7.' to number, set to NULL
20, line: 38, desc: actual number of data lines more than expected, check: STRT, STOP, STEP
21, line: 38, desc: expand number of points
22, line: 38, desc: can't convert string: '4.7.' to number, set to NULL
23, line: 40, desc: line: 40 is empty, ignore
24, line: 41, desc: actual step -117.20 ≠ global STEP 1.00
25, line: 41, desc: step -117.20 ≠ previously step 1.00
26, line: 41, desc: not all column readed, set log value to NULL
27, line: 42, desc: actual step 170.20 ≠ global STEP 1.00
28, line: 42, desc: step 170.20 ≠ previously step -117.20
20, line: 38, desc: actual step 1.00 ≠ global STEP 0.00
21, line: 38, desc: can't convert string: '4.7.' to number, set to NULL
22, line: 40, desc: line: 40 is empty, ignore
23, line: 41, desc: actual step -117.20 ≠ global STEP 0.00
24, line: 41, desc: step -117.20 ≠ previously step 1.00
25, line: 41, desc: not all column readed, set log value to NULL
26, line: 42, desc: actual step 170.20 ≠ global STEP 0.00
27, line: 42, desc: step 170.20 ≠ previously step -117.20
28, line: 43, desc: actual step 1.00 ≠ global STEP 0.00
29, line: 43, desc: step 1.00 ≠ previously step 170.20
30, line: 45, desc: actual step 4.00 ≠ global STEP 1.00
31, line: 45, desc: step 4.00 ≠ previously step 1.00
32, line: 46, desc: step 1.00 ≠ previously step 4.00
33, line: 49, desc: actual number of data lines more than expected, check: STRT, STOP, STEP
34, line: 49, desc: expand number of points
35, line: 49, desc: actual step 3.00 ≠ global STEP 1.00
36, line: 49, desc: step 3.00 ≠ previously step 1.00
37, line: 50, desc: step 1.00 ≠ previously step 3.00
38, line: 54, desc: actual step 0.00 ≠ global STEP 1.00
39, line: 54, desc: step 0.00 ≠ previously step 1.00
40, line: 55, desc: actual step 0.00 ≠ global STEP 1.00
30, line: 44, desc: actual step 1.00 ≠ global STEP 0.00
31, line: 45, desc: actual step 4.00 ≠ global STEP 0.00
32, line: 45, desc: step 4.00 ≠ previously step 1.00
33, line: 46, desc: actual step 1.00 ≠ global STEP 0.00
34, line: 46, desc: step 1.00 ≠ previously step 4.00
35, line: 48, desc: actual step 1.00 ≠ global STEP 0.00
36, line: 49, desc: actual step 3.00 ≠ global STEP 0.00
37, line: 49, desc: step 3.00 ≠ previously step 1.00
38, line: 50, desc: actual step 1.00 ≠ global STEP 0.00
39, line: 50, desc: step 1.00 ≠ previously step 3.00
40, line: 51, desc: actual step 1.00 ≠ global STEP 0.00
41, line: 52, desc: actual step 1.00 ≠ global STEP 0.00
42, line: 53, desc: actual step 1.00 ≠ global STEP 0.00
43, line: 54, desc: step 0.00 ≠ previously step 1.00

Просмотреть файл

@ -1,5 +1,5 @@
**file: data\more_20_warnings.las**
0, line: -1, desc: STEP parameter equal 0, replace to 1.000
0, line: -1, desc: STEP parameter equal 0, replace to 0.000
1, line: -1, desc: invalid STRT: 0.000 or STOP: 0.000, will be replace to actually
2, line: 24, desc: can't convert string: '6.2.2' to number, set to NULL
3, line: 25, desc: not all column readed, set log value to NULL

Двоичные данные
debug.test

Двоичный файл не отображается.

122
las.go
Просмотреть файл

@ -104,14 +104,14 @@ type Las struct {
// close file
// return o.Null if error occure
// если делать функцией, не методом, то придётся NULL передавать. а оно надо вообще
func (o *Las) GetStepFromData(fileName string) float64 {
iFile, err := os.Open(fileName)
func (o *Las) GetStepFromData() float64 {
iFile, err := os.Open(o.FileName)
if err != nil {
return o.Null
}
defer iFile.Close()
_, iScanner, err := xlib.SeekFileStop(fileName, "~A")
_, iScanner, err := xlib.SeekFileStop(o.FileName, "~A")
if (err != nil) || (iScanner == nil) {
return o.Null
}
@ -126,8 +126,8 @@ func (o *Las) GetStepFromData(fileName string) float64 {
continue
}
k := strings.IndexRune(s, ' ')
if k < 0 { //data line must have minimum 2 column separated ' ' space
return o.Null
if k < 0 {
k = len(s)
}
dept1, err = strconv.ParseFloat(s[:k], 64)
if err != nil {
@ -144,6 +144,10 @@ func (o *Las) GetStepFromData(fileName string) float64 {
return o.Null
}
func (o *Las) setStep(h float64) {
o.Step = h
}
//SetNull - change parameter NULL in WELL INFO section and in all logs
func (o *Las) SetNull(aNull float64) error {
for _, l := range o.Logs { //loop by logs
@ -250,25 +254,76 @@ func (o *Las) selectSection(r rune) int {
}
}
//make test of loaded well info section
//return error <> nil in one case, if getStepFromData return error
func (o *Las) checkWellInfoSection() error {
if o.Step == 0.0 {
//TODO менять здесь шаг нельзя, здесь только проверка и сохранение извещения о некорректности, менять надо потом
o.Step = o.GetStepFromData(o.FileName) // return o.Null if cannot calculate step from data
if o.Step == o.Null {
return errors.New("invalid STEP parameter and invalid step in data")
const (
checkHeaderStep = iota
checkHeaderNull = iota
checkHeaderWrap = iota
checkHeaderCurve = iota
checkHeaderStrtStop = iota
)
// HeaderCheckMsg - one message on check las Header
type HeaderCheckMsg struct {
id int
msg string
}
// HeaderCheckRes - result of check readed las Header
type HeaderCheckRes []HeaderCheckMsg
func (hc *HeaderCheckRes) needUpdateStep() bool {
for _, m := range *hc {
if m.id == checkHeaderStep {
return true
}
o.addWarning(TWarning{directOnRead, lasSecWellInfo, -1, fmt.Sprintf("STEP parameter equal 0, replace to %4.3f", o.Step)})
}
return false
}
func (hc *HeaderCheckRes) needUpdateNull() bool {
for _, m := range *hc {
if m.id == checkHeaderNull {
return true
}
}
return false
}
func (hc *HeaderCheckRes) addStepWarning() {
*hc = append(*hc, HeaderCheckMsg{checkHeaderStep, ""})
}
func (hc *HeaderCheckRes) addNullWarning() {
*hc = append(*hc, HeaderCheckMsg{checkHeaderNull, ""})
}
// make test of loaded las header
// return error:
// - double error on STEP parameter
// - las file is WRAP == ON
// - Curve section not exist
func (o *Las) checkHeader() (HeaderCheckRes, error) {
res := make(HeaderCheckRes, 0)
if o.Null == 0.0 {
o.Null = o.stdNull
res.addNullWarning()
o.addWarning(TWarning{directOnRead, lasSecWellInfo, -1, fmt.Sprintf("NULL parameter equal 0, replace to %4.3f", o.Null)})
}
if o.Step == 0.0 {
res.addStepWarning()
o.addWarning(TWarning{directOnRead, lasSecWellInfo, -1, fmt.Sprintf("STEP parameter equal 0, replace to %4.3f", o.Step)})
}
if math.Abs(o.Stop-o.Strt) < 0.1 {
o.addWarning(TWarning{directOnRead, lasSecWellInfo, -1, fmt.Sprintf("invalid STRT: %4.3f or STOP: %4.3f, will be replace to actually", o.Strt, o.Stop)})
}
return nil
if o.IsWraped() {
o.addWarning(TWarning{directOnRead, lasSecData, -1, "WRAP = YES, file ignored"})
return res, fmt.Errorf("Wrapped files not support") //return 0, nil
}
if len(o.Logs) <= 0 {
o.addWarning(TWarning{directOnRead, lasSecData, -1, "section ~Curve not exist, file ignored"})
return res, fmt.Errorf("Curve section not exist") //return 0, nil
}
return res, nil
}
// IsWraped - return true if WRAP == YES
@ -345,6 +400,11 @@ func (o *Las) GetMnemonic(logName string) string {
}
// Open - load las file
// return error on:
// - file to open not exist
// - file cannot be decoded to UTF-8
// - las is wrapped
// - las file not contain Curve section
func (o *Las) Open(fileName string) (int, error) {
//TODO при создании объекта las есть возможность указать кодировку записи, нужна возможность указать явно кодировку чтения
var err error
@ -360,24 +420,24 @@ func (o *Las) Open(fileName string) (int, error) {
return 0, err
}
o.scanner = bufio.NewScanner(o.Reader)
//load header from stored Reader
o.currentLine = 0
o.LoadHeader()
//проверка корректности данных секции WELL INFO перез загрузкой данных
//непоправимая ошибка если невозможно определить корректно шаг
err = o.checkWellInfoSection()
// проверка корректности данных секции WELL INFO перез загрузкой данных
res, err := o.checkHeader() // res содержит несколько сообщений связанных с корректностью заголовка las файла
if err != nil {
return 0, err // двойная ошибка, плох параметр STEP и не удалось вычислить STEP по данным, с данными проблема...
return 0, err // дальше читать файл смысла нет, или с файл переносами или нет секции Curve ...
}
if o.IsWraped() {
o.addWarning(TWarning{directOnRead, lasSecData, -1, "WRAP = YES, file ignored"})
return 0, nil //TODO здесь должна быть ошибка, мы не добрались до чтения данных
err = nil
// обрабатываем изменение параметров las файла по результатам чтения заголовка
if res.needUpdateNull() {
o.SetNull(o.stdNull)
}
if len(o.Logs) <= 0 {
o.addWarning(TWarning{directOnRead, lasSecData, -1, "section ~Curve not exist, file ignored"})
return 0, nil //TODO здесь должна быть ошибка, мы не добрались до чтения данных
if res.needUpdateStep() {
h := o.GetStepFromData() // return o.Null if cannot calculate step from data
o.setStep(h)
if h == o.Null {
return 0, errors.New("invalid STEP parameter and invalid step in data")
}
}
return o.ReadDataSec(fileName)
}
@ -388,7 +448,9 @@ func (o *Las) Open(fileName string) (int, error) {
2. если коммент или пустая в игнор
3. если начало секции, определяем какой
4. если началась секция данных заканчиваем
5. читаем одну строку (это один параметер из известной нам секции) */
5. читаем одну строку (это один параметер из известной нам секции)
Пока ошибку всегда возвращает nil, причин возвращать другое значение пока нет.
*/
func (o *Las) LoadHeader() error {
s := ""
var err error

Просмотреть файл

@ -3,6 +3,7 @@
package glasio
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
@ -30,8 +31,8 @@ var dSummaryCheck = []tSummaryCheck{
{fp.Join("data/1001178549.las"), 2.0, "YES", 1783.5, 1784.5, 0.25, -999.25, "1-28", 27, 0, true},
{fp.Join("data/alog.las"), 1.20, "NO", 0, 0, 0.05, -999.25, "", 9, 24, false},
{fp.Join("data/autodepthindex_F.las"), 1.20, "NO", 0, 100, 1, -999.25, "ANY ET AL OIL WELL #12", 2, 101, false},
{fp.Join("data/barebones.las"), 2.0, "NO", 0, 0, 0, 0, "", 1, 0, true},
{fp.Join("data/barebones2.las"), 2.0, "NO", 0, 0, -0.1, -999.25, "", 0, 0, true},
{fp.Join("data/barebones.las"), 2.0, "NO", 0, 0, 1.1, -999.25, "", 1, 0, true},
{fp.Join("data/barebones2.las"), 2.0, "NO", 0, 0, 0, 0, "", 0, 0, true}, // step и null не правятся, отсутствует секция Curve, ошибка заголовка
{fp.Join("data/blank_line.las"), 2.0, "NO", -999.25, -999.25, 0.0833333333333333, -999.25, "", 1, 0, true},
{fp.Join("data/data_characters.las"), 2.0, "NO", 0, 0, 10, -999.25, "", 4, 0, true},
{fp.Join("data/duplicate_step.las"), 1.2, "NO", 1670, 1660, -0.12, -999.25, "ANY ET AL OIL WELL #12", 8, 3, false},
@ -66,8 +67,8 @@ func TestSummaryRead(t *testing.T) {
assert.Equal(t, tmp.wrap, las.Wrap)
assert.Equal(t, tmp.strt, las.Strt)
assert.Equal(t, tmp.stop, las.Stop)
assert.Equal(t, tmp.step, las.Step)
assert.Equal(t, tmp.null, las.Null)
assert.Equal(t, tmp.step, las.Step, fmt.Sprintf("<TestSummaryRead> step fail on file: '%s'\n", tmp.fn))
assert.Equal(t, tmp.null, las.Null, fmt.Sprintf("<TestSummaryRead> null fail on file: '%s'\n", tmp.fn))
assert.Equal(t, tmp.well, las.Well)
}
}

Просмотреть файл

@ -186,7 +186,7 @@ func TestGetStepFromData(t *testing.T) {
for _, tmp := range dGetDataStep {
las := NewLas()
las.Open(tmp.fn)
assert.Equal(t, tmp.st, las.Step)
assert.Equal(t, tmp.st, las.Step, fmt.Sprintf("<TestGetStepFromData> fail on file '%s' \n", tmp.fn))
}
}

183
linter.md
Просмотреть файл

@ -1,77 +1,14 @@
example2\main.go:44:10: Error return value of `las.Save` is not checked (errcheck)
las.Save(las.FileName + "-") //сохраняем с символом минус в расширении
^
example2\main.go:50:15: Error return value of `filepath.Walk` is not checked (errcheck)
filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
^
example\main.go:48:17: Error return value of `las.SaveWarning` is not checked (errcheck)
las.SaveWarning("1.warning.md")
^
las.go:300:21: Error return value of `writer.WriteString` is not checked (errcheck)
writer.WriteString(w.String())
^
las.go:301:21: Error return value of `writer.WriteString` is not checked (errcheck)
writer.WriteString("\n")
^
las.go:314:19: Error return value of `oFile.WriteString` is not checked (errcheck)
oFile.WriteString("**file: " + o.FileName + "**\n")
^
las.go:316:19: Error return value of `oFile.WriteString` is not checked (errcheck)
oFile.WriteString("\n")
^
las.go:366:14: Error return value of `o.LoadHeader` is not checked (errcheck)
o.LoadHeader()
^
las_logger.go:37:16: Error return value of `f.WriteString` is not checked (errcheck)
f.WriteString(msg)
^
las_logger.go:58:16: Error return value of `f.WriteString` is not checked (errcheck)
f.WriteString(s)
^
las_logger.go:60:15: Error return value of `f.WriteString` is not checked (errcheck)
f.WriteString("\n")
^
las_param_test.go:40:20: Error return value of `las.ReadWellParam` is not checked (errcheck)
las.ReadWellParam(tmp.s)
^
las_test.go:42:10: Error return value of `las.Open` is not checked (errcheck)
las.Open(fp.Join("data/more_20_warnings.las"))
^
las_test.go:48:10: Error return value of `las.Open` is not checked (errcheck)
las.Open(fp.Join("data/more_20_warnings.las"))
^
las_test.go:50:18: Error return value of `las.SaveWarning` is not checked (errcheck)
las.SaveWarning(fp.Join("data/more_20_warnings.wrn"))
^
las_test.go:102:17: Error return value of `las.LoadHeader` is not checked (errcheck)
las.LoadHeader()
^
las_test.go:163:10: Error return value of `las.Open` is not checked (errcheck)
las.Open(fp.Join("data/more_20_warnings.las"))
^
las_test.go:221:13: Error return value of `las.SetNull` is not checked (errcheck)
las.SetNull(-999.25)
^
las_test.go:223:10: Error return value of `las.Save` is not checked (errcheck)
las.Save("-tmp.las")
^
las_test.go:258:14: Error return value of `las.SetNull` is not checked (errcheck)
las.SetNull(tmp.newNull)
^
las_test.go:276:13: Error return value of `las.SetNull` is not checked (errcheck)
las.SetNull(-1000)
^
las_test.go:284:11: Error return value of `las.Save` is not checked (errcheck)
las.Save(tmp.fn)
^
las_util.go:62:29: Error return value of `las.setActuallyNumberPoints` is not checked (errcheck)
las.setActuallyNumberPoints(5)
^
las_util.go:81:16: Error return value of `las.LoadHeader` is not checked (errcheck)
las.LoadHeader()
^
las_summary_test.go:24:2: `werr` is unused (structcheck)
werr bool
las_logger.go:49:21: func `(*tCheckMsg).msgFileOpenWarning` is unused (unused)
las_logger.go:65:23: func `(*tMMnemonic).save` is unused (unused)
las_logger.go:45:21: func `(*tCheckMsg).msgFileNoData` is unused (unused)
las_logger.go:41:21: func `(*tCheckMsg).msgFileIsWraped` is unused (unused)
las_logger.go:55:22: func `(*tCurvRprt).save` is unused (unused)
las_logger.go:35:21: func `(*tCheckMsg).save` is unused (unused)
las_logger.go:13:2: field `readedNumPoints` is unused (unused)
las_logger.go:14:2: field `errorOnOpen` is unused (unused)
las_util.go:86:6: func `lasOpenCheck` is unused (unused)
las.go:430:2: ineffectual assignment to `err` (ineffassign)
err = nil
^
las.go:25:2: `_LasCodePage` is unused (deadcode)
_LasCodePage = "CPAGE. 1251: code page \n"
@ -121,14 +58,90 @@ las.go:49:2: `_LasCurvLine2` is unused (deadcode)
las.go:51:2: `_LasDataLine` is unused (deadcode)
_LasDataLine = ""
^
las_util.go:86:6: `lasOpenCheck` is unused (deadcode)
func lasOpenCheck(filename string) LasLog {
^
las_logger.go:35:21: func `(*tCheckMsg).save` is unused (unused)
las_logger.go:55:22: func `(*tCurvRprt).save` is unused (unused)
las_logger.go:65:23: func `(*tMMnemonic).save` is unused (unused)
las_logger.go:14:2: field `errorOnOpen` is unused (unused)
las_logger.go:13:2: field `readedNumPoints` is unused (unused)
las_logger.go:49:21: func `(*tCheckMsg).msgFileOpenWarning` is unused (unused)
las_logger.go:41:21: func `(*tCheckMsg).msgFileIsWraped` is unused (unused)
las_logger.go:45:21: func `(*tCheckMsg).msgFileNoData` is unused (unused)
las.go:260:2: `checkHeaderWrap` is unused (deadcode)
checkHeaderWrap = iota
^
las.go:261:2: `checkHeaderCurve` is unused (deadcode)
checkHeaderCurve = iota
^
las.go:262:2: `checkHeaderStrtStop` is unused (deadcode)
checkHeaderStrtStop = iota
^
example\main.go:48:17: Error return value of `las.SaveWarning` is not checked (errcheck)
las.SaveWarning("1.warning.md")
^
example2\main.go:44:10: Error return value of `las.Save` is not checked (errcheck)
las.Save(las.FileName + "-") //сохраняем с символом минус в расширении
^
example2\main.go:50:15: Error return value of `filepath.Walk` is not checked (errcheck)
filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
^
las.go:355:21: Error return value of `writer.WriteString` is not checked (errcheck)
writer.WriteString(w.String())
^
las.go:356:21: Error return value of `writer.WriteString` is not checked (errcheck)
writer.WriteString("\n")
^
las.go:369:19: Error return value of `oFile.WriteString` is not checked (errcheck)
oFile.WriteString("**file: " + o.FileName + "**\n")
^
las.go:371:19: Error return value of `oFile.WriteString` is not checked (errcheck)
oFile.WriteString("\n")
^
las.go:424:14: Error return value of `o.LoadHeader` is not checked (errcheck)
o.LoadHeader()
^
las.go:433:12: Error return value of `o.SetNull` is not checked (errcheck)
o.SetNull(o.stdNull)
^
las_logger.go:37:16: Error return value of `f.WriteString` is not checked (errcheck)
f.WriteString(msg)
^
las_logger.go:58:16: Error return value of `f.WriteString` is not checked (errcheck)
f.WriteString(s)
^
las_logger.go:60:15: Error return value of `f.WriteString` is not checked (errcheck)
f.WriteString("\n")
^
las_param_test.go:40:20: Error return value of `las.ReadWellParam` is not checked (errcheck)
las.ReadWellParam(tmp.s)
^
las_test.go:42:10: Error return value of `las.Open` is not checked (errcheck)
las.Open(fp.Join("data/more_20_warnings.las"))
^
las_test.go:48:10: Error return value of `las.Open` is not checked (errcheck)
las.Open(fp.Join("data/more_20_warnings.las"))
^
las_test.go:50:18: Error return value of `las.SaveWarning` is not checked (errcheck)
las.SaveWarning(fp.Join("data/more_20_warnings.wrn"))
^
las_test.go:102:17: Error return value of `las.LoadHeader` is not checked (errcheck)
las.LoadHeader()
^
las_test.go:163:10: Error return value of `las.Open` is not checked (errcheck)
las.Open(fp.Join("data/more_20_warnings.las"))
^
las_test.go:221:13: Error return value of `las.SetNull` is not checked (errcheck)
las.SetNull(-999.25)
^
las_test.go:223:10: Error return value of `las.Save` is not checked (errcheck)
las.Save("-tmp.las")
^
las_test.go:258:14: Error return value of `las.SetNull` is not checked (errcheck)
las.SetNull(tmp.newNull)
^
las_test.go:276:13: Error return value of `las.SetNull` is not checked (errcheck)
las.SetNull(-1000)
^
las_test.go:284:11: Error return value of `las.Save` is not checked (errcheck)
las.Save(tmp.fn)
^
las_util.go:62:29: Error return value of `las.setActuallyNumberPoints` is not checked (errcheck)
las.setActuallyNumberPoints(5)
^
las_util.go:81:16: Error return value of `las.LoadHeader` is not checked (errcheck)
las.LoadHeader()
^
las_summary_test.go:25:2: `werr` is unused (structcheck)
werr bool
^

Просмотреть файл

@ -1 +1 @@
0.1.5
0.1.6