Lint-like program checkers are popular tools that
ensure code quality by verifying compliance with
best practices for a particular programming
language. The proliferation of internal
domain-specific languages and models, however, poses
new challenges for such tools. Traditional program
checkers produce many false positives and fail to
accurately check constraints, best practices, common
errors, possible optimizations and portability
issues particular to domain-specific languages. We
advocate the use of dedicated rules to check
domain-specific practices. We demonstrate the
implementation of domain-specific rules, the
automatic fixing of violations, and their
application to two case-studies: (1) Seaside defines
several internal DSLs through a creative use of the
syntax of the host language; and (2) Magritte adds
meta-descriptions to existing code by means of
special methods. Our empirical validation
demonstrates that domain-specific program checking
significantly improves code quality when compared
with general purpose program checking.