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
1
170
Pedantic Elixir Builds
Setting up pedantic Elixir builds in 2019
Andrew Summers
January 23, 2019
Tweet
Share
More Decks by Andrew Summers
See All by Andrew Summers
Domain Specific Languages and Metaprogramming
asummers
1
370
Gardening An Elixir Application
asummers
1
90
Other Decks in Technology
See All in Technology
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
18k
Amazon Location Serviceを使ってラーメンマップを作る
ryder472
2
150
[TechNight #86] Oracle GoldenGate - 23ai 最新情報&プロジェクトからの学び
oracle4engineer
PRO
1
170
企業テックブログにおける執筆ネタの考え方・見つけ方・広げ方 / How to Think of, Find, and Expand Writing Topics for Corporate Tech Blogs
honyanya
0
800
アーキテクチャわからん、の話
shirayanagiryuji
0
150
Server Side Swift 実践レポート: 2024年に案件で採用して見えた課題と可能性
yusuga
1
420
“自分”を大切に、フラットに。キャリアチェンジしてからの一年 三ヶ月で見えたもの。
maimyyym
0
300
Power BI は、レポート テーマにこだわろう!テーマのティア表付き
ohata_ds
0
120
パブリッククラウドのプロダクトマネジメントとアーキテクト
tagomoris
4
760
地方企業がクラウドを活用するヒント
miu_crescent
PRO
1
110
Amazon Aurora バージョンアップについて、改めて理解する ~バージョンアップ手法と文字コードへの影響~
smt7174
1
240
20250125_Agent for Amazon Bedrock試してみた
riz3f7
2
110
Featured
See All Featured
Facilitating Awesome Meetings
lara
51
6.2k
The Pragmatic Product Professional
lauravandoore
32
6.4k
A Tale of Four Properties
chriscoyier
157
23k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Mobile First: as difficult as doing things right
swwweet
222
9.2k
Rails Girls Zürich Keynote
gr2m
94
13k
Visualization
eitanlees
146
15k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
39
1.9k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.3k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.6k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
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!