2016-06-25 8 views
3

scalax -Xlint помощь предоставляет следующую информацию:Как правильно использовать scalac -Xlint

$ scalac -Xlint:help 
Enable or disable specific warnings 
    adapted-args    Warn if an argument list is modified to match the receiver. 
    nullary-unit    Warn when nullary methods return Unit. 
    inaccessible    Warn about inaccessible types in method signatures. 
    nullary-override   Warn when non-nullary `def f()' overrides nullary `def f'. 
    infer-any     Warn when a type argument is inferred to be `Any`. 
    missing-interpolator  A string literal appears to be missing an interpolator id. 
    doc-detached    A Scaladoc comment appears to be detached from its element. 
    private-shadow    A private field (or class parameter) shadows a superclass field. 
    type-parameter-shadow  A local type parameter shadows a type already in scope. 
    poly-implicit-overload  Parameterized overloaded implicit methods are not visible as view bounds. 
    option-implicit   Option.apply used implicit view. 
    delayedinit-select   Selecting member of DelayedInit. 
    by-name-right-associative By-name parameter of right associative operator. 
    package-object-classes  Class or object defined in package object. 
    unsound-match    Pattern match may not be typesafe. 
    stars-align    Pattern sequence wildcard must align with sequence component. 

Есть ли способ, чтобы включить все проверки? Что такое семантика scalac -Xlint? будет ли это включать все? Установлен по умолчанию (который)? Вы ничего не сделаете?

Примечание: Scala 2.11.8 и SBT 0.13.9

Если новые версии обеспечивают различное поведение/функции, дайте мне знать, как обновление их не проблема

+1

Да, '-Xlint' позволяет им все. Вы можете проверить это самостоятельно с помощью 'scala -e' и увидеть предупреждающие сообщения, например:' scala -Xlint -e 'print ("foo $ {1}")' ' – 4e6

ответ

5

-Xlintcurrently means-Xlint:_, но для этого требуется to be made explicit.

Исторически сложилось так, что всегда были предупреждения, которые слишком шумны или ненадежны для включения по умолчанию, поэтому всегда были предупреждения, исключенные из -Xlint.

В настоящее время существует one such lintable, но он не подключен к опции командной строки.

Раньше был -Ywarn-all, что означало -Xlint плюс те другие предупреждения. Непонятно, почему этот вариант ушел.

В какой-то момент, -Xlint:_ собирался означать -Ywarn-all, с -Xlint означает рекомендуемое подмножество, но оказывается, что людям нравится, чтобы отключить один или два правила пуха с -Xlint:-annoying,_, что труднее сделать, если это позволяет сколь угодно много другие шумовые правила.

Обычно scalac -X показывает значения по умолчанию; но, вероятно, scalac -Xlint:help будет улучшен, чтобы показать свое поведение по умолчанию. Это значение по умолчанию является нетривиальным для чего-то вроде -Yopt.

$ scalac -help 
Usage: scalac <options> <source files> 
where possible standard options include: 
    -X        Print a synopsis of advanced options. 


$ scalac -X 
Usage: scalac <options> <source files> 

-- Notes on option parsing -- 
Boolean settings are always false unless set. 
Where multiple values are accepted, they should be comma-separated. 
    example: -Xplugin:option1,option2 
<phases> means one or a comma-separated list of: 
    (partial) phase names, phase ids, phase id ranges, or the string "all". 
    example: -Xprint:all prints all phases. 
    example: -Xprint:expl,24-26 prints phases explicitouter, closelim, dce, jvm. 
    example: -Xprint:-4 prints only the phases up to typer. 

Possible advanced options include: 
    -Xlint:<_,warning,-warning> Enable or disable specific warnings: `_' for all, `-Xlint:help' to list