Credo for example is a very good opinionated linter & exCoveralls produces some very pretty coverage output. Both recent finds for me, and both best of breed.
I'd been burnt by monkey patching in Ruby, so was worried early on that Elixir macros might work the same way. But they don't. Macros are opt-in in a module and they're expanded at compile time, so you don't get any nasty surprises because somebody upstream thought it'd be a great idea to change how integers work.
There have been some pain points. Part of the pain's been self inflicted. Elixir wants to stay running, it wants to be a bullet-proof long running thing. So naturally I started building command line tools with it… yeah, the fit's ok, but there are things like date/time libraries not working in binaries (escripts)… that I can forgive, it's on the very edge of the project. Sometimes the pain's caused by a distinct lack of online examples. The docs are very good, but sometimes you need to work things out rather than Googling them - which is fun too, right. (You do like programming, right? Ha.)
That works for big things & small - last night I was trying to test a function call in a genserver, I was starting it up, and missing the error completely because it was getting messaged off to the calling process… when I suddenly hit on the much simpler solution of just calling the function. A genserver's just a module, a function's just a function. That kind of thing seems obvious in retrospect (and probably is obvious to everyone else), but it can take a bit of confidence, and that takes time.
I had an epiphany watching a presentation online last night too, I was coming up with better answers to questions than the presenter was. That was a pleasing lightbulb moment - hey, I can do this stuff now. I know this stuff now.