Obfuscation prevention ====================== See this meta-report from David A. Wheeler: https://www.ida.org/research-and-publications/publications/all/i/in/initial-analysis-of-underhanded-source-code Disallow shadowing of external/imported classes ----------------------------------------------- Can this be done reliably? One might "forget" to add the dependency on the module containing the class, which would then count as "no shadowing". Shadowing system functions was apparently a common way to write underhanded code. Another approach could be to always require some kind of suffix, and use special syntax that cannot appear elsewhere, e.g.: sys:File f = open "hello.txt" Ensure that comment syntaxes from other languages give an error --------------------------------------------------------------- For example (doens't mean all should be blocked): // /* ; (* { -- """ % ' REM : Ensure that a # in strange locations result in a warning -------------------------------------------------------- For example: if s == "your number: "#123" !" and is_admin if b #= true Maybe all # with any non-space character on either side should give a warning? Similarly for " if s == "test and is_admin and other_s == "or true Forbid big spacing (beyonds 80 columns) --------------------------------------- For example: bool is_admin = false or true