首页 > Unity3D频道 > 【Unity杂文】 > Unity3D研究院之静态自动检查代码缺陷与隐患
2014
06-24

Unity3D研究院之静态自动检查代码缺陷与隐患

代码缺陷和代码错误的最大区别是,代码缺陷不影响游戏编译,而代码错误编译都不通过。但是代码缺陷会影响游戏发布后产生的一系列BUG。。我今天无意间逛外国论坛发现的一个方法,使用了一下感觉挺给力的第一时间分享给大家。 下载下来以后,它是一个文件夹把整个文件夹拷贝在你Unity的工程里面就行了。

Unity 3D Gendarme Plugin:https://bitbucket.org/kzoabi/unity3d-gendarme-plugin

然后下载最新的mono 它是跨平台的,我用的是MAC所以我下载的就是一个 dmg文件, 下载完毕后安装完成即可。

http://www.go-mono.com/mono-downloads/download.html

如下图所示, 选择Assets->Gendarme Report Level 选项,将弹出Gendarme界面,你可以选择它的优先级,然后点击Start按钮。如果报错的话,请把Assets文件夹下的gendarme文件夹和gendarme-report.html文件删除。

Unity3D研究院之静态自动检查代码缺陷与隐患 - 雨松MOMO程序研究院 - 1

如果你的项目比较大的话需要耐心的等待一下,大概1分钟左右。Report生成完毕后会弹出如下窗口,点击Open Report按钮即可。

Unity3D研究院之静态自动检查代码缺陷与隐患 - 雨松MOMO程序研究院 - 2

 

 如下图所示,他会生成一个Html的页面在本地,打开后写的非常清晰,并且已经分好了类,他会告诉你那一行代码有缺陷,如何来修改你的代码。一不小心代码就一大堆隐患,赶快一个一个修改吧。嘿嘿。。

 

Unity3D研究院之静态自动检查代码缺陷与隐患 - 雨松MOMO程序研究院 - 3

最后期待您的回复与讨论。

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院之静态自动检查代码缺陷与隐患》有 21 条评论

  1. 张麟 说:

    win下载下来后,把文件夹放到unity安装的路径下面吗

  2. 吕天祺 说:

    有什么静态代码分析的最新工具嘛?VS2017自带的分析可以理解为这个功能吗?

  3. xbhuang 说:

    当我点start的时候它提醒我:“You need mono 2.10 or higher installed on your system.”但是我已经安装过了MonoFramework-MDK-3.4.0.macos10.xamarin.x86.pkg 这是为什么呢?

    • 雨松MOMO 说:

      我没遇到过这个错误, 不过你可以试试重装一下。。

    • 一叶青枫 说:

      你怎么解决的

      • xbhuang 说:

        此问题是因为mono的版本过高,代码不兼容导致的~ 在GendarmeRunner类中有一个叫ValidateMono的方法,在确保你的mono版本大于2.10的情况下去掉以下代码跳过mono版本验证就可以。// if (version Unity3D研究院之静态自动检查代码缺陷与隐患 - 雨松MOMO程序研究院 - 1 < 2 || version Unity3D研究院之静态自动检查代码缺陷与隐患 - 雨松MOMO程序研究院 - 2 < 10) {// Debug.LogError(monoError);//// return false;// }或是修改此行为正确的匹配规则,鄙人比较懒去直接去掉上面描述代码的,如果有大神修正了请附上正确代码谢谢~var m = new Regex(“.* ([0-9]+)\.([0-9]+)\.[0-9]+ .*”).Match(stdOut);

      • xbhuang 说:

        此问题是因为mono的版本过高,代码不兼容导致的~ 在GendarmeRunner类中有一个叫ValidateMono的方法,在确保你的mono版本大于2.10的情况下去掉以下代码跳过mono版本验证就可以。//if (version Unity3D研究院之静态自动检查代码缺陷与隐患 - 雨松MOMO程序研究院 - 1 < 2 || version Unity3D研究院之静态自动检查代码缺陷与隐患 - 雨松MOMO程序研究院 - 2 < 10) {//Debug.LogError(monoError);////return false;//}或是修改此行为正确的匹配规则,鄙人比较懒去直接去掉上面描述代码的,如果有大神修正了请附上正确代码谢谢~var m = new Regex(“.* ([0-9] )\.([0-9] )\.[0-9] .*”).Match(stdOut);

  4. junfind 说:

    雨松老师,你好。我想请教一个问题,我同学想做一个类似于动作捕捉的DEMO,他们在人身上装传感器,用来捕捉人的动作,然后电脑里的3D模型就做相同动作。捕捉相关技术都能够实现。3D模型模仿人的动作想用Unity来做,我想问下,如果用Unity3D来做这个,方便实现吗?如果能的话大概的思路是什么?先谢过了哈

  5. 九尾猫 说:

    支持MOMO,自从看了你那本书之后,有一段时间没做过Unity了。现在要重新开始努力了!

  6. karaner 说:

    官方说:This plugin hasn’t been tested on Windows yet. 然后我在Windows没有生成报告

  7. 曾瑞宏 说:

    Momo大神有什么好的论坛推荐一下吗

  8. 万千 说:

    最新的mono是什么?是monodevelop吗?如果是的话,我现在本地的版本已经是4.0.1了,那个链接里为什么才是Latest Version: 3.4.0(Mac),如果不是monodevelop的话,那不下也可以正常使用Gendarme呀,导出什么的好像也没什么问题

留下一个回复

你的email不会被公开。