Atomineer is not free, but it's not expensive, either. It has a very high degree of customizability along with being very good at determining code function from element names. Documentation can be applied at various scopes, from a single element to an entire file, and limited to public members or applied to all. I have been using it for years and have been very pleased with it.