Check for misspellings, based on Debian's lintian list. Several false positives were removed, and several additional words added that were common in the kernel:
backword backwords invalide valide recieves singed unsinged While going back and fixing existing spelling mistakes isn't a high priority, it'd be nice to try to catch them before they hit the tree. Between 3.15 and 3.16-rc7, the script would have noticed the following 46 mistakes: 6 prefered 6 endianess 5 recieve 4 changable 3 sytem 3 synchonized 3 splitted 3 informations 2 unconditionaly 2 sucessfully 2 seperate 2 recieved 2 preceeding 2 paramters 2 managment 2 fuction 2 accesing 1 writting 1 targetting 1 syncronize 1 supress 1 succesful 1 specifed 1 serveral 1 repectively 1 registerd 1 paramter 1 overriden 1 neccessary 1 lenght 1 intial 1 initalize 1 dependant 1 dependancy 1 correspoding 1 correponds 1 contraints 1 compatibilty 1 childs 1 begining 1 becomming 1 bandwith 1 availble 1 amoung 1 alot 1 addreses For additional context, here are the top 15 spelling mistakes in the entire tree: 131 informations 96 ressize 80 prefered 68 endianess 61 transfered 60 childs 59 overriden 55 treshold 46 capabilites 40 splitted 39 commited 33 continous 31 ouput 29 lenght 29 explicitely Signed-off-by: Kees Cook <keesc...@chromium.org> --- MAINTAINERS | 1 + scripts/checkpatch.pl | 37 +++- scripts/spelling.txt | 595 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 632 insertions(+), 1 deletion(-) create mode 100644 scripts/spelling.txt diff --git a/MAINTAINERS b/MAINTAINERS index aefa94841ff3..b20d7bde5403 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2311,6 +2311,7 @@ M: Andy Whitcroft <a...@canonical.com> M: Joe Perches <j...@perches.com> S: Maintained F: scripts/checkpatch.pl +F: scripts/spelling.txt CHINESE DOCUMENTATION M: Harry Wei <harryxi...@gmail.com> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 31a731e06f50..8a338e2a5a59 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -9,7 +9,8 @@ use strict; use POSIX; my $P = $0; -$P =~ s@.*/@@g; +$P =~ s@(.*)/@@g; +my $D = $1; my $V = '0.32'; @@ -43,6 +44,7 @@ my $configuration_file = ".checkpatch.conf"; my $max_line_length = 80; my $ignore_perl_version = 0; my $minimum_perl_version = 5.10.0; +my $spelling_file = "$D/spelling.txt"; sub help { my ($exitcode) = @_; @@ -429,6 +431,32 @@ our $allowed_asm_includes = qr{(?x: )}; # memory.h: ARM has a custom one +# Load common spelling mistakes and build regular expression list. +my $spelling_re; +my @spelling_list; +my %spelling_fix; +open(my $spelling, '<', $spelling_file) + or die "$P: Can't open $spelling_file for reading: $!\n"; +while (<$spelling>) { + my $line = $_; + + $line =~ s/\s*\n?$//g; + $line =~ s/^\s*//g; + + next if ($line =~ m/^\s*#/); + next if ($line =~ m/^\s*$/); + + my ($suspect, $fix) = split(/\|\|/, $line); + + push(@spelling_list, $suspect); + $spelling_fix{$suspect} = $fix; +} +close($spelling); +# $edge can't be "\b" because that includes things like "_". And we should +# not treat "@" as a boundary so we don't trip on email addresses. +my $edge = "[^[:alpha:]@]"; +$spelling_re = "(?:^|$edge)(" . join("|", @spelling_list) . ")(?:\$|$edge)"; + sub build_types { my $mods = "(?x: \n" . join("|\n ", @modifierList) . "\n)"; my $all = "(?x: \n" . join("|\n ", @typeList) . "\n)"; @@ -5048,6 +5076,13 @@ sub process { } } } + +# Check for several spelling mistakes. + if ($rawline =~ $spelling_re) { + my $typo = "The word '$1' may be misspelled"; + $typo .= " (perhaps you want '$spelling_fix{$1}'?)\n"; + WARN("TYPO_SPELLING", $typo . $herecurr); + } } # If we have no input at all, then there is nothing to report on diff --git a/scripts/spelling.txt b/scripts/spelling.txt new file mode 100644 index 000000000000..03c6234464ee --- /dev/null +++ b/scripts/spelling.txt @@ -0,0 +1,595 @@ +# Originally from Debian's Lintian tool. Various false positives have been +# removed, and various additions have been made as they've been discovered +# in the kernel source. +# +# License: GPLv2 +# +# The format of each line is: +# mistake||correction +# +abandonning||abandoning +abigious||ambiguous +abitrate||arbitrate +abov||above +absense||absence +absolut||absolute +absoulte||absolute +acceleratoin||acceleration +accelleration||acceleration +accesing||accessing +accesnt||accent +accessable||accessible +accesss||access +accidentaly||accidentally +accidentually||accidentally +accomodate||accommodate +accomodates||accommodates +accout||account +acessable||accessible +acess||access +acient||ancient +acknowldegement||acknowldegement +ackowledge||acknowledge +ackowledged||acknowledged +acording||according +activete||activate +acumulating||accumulating +addional||additional +additionaly||additionally +addreses||addresses +aditional||additional +aditionally||additionally +aditionaly||additionally +adress||address +adresses||addresses +adviced||advised +afecting||affecting +albumns||albums +alegorical||allegorical +algorith||algorithm +algorithmical||algorithmically +algoritm||algorithm +algoritms||algorithms +algorrithm||algorithm +algorritm||algorithm +allpication||application +alogirhtms||algorithms +alot||a lot +alow||allow +alows||allows +altough||although +ambigious||ambiguous +amoung||among +amout||amount +analysator||analyzer +ang||and +anniversery||anniversary +annoucement||announcement +anomolies||anomalies +anomoly||anomaly +aplication||application +appearence||appearance +appliction||application +applictions||applications +appropiate||appropriate +appropriatly||appropriately +aquired||acquired +arbitary||arbitrary +architechture||architecture +arguement||argument +arguements||arguments +aritmetic||arithmetic +arne't||aren't +arraival||arrival +artifical||artificial +artillary||artillery +assigment||assignment +assigments||assignments +assistent||assistant +asuming||assuming +asycronous||asynchronous +atomatically||automatically +attachement||attachment +attemps||attempts +attruibutes||attributes +authentification||authentication +automaticaly||automatically +automaticly||automatically +automatize||automate +automatized||automated +automatizes||automates +autonymous||autonomous +auxilliary||auxiliary +avaiable||available +availabled||available +availablity||availability +availale||available +availavility||availability +availble||available +availble||available +availiable||available +avaliable||available +avaliable||available +backgroud||background +backword||backward +backwords||backwards +bahavior||behavior +baloon||balloon +baloons||balloons +bandwith||bandwidth +batery||battery +becomming||becoming +becuase||because +begining||beginning +bianries||binaries +calender||calendar +cancelation||cancellation +capabilites||capabilities +capatibilities||capabilities +cariage||carriage +challange||challenge +challanges||challenges +changable||changeable +charachter||character +charachters||characters +charater||character +charaters||characters +charcter||character +childs||children +chnage||change +chnages||changes +choosen||chosen +collapsable||collapsible +colorfull||colorful +comand||command +comit||commit +commerical||commercial +comminucation||communication +commited||committed +commiting||committing +committ||commit +commoditiy||commodity +compability||compatibility +compatability||compatibility +compatable||compatible +compatibiliy||compatibility +compatibilty||compatibility +compilant||compliant +compleatly||completely +completly||completely +complient||compliant +compres||compress +compresion||compression +comression||compression +conditionaly||conditionally +configuratoin||configuration +conjuction||conjunction +connectinos||connections +connnection||connection +connnections||connections +consistancy||consistency +consistant||consistent +containes||contains +containts||contains +contaisn||contains +contence||contents +continous||continuous +continously||continuously +continueing||continuing +contraints||constraints +convertor||converter +convinient||convenient +corected||corrected +correponding||corresponding +correponds||corresponds +correspoding||corresponding +cryptocraphic||cryptographic +curently||currently +dafault||default +deafult||default +deamon||daemon +decompres||decompress +definate||definite +definately||definitely +delared||declared +delare||declare +delares||declares +delaring||declaring +delemiter||delimiter +dependancies||dependencies +dependancy||dependency +dependant||dependent +depreacted||deprecated +depreacte||deprecate +desactivate||deactivate +detabase||database +developement||development +developped||developed +developpement||development +developper||developer +developpment||development +deveolpment||development +devided||divided +dictionnary||dictionary +diplay||display +disapeared||disappeared +dispertion||dispersion +dissapears||disappears +docuentation||documentation +documantation||documentation +documentaion||documentation +downlad||download +downlads||downloads +easilly||easily +ecspecially||especially +edditable||editable +editting||editing +efficently||efficiently +eletronic||electronic +enchanced||enhanced +encorporating||incorporating +endianess||endianness +enhaced||enhanced +enlightnment||enlightenment +enocded||encoded +enterily||entirely +enviroiment||environment +enviroment||environment +environement||environment +environent||environment +equiped||equipped +equivelant||equivalent +equivilant||equivalent +estbalishment||establishment +etsablishment||establishment +etsbalishment||establishment +excecutable||executable +exceded||exceeded +excellant||excellent +exlcude||exclude +exlcusive||exclusive +expecially||especially +explicitely||explicitly +explict||explicit +explictly||explicitly +expresion||expression +exprimental||experimental +extensability||extensibility +extention||extension +extracter||extractor +failuer||failure +familar||familiar +fatser||faster +feauture||feature +feautures||features +fetaure||feature +fetaures||features +forse||force +fortan||fortran +forwardig||forwarding +framwork||framework +fuction||function +fuctions||functions +functionallity||functionality +functionaly||functionally +functionnality||functionality +functonality||functionality +futhermore||furthermore +generiously||generously +grabing||grabbing +grahical||graphical +grahpical||graphical +grapic||graphic +guage||gauge +halfs||halves +handfull||handful +heirarchically||hierarchically +helpfull||helpful +hierachy||hierarchy +hierarchie||hierarchy +howver||however +immeadiately||immediately +implemantation||implementation +implemention||implementation +incomming||incoming +incompatabilities||incompatibilities +incompatable||incompatible +inconsistant||inconsistent +indendation||indentation +indended||intended +independant||independent +independed||independent +informatiom||information +informations||information +infromation||information +initalize||initialize +initators||initiators +initializiation||initialization +inofficial||unofficial +integreated||integrated +integrety||integrity +integrey||integrity +intendet||intended +interchangable||interchangeable +intermittant||intermittent +interupted||interrupted +intial||initial +intregral||integral +intuative||intuitive +invalde||invald +invokation||invocation +invokations||invocations +jave||java +langage||language +langauage||language +langauge||language +langugage||language +lauch||launch +leightweight||lightweight +lenght||length +lesstiff||lesstif +libaries||libraries +libary||library +librairies||libraries +libraris||libraries +licenceing||licencing +loggging||logging +loggin||login +logile||logfile +machinary||machinery +maintainance||maintenance +maintainence||maintenance +maintan||maintain +makeing||making +malplaced||misplaced +malplace||misplace +managable||manageable +managment||management +manoeuvering||maneuvering +mathimatical||mathematical +mathimatic||mathematic +mathimatics||mathematics +ment||meant +messsage||message +messsages||messages +microprocesspr||microprocessor +milliseonds||milliseconds +miscelleneous||miscellaneous +misformed||malformed +mispelled||misspelled +mispelt||misspelt +mmnemonic||mnemonic +modulues||modules +monochorome||monochrome +monochromo||monochrome +monocrome||monochrome +mroe||more +mulitplied||multiplied +multidimensionnal||multidimensional +mutiple||multiple +nam||name +nams||names +navagating||navigating +nead||need +neccesary||necessary +neccessary||necessary +necesary||necessary +negotation||negotiation +nescessary||necessary +nessessary||necessary +noticable||noticeable +notications||notifications +occationally||occasionally +omitt||omit +ommitted||omitted +onself||oneself +optionnal||optional +optmizations||optimizations +orientatied||orientated +orientied||oriented +ouput||output +overaall||overall +overriden||overridden +pacakge||package +pachage||package +packacge||package +packege||package +packge||package +pakage||package +pallette||palette +paramameters||parameters +paramater||parameter +parametes||parameters +parametised||parametrised +paramter||parameter +paramters||parameters +particularily||particularly +pased||passed +pendantic||pedantic +peprocessor||preprocessor +perfoming||performing +permissons||permissions +persistant||persistent +plattform||platform +pleaes||please +ploting||plotting +poinnter||pointer +posible||possible +possibilites||possibilities +powerfull||powerful +preceeded||preceded +preceeding||preceding +precendence||precedence +precission||precision +prefered||preferred +prefferably||preferably +prepaired||prepared +primative||primitive +princliple||principle +priorty||priority +priviledge||privilege +priviledges||privileges +procceed||proceed +proccesors||processors +proces||process +processessing||processing +processess||processes +processpr||processor +processsing||processing +progams||programs +programers||programmers +programm||program +programms||programs +promps||prompts +pronnounced||pronounced +prononciation||pronunciation +pronouce||pronounce +pronunce||pronounce +propery||property +propigate||propagate +propigation||propagation +prosess||process +protable||portable +protcol||protocol +protecion||protection +protocoll||protocol +psychadelic||psychedelic +quering||querying +reasearcher||researcher +reasearchers||researchers +reasearch||research +recieved||received +recieve||receive +reciever||receiver +recieves||receives +recogniced||recognised +recognizeable||recognizable +recommanded||recommended +redircet||redirect +redirectrion||redirection +refence||reference +registerd||registered +registraration||registration +regulamentations||regulations +remoote||remote +removeable||removable +repectively||respectively +replacments||replacements +replys||replies +requiere||require +requred||required +requried||required +resizeable||resizable +ressize||resize +ressource||resource +ressources||resources +retransmited||retransmitted +retreive||retrieve +retreived||retrieved +rmeoved||removed +rmeove||remove +rmeoves||removes +runned||ran +runnning||running +sacrifying||sacrificing +safly||safely +savable||saveable +searchs||searches +secund||second +separatly||separately +sepcify||specify +seperated||separated +seperately||separately +seperate||separate +seperatly||separately +seperator||separator +sepperate||separate +sequencial||sequential +serveral||several +setts||sets +similiar||similar +simliar||similar +singed||signed +softwares||software +speach||speech +speciefied||specified +specifed||specified +specificatin||specification +specificaton||specification +specifing||specifying +speficied||specified +speling||spelling +splitted||split +spreaded||spread +staically||statically +standardss||standards +standart||standard +staticly||statically +subdirectoires||subdirectories +suble||subtle +succesfully||successfully +succesful||successful +sucessfully||successfully +superflous||superfluous +superseeded||superseded +suplied||supplied +suport||support +suppored||supported +supportin||supporting +suppoted||supported +suppported||supported +suppport||support +supress||suppress +surpresses||suppresses +suspicously||suspiciously +synax||syntax +synchonized||synchronized +syncronize||synchronize +syncronizing||synchronizing +syncronus||synchronous +syste||system +sytem||system +sythesis||synthesis +taht||that +targetted||targeted +targetting||targeting +teh||the +throught||through +transfered||transferred +transfering||transferring +trasmission||transmission +treshold||threshold +trigerring||triggering +unconditionaly||unconditionally +unecessary||unnecessary +unexecpted||unexpected +unfortunatelly||unfortunately +unknonw||unknown +unkown||unknown +unneedingly||unnecessarily +unsinged||unsigned +unuseful||useless +usefule||useful +usefull||useful +usege||usage +usera||users +usualy||usually +utilites||utilities +utillities||utilities +utilties||utilities +utiltity||utility +utitlty||utility +valide||valid +variantions||variations +varient||variant +verbse||verbose +verisons||versions +verison||version +verson||version +vicefersa||vice-versa +visiters||visitors +vitual||virtual +whataver||whatever +wheter||whether +wierd||weird +writting||writing -- 1.9.1 -- Kees Cook Chrome OS Security -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/