6363 < h1 > Clean SQL, every time</ h1 >
6464 < p class ="tagline "> A SQL linter and formatter, 50× faster than sqruff.</ p >
6565 < p class ="lede ">
66- SQLClean flags SQL that runs but rarely does what you meant, applies safe fixes, and formats every file
67- one way. Custom Rules are plain Python functions, backed by a Rust API that keeps them fast.
66+ SQLClean spots SQL patterns that look right but quietly misbehave, such as < code > = NULL</ code > or a
67+ < code > NOT IN</ code > list with a NULL, applies safe fixes, and formats every file one way.
68+ Custom Rules are plain Python functions, backed by a Rust API that keeps them fast.
6869 </ p >
6970 < div class ="actions ">
7071 < div class ="install ">
@@ -103,20 +104,20 @@ <h1>Clean SQL, every time</h1>
103104 < section >
104105 < div class ="wrap ">
105106 < div class ="section-head ">
106- < h2 > Why SQL stays messy </ h2 >
107+ < h2 > Where SQL review goes wrong </ h2 >
107108 </ div >
108109 < div class ="problem ">
109110 < div class ="card ">
110- < h3 > Valid isn't the same as correct </ h3 >
111+ < h3 > Some bugs are right there in the text </ h3 >
111112 < p > < code > WHERE x = NULL</ code > runs without an error and matches no rows.</ p >
112113 </ div >
113114 < div class ="card ">
114115 < h3 > Style eats review time</ h3 >
115116 < p > Reviewers argue about commas and casing instead of the logic.</ p >
116117 </ div >
117118 < div class ="card ">
118- < h3 > Team rules live in people's heads </ h3 >
119- < p > "Use COALESCE, not IFNULL" holds until someone new misses it.</ p >
119+ < h3 > House style is unwritten </ h3 >
120+ < p > "Use COALESCE, not IFNULL" is only a convention until a tool checks it.</ p >
120121 </ div >
121122 < div class ="card ">
122123 < h3 > Autofixes you can't trust</ h3 >
@@ -138,7 +139,7 @@ <h2>From a messy query to a clean one</h2>
138139 < div class ="step ">
139140 < div class ="step-text ">
140141 < span class ="num "> 01 · Catch common mistakes</ span >
141- < h3 > Flag SQL that runs but is easy to get wrong </ h3 >
142+ < h3 > Flag the SQL traps reviewers miss </ h3 >
142143 < p >
143144 Default Rules flag comparisons with < code > NULL</ code > , < code > NOT IN</ code > lists that contain
144145 < code > NULL</ code > , and < code > ROW_NUMBER</ code > with no deterministic order. Each finding points at the
@@ -243,8 +244,8 @@ <h3>Stop arguing about layout</h3>
243244 < p class ="step-group "> Keep them fixed</ p >
244245 < div class ="step ">
245246 < div class ="step-text ">
246- < span class ="num "> 04 · Make lessons permanent </ span >
247- < h3 > Turn review comments into Rules</ h3 >
247+ < span class ="num "> 04 · Encode your house style </ span >
248+ < h3 > Write your conventions as Rules</ h3 >
248249 < p >
249250 A custom Rule is a Python function over statement facts, already parsed and located for you.
250251 This team uses COALESCE instead of IFNULL to keep queries portable. The Rule reads function calls,
@@ -372,7 +373,7 @@ <h3>Before every commit and in CI</h3>
372373 < span class ="dim "> …</ span > </ pre >
373374 </ div >
374375 </ div >
375- < p class ="caption "> Real output from < code > sqlclean</ code > on small example projects, trimmed to the relevant lines .</ p >
376+ < p class ="caption "> Each panel shows actual < code > sqlclean</ code > output on a small example project, cut down to the findings that matter .</ p >
376377 </ div >
377378 </ section >
378379
@@ -438,7 +439,7 @@ <h2>Start in a minute</h2>
438439 < section class ="closing ">
439440 < div class ="wrap ">
440441 < h2 > Make clean SQL the default</ h2 >
441- < p > The docs cover every command, every Rule, configuration and custom Rules.</ p >
442+ < p > Browse every Rule with examples, then set up configuration, custom Rules and CI .</ p >
442443 < div class ="actions ">
443444 < a class ="button primary " href ="/docs/ "> Read the docs</ a >
444445 < a class ="button " href ="/docs/quickstart/ "> Quickstart</ a >
0 commit comments