Preparing report...

Report for github.com/kshedden/datareader

A+    Excellent!    Found 10 issues across 18 files

Tweet

gofmt100%

Gofmt formats Go programs. We run gofmt -s on your code, where -s is for the "simplify" command

No problems detected. Good job!


go_vet100%

go vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string.

No problems detected. Good job!


golint83%

Golint is a linter for Go source code.

    • datareader/sas7bdat.go
    • Line 178: warning: exported const SASNumericType should have comment (or a comment on this block) or be unexported (golint)
    • Line 183: warning: don't use underscores in Go names; var subheader_signature_to_index should be subheaderSignatureToIndex (golint)
    • Line 219: warning: don't use underscores in Go names; const align_1_checker_value should be align1CheckerValue (golint)
    • Line 220: warning: don't use underscores in Go names; const align_1_offset should be align1Offset (golint)
    • Line 221: warning: don't use underscores in Go names; const align_1_length should be align1Length (golint)
    • Line 222: warning: don't use underscores in Go names; const u64_byte_checker_value should be u64ByteCheckerValue (golint)
    • Line 223: warning: don't use underscores in Go names; const align_2_offset should be align2Offset (golint)
    • Line 224: warning: don't use underscores in Go names; const align_2_length should be align2Length (golint)
    • Line 225: warning: don't use underscores in Go names; const align_2_value should be align2Value (golint)
    • Line 226: warning: don't use underscores in Go names; const endianness_offset should be endiannessOffset (golint)
    • Line 227: warning: don't use underscores in Go names; const endianness_length should be endiannessLength (golint)
    • Line 228: warning: don't use underscores in Go names; const platform_offset should be platformOffset (golint)
    • Line 229: warning: don't use underscores in Go names; const platform_length should be platformLength (golint)
    • Line 230: warning: don't use underscores in Go names; const encoding_offset should be encodingOffset (golint)
    • Line 231: warning: don't use underscores in Go names; const encoding_length should be encodingLength (golint)
    • Line 232: warning: don't use underscores in Go names; const dataset_offset should be datasetOffset (golint)
    • Line 233: warning: don't use underscores in Go names; const dataset_length should be datasetLength (golint)
    • Line 234: warning: don't use underscores in Go names; const file_type_offset should be fileTypeOffset (golint)
    • Line 235: warning: don't use underscores in Go names; const file_type_length should be fileTypeLength (golint)
    • Line 236: warning: don't use underscores in Go names; const date_created_offset should be dateCreatedOffset (golint)
    • Line 237: warning: don't use underscores in Go names; const date_created_length should be dateCreatedLength (golint)
    • Line 238: warning: don't use underscores in Go names; const date_modified_offset should be dateModifiedOffset (golint)
    • Line 239: warning: don't use underscores in Go names; const date_modified_length should be dateModifiedLength (golint)
    • Line 240: warning: don't use underscores in Go names; const header_size_offset should be headerSizeOffset (golint)
    • Line 241: warning: don't use underscores in Go names; const header_size_length should be headerSizeLength (golint)
    • Line 242: warning: don't use underscores in Go names; const page_size_offset should be pageSizeOffset (golint)
    • Line 243: warning: don't use underscores in Go names; const page_size_length should be pageSizeLength (golint)
    • Line 244: warning: don't use underscores in Go names; const page_count_offset should be pageCountOffset (golint)
    • Line 245: warning: don't use underscores in Go names; const page_count_length should be pageCountLength (golint)
    • Line 246: warning: don't use underscores in Go names; const sas_release_offset should be sasReleaseOffset (golint)
    • Line 247: warning: don't use underscores in Go names; const sas_release_length should be sasReleaseLength (golint)
    • Line 248: warning: don't use underscores in Go names; const sas_server_type_offset should be sasServerTypeOffset (golint)
    • Line 249: warning: don't use underscores in Go names; const sas_server_type_length should be sasServerTypeLength (golint)
    • Line 250: warning: don't use underscores in Go names; const os_version_number_offset should be osVersionNumberOffset (golint)
    • Line 251: warning: don't use underscores in Go names; const os_version_number_length should be osVersionNumberLength (golint)
    • Line 252: warning: don't use underscores in Go names; const os_maker_offset should be osMakerOffset (golint)
    • Line 253: warning: don't use underscores in Go names; const os_maker_length should be osMakerLength (golint)
    • Line 254: warning: don't use underscores in Go names; const os_name_offset should be osNameOffset (golint)
    • Line 255: warning: don't use underscores in Go names; const os_name_length should be osNameLength (golint)
    • Line 256: warning: don't use underscores in Go names; const page_bit_offset_x86 should be pageBitOffsetX86 (golint)
    • Line 257: warning: don't use underscores in Go names; const page_bit_offset_x64 should be pageBitOffsetX64 (golint)
    • Line 258: warning: don't use underscores in Go names; const subheader_pointer_length_x86 should be subheaderPointerLengthX86 (golint)
    • Line 259: warning: don't use underscores in Go names; const subheader_pointer_length_x64 should be subheaderPointerLengthX64 (golint)
    • Line 260: warning: don't use underscores in Go names; const page_type_offset should be pageTypeOffset (golint)
    • Line 261: warning: don't use underscores in Go names; const page_type_length should be pageTypeLength (golint)
    • Line 262: warning: don't use underscores in Go names; const block_count_offset should be blockCountOffset (golint)
    • Line 263: warning: don't use underscores in Go names; const block_count_length should be blockCountLength (golint)
    • Line 264: warning: don't use underscores in Go names; const subheader_count_offset should be subheaderCountOffset (golint)
    • Line 265: warning: don't use underscores in Go names; const subheader_count_length should be subheaderCountLength (golint)
    • Line 266: warning: don't use underscores in Go names; const page_meta_type should be pageMetaType (golint)
    • Line 267: warning: don't use underscores in Go names; const page_data_type should be pageDataType (golint)
    • Line 268: warning: don't use underscores in Go names; const page_amd_type should be pageAmdType (golint)
    • Line 269: warning: don't use underscores in Go names; const subheader_pointers_offset should be subheaderPointersOffset (golint)
    • Line 270: warning: don't use underscores in Go names; const truncated_subheader_id should be truncatedSubheaderID (golint)
    • Line 271: warning: don't use underscores in Go names; const compressed_subheader_id should be compressedSubheaderID (golint)
    • Line 272: warning: don't use underscores in Go names; const compressed_subheader_type should be compressedSubheaderType (golint)
    • Line 273: warning: don't use underscores in Go names; const text_block_size_length should be textBlockSizeLength (golint)
    • Line 274: warning: don't use underscores in Go names; const row_length_offset_multiplier should be rowLengthOffsetMultiplier (golint)
    • Line 275: warning: don't use underscores in Go names; const row_count_offset_multiplier should be rowCountOffsetMultiplier (golint)
    • Line 276: warning: don't use underscores in Go names; const col_count_p1_multiplier should be colCountP1Multiplier (golint)
    • Line 277: warning: don't use underscores in Go names; const col_count_p2_multiplier should be colCountP2Multiplier (golint)
    • Line 278: warning: don't use underscores in Go names; const row_count_on_mix_page_offset_multiplier should be rowCountOnMixPageOffsetMultiplier (golint)
    • Line 279: warning: don't use underscores in Go names; const column_name_pointer_length should be columnNamePointerLength (golint)
    • Line 280: warning: don't use underscores in Go names; const column_name_text_subheader_offset should be columnNameTextSubheaderOffset (golint)
    • Line 281: warning: don't use underscores in Go names; const column_name_text_subheader_length should be columnNameTextSubheaderLength (golint)
    • Line 282: warning: don't use underscores in Go names; const column_name_offset_offset should be columnNameOffsetOffset (golint)
    • Line 283: warning: don't use underscores in Go names; const column_name_offset_length should be columnNameOffsetLength (golint)
    • Line 284: warning: don't use underscores in Go names; const column_name_length_offset should be columnNameLengthOffset (golint)
    • Line 285: warning: don't use underscores in Go names; const column_name_length_length should be columnNameLengthLength (golint)
    • Line 286: warning: don't use underscores in Go names; const column_data_offset_offset should be columnDataOffsetOffset (golint)
    • Line 287: warning: don't use underscores in Go names; const column_data_length_offset should be columnDataLengthOffset (golint)
    • Line 288: warning: don't use underscores in Go names; const column_data_length_length should be columnDataLengthLength (golint)
    • Line 289: warning: don't use underscores in Go names; const column_type_offset should be columnTypeOffset (golint)
    • Line 290: warning: don't use underscores in Go names; const column_type_length should be columnTypeLength (golint)
    • Line 291: warning: don't use underscores in Go names; const column_format_text_subheader_index_offset should be columnFormatTextSubheaderIndexOffset (golint)
    • Line 292: warning: don't use underscores in Go names; const column_format_text_subheader_index_length should be columnFormatTextSubheaderIndexLength (golint)
    • Line 293: warning: don't use underscores in Go names; const column_format_offset_offset should be columnFormatOffsetOffset (golint)
    • Line 294: warning: don't use underscores in Go names; const column_format_offset_length should be columnFormatOffsetLength (golint)
    • Line 295: warning: don't use underscores in Go names; const column_format_length_offset should be columnFormatLengthOffset (golint)
    • Line 296: warning: don't use underscores in Go names; const column_format_length_length should be columnFormatLengthLength (golint)
    • Line 297: warning: don't use underscores in Go names; const column_label_text_subheader_index_offset should be columnLabelTextSubheaderIndexOffset (golint)
    • Line 298: warning: don't use underscores in Go names; const column_label_text_subheader_index_length should be columnLabelTextSubheaderIndexLength (golint)
    • Line 299: warning: don't use underscores in Go names; const column_label_offset_offset should be columnLabelOffsetOffset (golint)
    • Line 300: warning: don't use underscores in Go names; const column_label_offset_length should be columnLabelOffsetLength (golint)
    • Line 301: warning: don't use underscores in Go names; const column_label_length_offset should be columnLabelLengthOffset (golint)
    • Line 302: warning: don't use underscores in Go names; const column_label_length_length should be columnLabelLengthLength (golint)
    • Line 303: warning: don't use underscores in Go names; const rle_compression should be rleCompression (golint)
    • Line 304: warning: don't use underscores in Go names; const rdc_compression should be rdcCompression (golint)
    • Line 315: warning: don't use underscores in Go names; var encoding_names should be encodingNames (golint)
    • Line 318: warning: don't use underscores in Go names; var compression_literals should be compressionLiterals (golint)
    • Line 339: warning: don't use underscores in Go names; func rle_decompress should be rleDecompress (golint)
    • Line 339: warning: don't use underscores in Go names; func parameter result_length should be resultLength (golint)
    • Line 343: warning: don't use underscores in Go names; var control_byte should be controlByte (golint)
    • Line 344: warning: don't use underscores in Go names; var end_of_first_byte should be endOfFirstByte (golint)
    • Line 429: warning: don't use underscores in Go names; func rdc_decompress should be rdcDecompress (golint)
    • Line 429: warning: don't use underscores in Go names; func parameter result_length should be resultLength (golint)
    • Line 431: warning: don't use underscores in Go names; var ctrl_bits should be ctrlBits (golint)
    • Line 432: warning: don't use underscores in Go names; var ctrl_mask should be ctrlMask (golint)
    • Line 436: warning: don't use underscores in Go names; var inbuff_pos should be inbuffPos (golint)
    • Line 443: warning: don't use underscores in Go names; var inbuff_pos should be inbuffPos (golint)
    • Line 638: warning: don't use underscores in Go names; method parameter num_rows should be numRows (golint)
    • Line 745: warning: don't use underscores in Go names; func date_time should be dateTime (golint)
    • Line 761: warning: error should be the last type when returning multiple items (golint)
    • Line 763: warning: don't use underscores in Go names; var bit_offset should be bitOffset (golint)
    • Line 792: warning: don't use underscores in Go names; var current_subheader_pointer should be currentSubheaderPointer (golint)
    • Line 845: warning: error should be the last type when returning multiple items (golint)
    • Line 921: warning: don't use underscores in Go names; var total_align should be totalAlign (golint)
    • Line 1069: warning: don't use underscores in Go names; var bit_offset should be bitOffset (golint)
    • Line 1079: warning: don't use underscores in Go names; var subheader_signature should be subheaderSignature (golint)
    • Line 1083: warning: don't use underscores in Go names; var subheader_index should be subheaderIndex (golint)
    • Line 1097: warning: don't use underscores in Go names; method parameter subheader_index should be subheaderIndex (golint)
    • Line 1142: warning: don't use underscores in Go names; var subheader_signature should be subheaderSignature (golint)
    • Line 1265: warning: don't use underscores in Go names; var int_len should be intLen (golint)
    • Line 1266: warning: don't use underscores in Go names; var lcs_offset should be lcsOffset (golint)
    • Line 1267: warning: don't use underscores in Go names; var lcp_offset should be lcpOffset (golint)
    • Line 1269: warning: don't use underscores in Go names; var lcs_offset should be lcsOffset (golint)
    • Line 1270: warning: don't use underscores in Go names; var lcp_offset should be lcpOffset (golint)
    • Line 1272: warning: don't use underscores in Go names; var lcs_offset should be lcsOffset (golint)
    • Line 1273: warning: don't use underscores in Go names; var lcp_offset should be lcpOffset (golint)
    • Line 1339: warning: don't use underscores in Go names; var column_name should be columnName (golint)
    • Line 1340: warning: don't use underscores in Go names; var compression_literal should be compressionLiteral (golint)
    • Line 1402: warning: don't use underscores in Go names; var column_name_pointers_count should be columnNamePointersCount (golint)
    • Line 1404: warning: don't use underscores in Go names; var text_subheader should be textSubheader (golint)
    • Line 1405: warning: don't use underscores in Go names; var col_name_offset should be colNameOffset (golint)
    • Line 1406: warning: don't use underscores in Go names; var col_name_length should be colNameLength (golint)
    • Line 1412: warning: don't use underscores in Go names; var col_offset should be colOffset (golint)
    • Line 1416: warning: don't use underscores in Go names; var col_len should be colLen (golint)
    • Line 1421: warning: don't use underscores in Go names; var name_str should be nameStr (golint)
    • Line 1436: warning: don't use underscores in Go names; var column_attributes_vectors_count should be columnAttributesVectorsCount (golint)
    • Line 1471: warning: don't use underscores in Go names; var int_len should be intLen (golint)
    • Line 1472: warning: don't use underscores in Go names; var text_subheader_format should be textSubheaderFormat (golint)
    • Line 1473: warning: don't use underscores in Go names; var col_format_offset should be colFormatOffset (golint)
    • Line 1474: warning: don't use underscores in Go names; var col_format_len should be colFormatLen (golint)
    • Line 1475: warning: don't use underscores in Go names; var text_subheader_label should be textSubheaderLabel (golint)
    • Line 1476: warning: don't use underscores in Go names; var col_label_offset should be colLabelOffset (golint)
    • Line 1477: warning: don't use underscores in Go names; var col_label_len should be colLabelLen (golint)
    • Line 1479: warning: don't use underscores in Go names; var format_idx should be formatIdx (golint)
    • Line 1482: warning: don't use underscores in Go names; var format_start should be formatStart (golint)
    • Line 1483: warning: don't use underscores in Go names; var format_len should be formatLen (golint)
    • Line 1485: warning: don't use underscores in Go names; var label_idx should be labelIdx (golint)
    • Line 1488: warning: don't use underscores in Go names; var label_start should be labelStart (golint)
    • Line 1489: warning: don't use underscores in Go names; var label_len should be labelLen (golint)
    • Line 1491: warning: don't use underscores in Go names; var label_names should be labelNames (golint)
    • Line 1492: warning: don't use underscores in Go names; var column_label should be columnLabel (golint)
    • Line 1493: warning: don't use underscores in Go names; var format_names should be formatNames (golint)
    • Line 1494: warning: don't use underscores in Go names; var column_format should be columnFormat (golint)
    • Line 1495: warning: don't use underscores in Go names; var current_column_number should be currentColumnNumber (golint)
    • Line 1597: warning: don't use underscores in Go names; func parameter current_page should be currentPage (golint)

gocyclo61%

Gocyclo calculates cyclomatic complexities of functions in Go source code. The cyclomatic complexity of a function is calculated according to the following rules: 1 is the base complexity of a function +1 for each 'if', 'for', 'case', '&&' or '||' Go Report Card warns on functions with cyclomatic complexity > 15.

    • datareader/series.go
    • Line 257: warning: cyclomatic complexity 60 of function (*Series).AllClose() is high (> 15) (gocyclo)
    • Line 84: warning: cyclomatic complexity 58 of function (*Series).WriteRange() is high (> 15) (gocyclo)
    • Line 408: warning: cyclomatic complexity 16 of function (*Series).UpcastNumeric() is high (> 15) (gocyclo)
    • datareader/stata_reader.go
    • Line 440: warning: cyclomatic complexity 33 of function (*StataReader).readNewHeader() is high (> 15) (gocyclo)
    • Line 1097: warning: cyclomatic complexity 30 of function (*StataReader).readRow() is high (> 15) (gocyclo)
    • Line 159: warning: cyclomatic complexity 19 of function (*StataReader).init() is high (> 15) (gocyclo)
    • Line 884: warning: cyclomatic complexity 18 of function (*StataReader).readValueLabels() is high (> 15) (gocyclo)
    • Line 963: warning: cyclomatic complexity 17 of function (*StataReader).readStrls() is high (> 15) (gocyclo)
    • Line 1180: warning: cyclomatic complexity 16 of function (*StataReader).Read() is high (> 15) (gocyclo)
    • datareader/sas7bdat.go
    • Line 881: warning: cyclomatic complexity 31 of function (*SAS7BDAT).getProperties() is high (> 15) (gocyclo)
    • Line 339: warning: cyclomatic complexity 23 of function rle_decompress() is high (> 15) (gocyclo)
    • Line 761: warning: cyclomatic complexity 22 of function (*SAS7BDAT).readline() is high (> 15) (gocyclo)
    • Line 1327: warning: cyclomatic complexity 16 of function (*SAS7BDAT).processColumnTextSubheader() is high (> 15) (gocyclo)

ineffassign100%

IneffAssign detects ineffectual assignments in Go code.

No problems detected. Good job!


license100%

Checks whether your project has a LICENSE file.

No problems detected. Good job!


misspell94%

Misspell Finds commonly misspelled English words