1
1
package knowledge
2
2
3
+ const (
4
+ DeprecatedNeverUse = - 1
5
+ DeprecatedUseNoLonger = - 2
6
+ )
7
+
3
8
type Deprecation struct {
4
9
DeprecatedSince int
5
10
AlternativeAvailableSince int
@@ -8,90 +13,91 @@ type Deprecation struct {
8
13
var StdlibDeprecations = map [string ]Deprecation {
9
14
// FIXME(dh): AllowBinary isn't being detected as deprecated
10
15
// because the comment has a newline right after "Deprecated:"
11
- "go/build.AllowBinary" : {7 , 7 },
12
- "(archive/zip.FileHeader).CompressedSize" : {1 , 1 },
13
- "(archive/zip.FileHeader).UncompressedSize" : {1 , 1 },
14
- "(archive/zip.FileHeader).ModifiedTime" : {10 , 10 },
15
- "(archive/zip.FileHeader).ModifiedDate" : {10 , 10 },
16
- "(*archive/zip.FileHeader).ModTime" : {10 , 10 },
17
- "(*archive/zip.FileHeader).SetModTime" : {10 , 10 },
18
- "(go/doc.Package).Bugs" : {1 , 1 },
19
- "os.SEEK_SET" : {7 , 7 },
20
- "os.SEEK_CUR" : {7 , 7 },
21
- "os.SEEK_END" : {7 , 7 },
22
- "(net.Dialer).Cancel" : {7 , 7 },
23
- "runtime.CPUProfile" : {9 , 0 },
24
- "compress/flate.ReadError" : {6 , 6 },
25
- "compress/flate.WriteError" : {6 , 6 },
26
- "path/filepath.HasPrefix" : {0 , 0 },
27
- "(net/http.Transport).Dial" : {7 , 7 },
28
- "(*net/http.Transport).CancelRequest" : {6 , 5 },
29
- "net/http.ErrWriteAfterFlush" : {7 , 0 },
30
- "net/http.ErrHeaderTooLong" : {8 , 0 },
31
- "net/http.ErrShortBody" : {8 , 0 },
32
- "net/http.ErrMissingContentLength" : {8 , 0 },
33
- "net/http/httputil.ErrPersistEOF" : {0 , 0 },
34
- "net/http/httputil.ErrClosed" : {0 , 0 },
35
- "net/http/httputil.ErrPipeline" : {0 , 0 },
36
- "net/http/httputil.ServerConn" : {0 , 0 },
37
- "net/http/httputil.NewServerConn" : {0 , 0 },
38
- "net/http/httputil.ClientConn" : {0 , 0 },
39
- "net/http/httputil.NewClientConn" : {0 , 0 },
40
- "net/http/httputil.NewProxyClientConn" : {0 , 0 },
41
- "(net/http.Request).Cancel" : {7 , 7 },
42
- "(text/template/parse.PipeNode).Line" : {1 , 1 },
43
- "(text/template/parse.ActionNode).Line" : {1 , 1 },
44
- "(text/template/parse.BranchNode).Line" : {1 , 1 },
45
- "(text/template/parse.TemplateNode).Line" : {1 , 1 },
46
- "database/sql/driver.ColumnConverter" : {9 , 9 },
47
- "database/sql/driver.Execer" : {8 , 8 },
48
- "database/sql/driver.Queryer" : {8 , 8 },
49
- "(database/sql/driver.Conn).Begin" : {8 , 8 },
50
- "(database/sql/driver.Stmt).Exec" : {8 , 8 },
51
- "(database/sql/driver.Stmt).Query" : {8 , 8 },
52
- "syscall.StringByteSlice" : {1 , 1 },
53
- "syscall.StringBytePtr" : {1 , 1 },
54
- "syscall.StringSlicePtr" : {1 , 1 },
55
- "syscall.StringToUTF16" : {1 , 1 },
56
- "syscall.StringToUTF16Ptr" : {1 , 1 },
57
- "(*regexp.Regexp).Copy" : {12 , 12 },
58
- "(archive/tar.Header).Xattrs" : {10 , 10 },
59
- "archive/tar.TypeRegA" : {11 , 1 },
60
- "go/types.NewInterface" : {11 , 11 },
61
- "(*go/types.Interface).Embedded" : {11 , 11 },
62
- "go/importer.For" : {12 , 12 },
63
- "encoding/json.InvalidUTF8Error" : {2 , 2 },
64
- "encoding/json.UnmarshalFieldError" : {2 , 2 },
65
- "encoding/csv.ErrTrailingComma" : {2 , 2 },
66
- "(encoding/csv.Reader).TrailingComma" : {2 , 2 },
67
- "(net.Dialer).DualStack" : {12 , 12 },
68
- "net/http.ErrUnexpectedTrailer" : {12 , 12 },
69
- "net/http.CloseNotifier" : {11 , 7 },
70
- "net/http.ProtocolError" : {8 , 8 },
16
+ "go/build.AllowBinary" : {7 , 7 },
17
+ "(archive/zip.FileHeader).CompressedSize" : {1 , 1 },
18
+ "(archive/zip.FileHeader).UncompressedSize" : {1 , 1 },
19
+ "(archive/zip.FileHeader).ModifiedTime" : {10 , 10 },
20
+ "(archive/zip.FileHeader).ModifiedDate" : {10 , 10 },
21
+ "(*archive/zip.FileHeader).ModTime" : {10 , 10 },
22
+ "(*archive/zip.FileHeader).SetModTime" : {10 , 10 },
23
+ "(go/doc.Package).Bugs" : {1 , 1 },
24
+ "os.SEEK_SET" : {7 , 7 },
25
+ "os.SEEK_CUR" : {7 , 7 },
26
+ "os.SEEK_END" : {7 , 7 },
27
+ "(net.Dialer).Cancel" : {7 , 7 },
28
+ "runtime.CPUProfile" : {9 , 0 },
29
+ "compress/flate.ReadError" : {6 , DeprecatedUseNoLonger },
30
+ "compress/flate.WriteError" : {6 , DeprecatedUseNoLonger },
31
+ "path/filepath.HasPrefix" : {0 , DeprecatedNeverUse },
32
+ "(net/http.Transport).Dial" : {7 , 7 },
33
+ "(*net/http.Transport).CancelRequest" : {6 , 5 },
34
+ "net/http.ErrWriteAfterFlush" : {7 , DeprecatedUseNoLonger },
35
+ "net/http.ErrHeaderTooLong" : {8 , DeprecatedUseNoLonger },
36
+ "net/http.ErrShortBody" : {8 , DeprecatedUseNoLonger },
37
+ "net/http.ErrMissingContentLength" : {8 , DeprecatedUseNoLonger },
38
+ "net/http/httputil.ErrPersistEOF" : {0 , DeprecatedUseNoLonger },
39
+ "net/http/httputil.ErrClosed" : {0 , DeprecatedUseNoLonger },
40
+ "net/http/httputil.ErrPipeline" : {0 , DeprecatedUseNoLonger },
41
+ "net/http/httputil.ServerConn" : {0 , 0 },
42
+ "net/http/httputil.NewServerConn" : {0 , 0 },
43
+ "net/http/httputil.ClientConn" : {0 , 0 },
44
+ "net/http/httputil.NewClientConn" : {0 , 0 },
45
+ "net/http/httputil.NewProxyClientConn" : {0 , 0 },
46
+ "(net/http.Request).Cancel" : {7 , 7 },
47
+ "(text/template/parse.PipeNode).Line" : {1 , DeprecatedUseNoLonger },
48
+ "(text/template/parse.ActionNode).Line" : {1 , DeprecatedUseNoLonger },
49
+ "(text/template/parse.BranchNode).Line" : {1 , DeprecatedUseNoLonger },
50
+ "(text/template/parse.TemplateNode).Line" : {1 , DeprecatedUseNoLonger },
51
+ "database/sql/driver.ColumnConverter" : {9 , 9 },
52
+ "database/sql/driver.Execer" : {8 , 8 },
53
+ "database/sql/driver.Queryer" : {8 , 8 },
54
+ "(database/sql/driver.Conn).Begin" : {8 , 8 },
55
+ "(database/sql/driver.Stmt).Exec" : {8 , 8 },
56
+ "(database/sql/driver.Stmt).Query" : {8 , 8 },
57
+ "syscall.StringByteSlice" : {1 , 1 },
58
+ "syscall.StringBytePtr" : {1 , 1 },
59
+ "syscall.StringSlicePtr" : {1 , 1 },
60
+ "syscall.StringToUTF16" : {1 , 1 },
61
+ "syscall.StringToUTF16Ptr" : {1 , 1 },
62
+ "(*regexp.Regexp).Copy" : {12 , DeprecatedUseNoLonger },
63
+ "(archive/tar.Header).Xattrs" : {10 , 10 },
64
+ "archive/tar.TypeRegA" : {11 , 1 },
65
+ "go/types.NewInterface" : {11 , 11 },
66
+ "(*go/types.Interface).Embedded" : {11 , 11 },
67
+ "go/importer.For" : {12 , 12 },
68
+ "encoding/json.InvalidUTF8Error" : {2 , DeprecatedUseNoLonger },
69
+ "encoding/json.UnmarshalFieldError" : {2 , DeprecatedUseNoLonger },
70
+ "encoding/csv.ErrTrailingComma" : {2 , DeprecatedUseNoLonger },
71
+ "(encoding/csv.Reader).TrailingComma" : {2 , DeprecatedUseNoLonger },
72
+ "(net.Dialer).DualStack" : {12 , 12 },
73
+ "net/http.ErrUnexpectedTrailer" : {12 , DeprecatedUseNoLonger },
74
+ "net/http.CloseNotifier" : {11 , 7 },
75
+ // This is hairy. The notice says "Not all errors in the http package related to protocol errors are of type ProtocolError", but doesn't that imply that
76
+ "net/http.ProtocolError" : {8 , DeprecatedUseNoLonger },
71
77
"(crypto/x509.CertificateRequest).Attributes" : {5 , 3 },
72
78
73
79
// These functions have no direct alternative, but they are insecure and should no longer be used.
74
- "crypto/x509.IsEncryptedPEMBlock" : {16 , 0 },
75
- "crypto/x509.DecryptPEMBlock" : {16 , 0 },
76
- "crypto/x509.EncryptPEMBlock" : {16 , 0 },
77
- "crypto/dsa" : {16 , 0 },
80
+ "crypto/x509.IsEncryptedPEMBlock" : {16 , DeprecatedNeverUse },
81
+ "crypto/x509.DecryptPEMBlock" : {16 , DeprecatedNeverUse },
82
+ "crypto/x509.EncryptPEMBlock" : {16 , DeprecatedNeverUse },
83
+ "crypto/dsa" : {16 , DeprecatedNeverUse },
78
84
79
85
// This function has no alternative, but also no purpose.
80
- "(*crypto/rc4.Cipher).Reset" : {12 , 0 },
86
+ "(*crypto/rc4.Cipher).Reset" : {12 , DeprecatedNeverUse },
81
87
"(net/http/httptest.ResponseRecorder).HeaderMap" : {11 , 7 },
82
88
"image.ZP" : {13 , 0 },
83
89
"image.ZR" : {13 , 0 },
84
90
"(*debug/gosym.LineTable).LineToPC" : {2 , 2 },
85
91
"(*debug/gosym.LineTable).PCToLine" : {2 , 2 },
86
- "crypto/tls.VersionSSL30" : {13 , 0 },
87
- "(crypto/tls.Config).NameToCertificate" : {14 , 14 },
88
- "(*crypto/tls.Config).BuildNameToCertificate" : {14 , 14 },
92
+ "crypto/tls.VersionSSL30" : {13 , DeprecatedNeverUse },
93
+ "(crypto/tls.Config).NameToCertificate" : {14 , DeprecatedUseNoLonger },
94
+ "(*crypto/tls.Config).BuildNameToCertificate" : {14 , DeprecatedUseNoLonger },
89
95
"(crypto/tls.Config).SessionTicketKey" : {16 , 5 },
90
96
// No alternative, no use
91
- "(crypto/tls.ConnectionState).NegotiatedProtocolIsMutual" : {16 , 0 },
97
+ "(crypto/tls.ConnectionState).NegotiatedProtocolIsMutual" : {16 , DeprecatedNeverUse },
92
98
// No alternative, but insecure
93
- "(crypto/tls.ConnectionState).TLSUnique" : {16 , 0 },
94
- "image/jpeg.Reader" : {4 , 0 },
99
+ "(crypto/tls.ConnectionState).TLSUnique" : {16 , DeprecatedNeverUse },
100
+ "image/jpeg.Reader" : {4 , DeprecatedNeverUse },
95
101
96
102
// All of these have been deprecated in favour of external libraries
97
103
"syscall.AttachLsf" : {7 , 0 },
0 commit comments