Guidance


This document provides guidance when implementing an analyzer.

General

  • Analyze all submitted files, except tests/invalidator/editor/example/exemplar files
  • Don't aim for 100% correctness, which will be near impossible to achieve. It's okay if the analyzer can't find all issues or is unable to infer certain tags.

Compilation

If your language requires a compilation step, consider these points:

  • Compiling the solution will usually allow for higher fidelity. For example, the definitive type of any value is only known after compilation. Do be aware of the trade-offs (e.g. slower to run and more memory usage).
  • Consider in-memory compilation (if possible), to improve performance.

Testing

  • Have an extensive test suite
  • Use golden tests to verify the behavior of the analyzer. These tests should use the Docker image that will be deployed to verify the analyzer.
  • Consider having tests for each approach. You want the analyzer to work well for these solutions, and it will help assigning tags to the approaches later on.