Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pedantic Elixir Builds
Search
Andrew Summers
January 23, 2019
Technology
180
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Pedantic Elixir Builds
Setting up pedantic Elixir builds in 2019
Andrew Summers
January 23, 2019
More Decks by Andrew Summers
See All by Andrew Summers
Domain Specific Languages and Metaprogramming
asummers
1
470
Gardening An Elixir Application
asummers
1
99
Other Decks in Technology
See All in Technology
アクセスキーが漏れた日にやるべきこと- 無効化の先にある本当の対応
kazzpapa3
0
360
Master Dataグループ紹介資料
sansan33
PRO
1
4.8k
EMの役割で 変わったこと・変わらなかったこと
sansantech
PRO
1
200
Dylib Hijacking on macOS: Dead or Alive?
patrickwardle
0
140
「面白い!」を信じ抜け。激動の時代を貫く、オンリーワン・エンジニアの条件
kizawa2020
2
430
AI駆動開発はどこまで来たのか? ファインディの最新実態調査で読み解く現在地 Devin Con Tokyo
akiratom
4
2.1k
AI × Datadog MCP でコスト削減まで実現した Metric Streams の導入
three_mouth_ago
0
100
500名弱規模の組織のPythonプロジェクト(dbt) をどう管理するか?
hiracky16
0
380
暗号化?某ファイルストレージはどうなるの!? 3rd Partyとうまく付き合う秘密度ラベル設計
kasada
0
220
EUDIWの枠組みを出発点に民間エコシステムの在り方を考える(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
370
紙 to デジタル
ichien178
0
400
When Token Pruning is Worse than Random: Understanding Visual Token Information in VLLMs
sansantech
PRO
0
160
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
108
250k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
510
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
560
Mobile First: as difficult as doing things right
swwweet
225
10k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
The Limits of Empathy - UXLibs8
cassininazir
1
620
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Writing Fast Ruby
sferik
630
63k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Paper Plane (Part 1)
katiecoart
PRO
1
10k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
630
Documentation Writing (for coders)
carmenintech
77
5.5k
Transcript
Pedantic Elixir Builds Andrew Summers 2019-01-23
None
Who? • Backend Software Engineer at albert.io • Wrote Dialyzer
pretty printer • Maintainer of Dialyxir, Erlex, elixir-lsp packages • Contributor to many others!
What? • Set up CI with pedantic builds • Recipe
for contributing to open source • Improve code quality at work using tools
How? • Turn on all current tooling to maximum pedantry
• Add extra checks according to your team's conventions • Set up continuous integration every build using e.g. Travis, Circle CI, Jenkins • Reject pull requests that do not satisfy all checks
• Travis (Continuous Integration) • Compiler (warnings as errors) •
Formatter • Credo (linter) • ExUnit (tests) • Dialyzer (type checker) • Sobelow (security)
• Good first PR to fix warnings and prevent them
in future • Surprising how many open source projects have errors! mix compile --warnings-as-errors
• Elixir 1.6+ • Consistent code in ecosystem mix format
--check-formatted
• Elixir linter • Turn on as many optional rules
as you can handle • Add your own rules to e.g. enforce defp type specs mix credo list --strict
• Write more tests, you don't have enough. • Consider
property testing mix test
• Erlang type checker, sometimes lies • Full PLT analysis
cache rebuild on Elixir, Erlang version change, partial rebuild on dependency changes mix dialyzer --halt-exit-status
• Security analysis tool • Scans for e.g. String.to_atom/1, SQL
injection mix sobelow --exit low
Other tools • coveralls, via ExCoveralls for coverage analysis •
dependabot for keeping dependencies up to date • inch for documentation analysis
• https://bit.ly/2Mumw25 •
asummers _asummers Thanks!