Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Ghost
    @ghost~54f4b69115522ed4b3dcb16d
    Trying to build current master with fresh clone, does anyone else see:
    [error] Modules were resolved with conflicting cross-version suffixes in {file:/Users/andrew/tmp/wartremover/}sbt-plugin:
    [error]    org.scala-lang.modules:scala-xml _2.13.0-M3, _2.12
    java.lang.RuntimeException: Conflicting cross-version suffixes in: org.scala-lang.modules:scala-xml
        at scala.sys.package$.error(package.scala:27)
        at sbt.ConflictWarning$.processCrossVersioned(ConflictWarning.scala:46)
        at sbt.ConflictWarning$.apply(ConflictWarning.scala:32)
    Martin
    @mrt181
    hi, I can't configure the wartremoverExclude correctly
    this is wHat i have configured:
     lazy val wartremoverSettings =                               
       Seq(                                                       
         wartremoverErrors in (Compile, compile) ++= Warts.unsafe,
         wartremoverExcluded += sourceManaged.value               
       )
    and this is what I get (abbreviated)
    [error] C:\cygwin64\home\r892107\sourcecode\topgun\target\scala-2.12\src_managed\main\com\google\api\AuthProvider.scala:81:11: [wartremover:Var] var is disabled
    [error]       var _done__ = false
    [error]           ^
    [error] C:\cygwin64\home\r892107\sourcecode\topgun\target\scala-2.12\src_managed\main\com\google\api\AuthRequirement.scala:118:19: [wartremover:Any] Inferred type containing Any
    [error]       __fieldsMap.getOrElse(__fields.get(0), "").asInstanceOf[_root_.scala.Predef.String],
    [error]                   ^
    [error] C:\cygwin64\home\r892107\sourcecode\topgun\target\scala-2.12\src_managed\main\com\google\api\AuthRequirement.scala:119:19: [wartremover:Any] Inferred type containing Any
    [error]       __fieldsMap.getOrElse(__fields.get(1), "").asInstanceOf[_root_.scala.Predef.String]
    [error]                   ^
    [error] C:\cygwin64\home\r892107\sourcecode\topgun\target\scala-2.12\src_managed\main\com\google\api\AuthRequirement.scala:118:50: [wartremover:AsInstanceOf] asInstanceOf is disabled
    [error]       __fieldsMap.getOrElse(__fields.get(0), "").asInstanceOf[_root_.scala.Predef.String],
    [error]                                                  ^
    [error] C:\cygwin64\home\r892107\sourcecode\topgun\target\scala-2.12\src_managed\main\com\google\api\AuthRequirement.scala:119:50: [wartremover:AsInstanceOf] asInstanceOf is disabled
    [error]       __fieldsMap.getOrElse(__fields.get(1), "").asInstanceOf[_root_.scala.Predef.String]
    [error]                                                  ^
    [error] C:\cygwin64\home\r892107\sourcecode\topgun\target\scala-2.12\src_managed\main\com\google\api\AuthRequirement.scala:34:5: [wartremover:DefaultArguments] Function has default arguments
    [error]     providerId: _root_.scala.Predef.String = "",
    [error]     ^
    [error] C:\cygwin64\home\r892107\sourcecode\topgun\target\scala-2.12\src_managed\main\com\google\api\AuthRequirement.scala:71:24: [wartremover:NonUnitStatements] Statements must return Unit
    [error]       while (!_done__) {
    [error]                        ^
    [error] C:\cygwin64\home\r892107\sourcecode\topgun\target\scala-2.12\src_managed\main\com\google\api\AuthRequirement.scala:93:35: [wartremover:Null] null is disabled
    [error]           if (__t != "") __t else null
    [error]                                   ^
    [error] C:\cygwin64\home\r892107\sourcecode\topgun\target\scala-2.12\src_managed\main\com\google\api\AuthRequirement.scala:97:35: [wartremover:Null] null is disabled
    [error]           if (__t != "") __t else null
    [error]                                   ^
    [error] C:\cygwin64\home\r892107\sourcecode\topgun\target\scala-2.12\src_managed\main\com\google\api\AuthRequirement.scala:126:62: [wartremover:OptionPartial] Option#get is disabled - use Option#fold instead
    [error]         __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
    [error]                                                              ^
    [error] C:\cygwin64\home\r892107\sourcecode\topgun\target\scala-2.12\src_managed\main\com\google\api\AuthRequirement.scala:127:62: [wartremover:OptionPartial] Option#get is disabled - use Option#fold instead
    [error]         __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Predef.String]).getOrElse("")
    [error]                                                              ^
    [error] C:\cygwin64\home\r892107\sourcecode\topgun\target\scala-2.12\src_managed\main\com\google\api\AuthRequirement.scala:129:15: [wartremover:Throw] throw is disabled
    [error]     case _ => throw new RuntimeException("Expected PMessage")
    [error]               ^
    [error] C:\cygwin64\home\r892107\sourcecode\topgun\target\scala-2.12\src_managed\main\com\google\api\AuthRequirement.scala:133:113: [wartremover:Throw] throw is disabled
    [error]   def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = throw new MatchError(__number)
    [error]
    I can't ignore the generated code
    Martin
    @mrt181
    nevermind found the solution: wartremoverExcluded ++= PathFinder(sourceManaged.value).**("*.scala").get
    Dmitry Bugakov
    @dmitrybugakov
    Hello,
    I have subprojects in sbt file, how I can add them in wartremover?
    Can you help?
    ritschwumm
    @ritschwumm
    @dmitrybugakov with the latest version i just have sth like this in my build.sbt: inThisBuild(Seq(wartremoverErrors ++= Seq( ... )))
    Dmitry Bugakov
    @dmitrybugakov
    @ritschwumm thank you)
    PsyfireX
    @PsyfireX
    Does wart remover support flagging discarded values out of the box, or would I have to write a custom rule for that?
    Bijan Chokoufe Nejad
    @bijancn
    @PsyfireX there is a compiler warning for that (which you can turn into an error): "-Ywarn-value-discard"
    PsyfireX
    @PsyfireX
    There's an unfortunate side-effect that -Xfatal-warnings is an "all or nothing" flag, converting every warning into a compiler error.
    There are workarounds, but I'm trying to consider all options which is why I'm also looking at wartremover
    Bijan Chokoufe Nejad
    @bijancn
    yeah I had some success with https://github.com/ghik/silencer for the cases that don't allow any other work arounds
    PsyfireX
    @PsyfireX
    That does seem to be the quickest solution.
    Rob Cornell
    @rcornell
    Hey all, with Maven, is there a way to pass the equivalent of this argument: wartremoverErrors ++= Warts.allBut(Wart.NonUnitStatements)
    Rob Cornell
    @rcornell
    @PsyfireX Any idea about the maven implementation above?
    John-Michael Reed
    @JohnReedLOL
    I am working on a horrible codebase and if I run WartRemover on it, the thing will blow up with thousands of warnings and errors. Is there a way for me to run WartRemover just on a single file in the codebase so that I can ignore all the issues from all the other files? The file consists of a single Scala object or class.
    Rob Cornell
    @rcornell
    You could potentially set it to warnings only: "-P:wartremover:only-warn-traverser:org.wartremover.warts.Unsafe"
    Could also build up exclusions to packages other thanthe one you're focused on:

    To exclude a file or directory from all checks, use wartremoverExcluded in your build.sbt file:

    wartremoverExcluded += baseDirectory.value / "src" / "main" / "scala" / "SomeFile.scala"
    wartremoverExcluded += sourceManaged.value

    @JohnReedLOL
    Philipp Martini
    @maphi
    Hey, it looks like wartremover and better-monadic-for get in their way:
    for {
      ...
      (a,b) = foo
    } yield ()
    this reports error: [wartremover:NonUnitStatements] Statements must return Unit
    any suggestions? is there an order to specify for sbt scalac plugins?
    Philipp Martini
    @maphi
    btw: using wartremover 2.3.7 and better-monadic-for 0.3.0-M4
    Philipp Martini
    @maphi
    Problem solved by better-monadic-for maintainer: Fix is adding scalacOptions ++= Seq("-P:bm4:no-map-id:n", "-P:bm4:no-tupling:n"),
    Nikolay Danshin
    @nDanshin
    hello, guys. I have sbt 0.13.6 and Scala version 2.12.4. And I try to add wartremover. Which version of it should I use?
    addSbtPlugin("org.wartremover" % "sbt-wartremover" % "2.3.7") thats ok?
    John-Michael Reed
    @JohnReedLOL
    @nDanshin - just copy-pasting whatever it says on the website/docs. If you don't know how to use sbt, read the sbt docs first.
    Hey, I want to add WartRemover to an old multi-project Build.scala file. I am talking sbt version 13.5 old. How do I do that?
    Victor Viale
    @Koroeskohr
    hi there ! I tried fiddling with the project today, and realised that the Var wart wasn't caught when a var is defined inside a trait, is there a reason why ? :)
    Ólafur Páll Geirsson
    @olafurpg
    Screenshot 2018-12-07 at 10.25.36.png
    @Koroeskohr that could be because var inside traits desugar into private fields with a setter method
    Nicolas Rinaudo
    @nrinaudo
    I'm hitting something that feels like a bug: with Scala 2.13, the StringPlusAny wart will trigger on string interpolation
    is that working as intended?
    Greg Pfeil
    @sellout
    @nrinaudo I feel like that is the correct behavior (unless you’re interpolating a String).
    Nicolas Rinaudo
    @nrinaudo
    oh, it's been pointed out that there's actually a bug open for that: wartremover/wartremover#447
    @sellout I think it's debatable. You might want to disallow string interpolation with non string members, but:
    • that seems harsh!
    • it's really odd that it'd trigger StringPlusAny
    I think I understand the purpose of StringPlusAny, and that's not it
    (but I might be wrong in that)
    Greg Pfeil
    @sellout
    What is the purpose if not to avoid automatic conversion to String? Like, how is "some ${foo} string" different from "some " + foo + " string"?
    Nicolas Rinaudo
    @nrinaudo
    well, because I'd assume it to be equivalent to "some " + foo.toString + " string", which I would have thought triggered ToString
    Greg Pfeil
    @sellout
    In my own code bases, anything that resulted in a call to toString would be a bug, but I know that my use case is not everyone’s.
    Nicolas Rinaudo
    @nrinaudo
    maybe I'm just not thinking about this right
    oh, sure, that's not what I'm arguing. I'm saying that it feels like the wrong wart is triggered
    Greg Pfeil
    @sellout
    Ah, I see.
    So, there’s another wart to catch use of toString.
    Nicolas Rinaudo
    @nrinaudo
    yeah. ToString
    If that were triggered by string interpolation, I'd get it. But StringPlusAny feels confusing for newcomers - it's another of these failures where the root cause is hidden