您可以使用Unix工具indent
来强制一些C编码风格。
安装后,可以查看
man 1 indent
有一个叫做EditorConfig的工具,它似乎旨在通过各种编辑器来强制执行编码标准。支持和功能有限,但这是一个相当不错的想法。http://editorconfig.org/
其中一个工具,只需最少的自定义即可完成工作:
C++可编程验证和分析工具:https://bitbucket.org/verateam/vera/wiki/Home
Google C++规范检查器:http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py
EPITA大学规范检查器(学生项目):http://code.google.com/p/norme-checker/source/browse/
QA-CPP可能会对你有所帮助。尽管我已经一年多没有使用它了,但你可以配置它来完成那种事情。
你可能想给Programming Research的人打个电话,看看他们是否能做到这一点。
然而,问题仍然是为什么?如果我的讲师因代码风格而责骂我,我会认为他脑袋有问题。作为一个经历过大学系统的人,你应该为他们在现实世界中工作做好准备 - 我可知道现在看到的东西还有很多需要改进的地方。
Doxygen 生成的 XML 输出非常容易处理... 至少和在标识符中找到单词边界一样容易。
A
”是否为“B
”的公共可访问基类之类的问题(即需要对AST进行语义检查的非平凡问题),则这可能是实现所述工具的更容易的方法。 实际上,在任何一种情况下,您都可以让学生实施这些检查:如果您有足够的学生并多次分配相同的检查以确保您至少获得一个良好的实现,您可以很快地收集到一个不错的收藏品。 ……如果您的学生与我一样(好吧,我真的不希望您的命运像这样可怕),他们甚至会享受这种练习。
然而,有一件事情:不要因为不使用驼峰命名法就给任何C++程序员打分!HereIsASimpleAndImpressiveExampleOfWhyUseOfCamelCaseIsReallyBad:你有更容易阅读这个的时间!C++程序员倾向于做正确的事情。因此,像驼峰命名法和匈牙利命名法这样的愚蠢丑陋的东西是不被使用的。
您可以使用TIDY在调试模式下,配合一些shell/perl脚本。
基本上,这个想法是让TIDY运行并提供另一个.txt文件的输出,然后可以解析它以仅提供错误输出,并且您可以获取原始代码行并运行DIFF :-)
可能需要一些编码和脚本来达到理想效果。我们曾经使用过类似的东西,但是用于完全不同的项目和目标。
否则,您可以尝试使用这些:
http://gcgreatcode.sourceforge.net/
http://universalindent.sourceforge.net/
这可能在一定程度上有助于解决问题,需要编写一些代码来实现您特定的自动检查。