analysis.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. package simple
  2. import (
  3. "flag"
  4. "golang.org/x/tools/go/analysis"
  5. "golang.org/x/tools/go/analysis/passes/inspect"
  6. "honnef.co/go/tools/facts"
  7. "honnef.co/go/tools/internal/passes/buildssa"
  8. "honnef.co/go/tools/lint/lintutil"
  9. )
  10. func newFlagSet() flag.FlagSet {
  11. fs := flag.NewFlagSet("", flag.PanicOnError)
  12. fs.Var(lintutil.NewVersionFlag(), "go", "Target Go version")
  13. return *fs
  14. }
  15. var Analyzers = map[string]*analysis.Analyzer{
  16. "S1000": {
  17. Name: "S1000",
  18. Run: LintSingleCaseSelect,
  19. Doc: Docs["S1000"].String(),
  20. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  21. Flags: newFlagSet(),
  22. },
  23. "S1001": {
  24. Name: "S1001",
  25. Run: LintLoopCopy,
  26. Doc: Docs["S1001"].String(),
  27. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  28. Flags: newFlagSet(),
  29. },
  30. "S1002": {
  31. Name: "S1002",
  32. Run: LintIfBoolCmp,
  33. Doc: Docs["S1002"].String(),
  34. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  35. Flags: newFlagSet(),
  36. },
  37. "S1003": {
  38. Name: "S1003",
  39. Run: LintStringsContains,
  40. Doc: Docs["S1003"].String(),
  41. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  42. Flags: newFlagSet(),
  43. },
  44. "S1004": {
  45. Name: "S1004",
  46. Run: LintBytesCompare,
  47. Doc: Docs["S1004"].String(),
  48. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  49. Flags: newFlagSet(),
  50. },
  51. "S1005": {
  52. Name: "S1005",
  53. Run: LintUnnecessaryBlank,
  54. Doc: Docs["S1005"].String(),
  55. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  56. Flags: newFlagSet(),
  57. },
  58. "S1006": {
  59. Name: "S1006",
  60. Run: LintForTrue,
  61. Doc: Docs["S1006"].String(),
  62. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  63. Flags: newFlagSet(),
  64. },
  65. "S1007": {
  66. Name: "S1007",
  67. Run: LintRegexpRaw,
  68. Doc: Docs["S1007"].String(),
  69. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  70. Flags: newFlagSet(),
  71. },
  72. "S1008": {
  73. Name: "S1008",
  74. Run: LintIfReturn,
  75. Doc: Docs["S1008"].String(),
  76. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  77. Flags: newFlagSet(),
  78. },
  79. "S1009": {
  80. Name: "S1009",
  81. Run: LintRedundantNilCheckWithLen,
  82. Doc: Docs["S1009"].String(),
  83. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  84. Flags: newFlagSet(),
  85. },
  86. "S1010": {
  87. Name: "S1010",
  88. Run: LintSlicing,
  89. Doc: Docs["S1010"].String(),
  90. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  91. Flags: newFlagSet(),
  92. },
  93. "S1011": {
  94. Name: "S1011",
  95. Run: LintLoopAppend,
  96. Doc: Docs["S1011"].String(),
  97. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  98. Flags: newFlagSet(),
  99. },
  100. "S1012": {
  101. Name: "S1012",
  102. Run: LintTimeSince,
  103. Doc: Docs["S1012"].String(),
  104. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  105. Flags: newFlagSet(),
  106. },
  107. "S1016": {
  108. Name: "S1016",
  109. Run: LintSimplerStructConversion,
  110. Doc: Docs["S1016"].String(),
  111. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  112. Flags: newFlagSet(),
  113. },
  114. "S1017": {
  115. Name: "S1017",
  116. Run: LintTrim,
  117. Doc: Docs["S1017"].String(),
  118. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  119. Flags: newFlagSet(),
  120. },
  121. "S1018": {
  122. Name: "S1018",
  123. Run: LintLoopSlide,
  124. Doc: Docs["S1018"].String(),
  125. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  126. Flags: newFlagSet(),
  127. },
  128. "S1019": {
  129. Name: "S1019",
  130. Run: LintMakeLenCap,
  131. Doc: Docs["S1019"].String(),
  132. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  133. Flags: newFlagSet(),
  134. },
  135. "S1020": {
  136. Name: "S1020",
  137. Run: LintAssertNotNil,
  138. Doc: Docs["S1020"].String(),
  139. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  140. Flags: newFlagSet(),
  141. },
  142. "S1021": {
  143. Name: "S1021",
  144. Run: LintDeclareAssign,
  145. Doc: Docs["S1021"].String(),
  146. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  147. Flags: newFlagSet(),
  148. },
  149. "S1023": {
  150. Name: "S1023",
  151. Run: LintRedundantBreak,
  152. Doc: Docs["S1023"].String(),
  153. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  154. Flags: newFlagSet(),
  155. },
  156. "S1024": {
  157. Name: "S1024",
  158. Run: LintTimeUntil,
  159. Doc: Docs["S1024"].String(),
  160. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  161. Flags: newFlagSet(),
  162. },
  163. "S1025": {
  164. Name: "S1025",
  165. Run: LintRedundantSprintf,
  166. Doc: Docs["S1025"].String(),
  167. Requires: []*analysis.Analyzer{buildssa.Analyzer, inspect.Analyzer, facts.Generated},
  168. Flags: newFlagSet(),
  169. },
  170. "S1028": {
  171. Name: "S1028",
  172. Run: LintErrorsNewSprintf,
  173. Doc: Docs["S1028"].String(),
  174. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  175. Flags: newFlagSet(),
  176. },
  177. "S1029": {
  178. Name: "S1029",
  179. Run: LintRangeStringRunes,
  180. Doc: Docs["S1029"].String(),
  181. Requires: []*analysis.Analyzer{buildssa.Analyzer},
  182. Flags: newFlagSet(),
  183. },
  184. "S1030": {
  185. Name: "S1030",
  186. Run: LintBytesBufferConversions,
  187. Doc: Docs["S1030"].String(),
  188. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  189. Flags: newFlagSet(),
  190. },
  191. "S1031": {
  192. Name: "S1031",
  193. Run: LintNilCheckAroundRange,
  194. Doc: Docs["S1031"].String(),
  195. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  196. Flags: newFlagSet(),
  197. },
  198. "S1032": {
  199. Name: "S1032",
  200. Run: LintSortHelpers,
  201. Doc: Docs["S1032"].String(),
  202. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  203. Flags: newFlagSet(),
  204. },
  205. "S1033": {
  206. Name: "S1033",
  207. Run: LintGuardedDelete,
  208. Doc: Docs["S1033"].String(),
  209. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  210. Flags: newFlagSet(),
  211. },
  212. "S1034": {
  213. Name: "S1034",
  214. Run: LintSimplifyTypeSwitch,
  215. Doc: Docs["S1034"].String(),
  216. Requires: []*analysis.Analyzer{inspect.Analyzer, facts.Generated},
  217. Flags: newFlagSet(),
  218. },
  219. }