First time right coding
how to stop wasting time
fixing compiler errors
Dr. Ir. Philippe Faes
http://xkcd.com/303/
Overview
● First time right coding
○ what
○ why
● Protect yourself
● Don’t waste time / money
○ catching bugs early
● How to catch bugs early
○ Types of things that you can find at type-time
● [Demo]
● What to do next?
What is first time right coding?
● Each commit (in version control) can be
compiled and executed.
● Every project has
exactly zero syntax errors at all times.
● Never save files that will not compile
Why you need tools?
If you don’t make mistakes, you spend
too much time
proofreading your code.
Why?
The only purpose
of compilation and simulation is to
validate behavior.
Not to find syntax errors.
Protect yourself from
● evil colleagues who check in broken code
● looking bad in front of your colleagues
● wasting time fixing compilation errors
Protect yourself from
evil colleagues
My former colleague —let’s call him “John”—
used to break the build all the time.
He always insisted it was not his fault.
Do you know how silly you look
when your file is missing a semicolon?
;
Protect yourself
from public shame.
Don’t waste time / money
Catching defects earlier
is cheaper
Catching defects earlier
is much cheaper
How to fix this
options:
4. run build scripts before you commit
3. regularly run your (incremental) build scripts
2. automatically compile when you save
1. compile while you type
Your own (incremental) build
Custom scripts
● bash, Tcl, Python, ...
Incremental building:
● Makefile
Works in:
● standard Eclipse
● Sigasi Free Starter Edition
● (and maybe in other tools too)
Use custom builder,
with MarkerManager plugin
Save-time compilation
Type-time
Standard technology in many software IDEs
For VHDL:
Available in Sigasi Pro,
with better (linting) checks in Sigasi Premium
Types of errors
that can be caught
● Syntax errors (obviously)
● Datatype errors
● Style guide violations
● Even some kind of elaboration errors!
○ check bus widths, even using symbolic lengths
(live demo)
What to do next?
1. compile before you commit
2. compile each time you save
3. compile before you save

Plc2 2015 first time right coding

  • 1.
    First time rightcoding how to stop wasting time fixing compiler errors Dr. Ir. Philippe Faes
  • 2.
  • 3.
    Overview ● First timeright coding ○ what ○ why ● Protect yourself ● Don’t waste time / money ○ catching bugs early ● How to catch bugs early ○ Types of things that you can find at type-time ● [Demo] ● What to do next?
  • 4.
    What is firsttime right coding? ● Each commit (in version control) can be compiled and executed. ● Every project has exactly zero syntax errors at all times. ● Never save files that will not compile
  • 5.
    Why you needtools? If you don’t make mistakes, you spend too much time proofreading your code.
  • 6.
    Why? The only purpose ofcompilation and simulation is to validate behavior. Not to find syntax errors.
  • 7.
    Protect yourself from ●evil colleagues who check in broken code ● looking bad in front of your colleagues ● wasting time fixing compilation errors
  • 8.
    Protect yourself from evilcolleagues My former colleague —let’s call him “John”— used to break the build all the time. He always insisted it was not his fault.
  • 9.
    Do you knowhow silly you look when your file is missing a semicolon? ; Protect yourself from public shame.
  • 10.
  • 11.
  • 12.
  • 13.
    How to fixthis options: 4. run build scripts before you commit 3. regularly run your (incremental) build scripts 2. automatically compile when you save 1. compile while you type
  • 14.
    Your own (incremental)build Custom scripts ● bash, Tcl, Python, ... Incremental building: ● Makefile
  • 15.
    Works in: ● standardEclipse ● Sigasi Free Starter Edition ● (and maybe in other tools too) Use custom builder, with MarkerManager plugin Save-time compilation
  • 16.
    Type-time Standard technology inmany software IDEs For VHDL: Available in Sigasi Pro, with better (linting) checks in Sigasi Premium
  • 17.
    Types of errors thatcan be caught ● Syntax errors (obviously) ● Datatype errors ● Style guide violations ● Even some kind of elaboration errors! ○ check bus widths, even using symbolic lengths (live demo)
  • 18.
    What to donext? 1. compile before you commit 2. compile each time you save 3. compile before you save