Skip to content
Jan Wilmans edited this page Jul 29, 2018 · 5 revisions

Welcome to the OpenCanary wiki!

Ideas for static checking:

  • check project files for duplicate file-references (vs2013 seems to add references in .filter files multiple times ??)

  • guid uniqueness over IDLs

  • 'Register output' should always be ON for projects that build COM type-libraries (.tlb)

  • project references that use 'link referenced library' for non-static libraries

  • using namespace in header files == error!!!

  • including files (.h and .cpp) from a different projects! (../ backreferences can only go into /shared or /sdk folders that are closer to the root) not into other projects, or lower /shared folders.

  • files that are never used (.h/.cpp) aka dead code

  • pre c++11 non-'std'::make_unique references (custom make_unique implementations)

  • projects that dont have Warning level 4 and 'set warnings as errors'

  • ignore "derives publicly from class 'CComObjectRootEx' "

  • ignore "derives publicly from class [empty] "

  • collect compiler errors from build-logfiles from projects that don't have 'set warnings as errors'

  • collect warnings from installer-build

  • collect warnings from smoketest-installation

  • solutions containing non-existing projects

  • projects containing non-existing files *.h or *.txt etc. (this can cause project-full build / inhibit incremental building)

  • project build after a project-rebuild should not be compiling anything

  • check version numbers in scots component package.useonly.xml

  • ERROR: RegAsm : error RA0000 : CLR assembly 'C:\SB\motion_mainFDT\bin\Release64\x.dll' was imported from a type library and cannot be re-exported to a type library. Make sure the type library from which the assembly was imported is registered.

  • WARNING: Registration database and file timestamps are different

  • Missing "Label" attribute

  • strange messages ?? " A system error has occurred" , "System error 1067 has occurred", "The process terminated unexpectedly."

  • remore LIBID_ referenecs

  • check for if (&foo == nullptr) {} a reference cannot be bound to dereferenced null pointer in well-defined C++ code; comparison may be assumed to always evaluate to false [-Wtautological-undefined-compare]

Clone this wiki locally