看板 DFBSD_kernel 關於我們 聯絡資訊
On 10/14/2011 05:33 AM, Sascha Wildner wrote: > On Fri, 14 Oct 2011 05:05:41 +0200, Juan Francisco Cantero Hurtado > <iam@juanfra.info> wrote: > >> Hi. I remember in the past someone tried compile DragonFlyBSD with >> clang and corrected various warnings and errors. I don't know if >> this person continues with this "project" but I think no. Also a >> few days ago I found this old page in the wiki >> http://www.dragonflybsd.org/docs/developer/clang/ . > > Alex Hornung and I did some clang work in the past. > > Yeah, the wiki page is old and not up-to-date. > >> DragonFlyBSD works very good with GCC but also clang is very good >> reporting errors or inconsistencies in the code. This week I've >> found a intermediate solution for to have the best of both worlds >> without extra work. >> >> In the "tools" directory of clang exists a tool for generate the >> same reports of clang but without using clang for compile. >> scan-build is a (perl) wrapper for gcc and generates html reports >> with the warnings and errors of clang, but stills compiling the >> code with gcc (or other compiler). >> http://clang-analyzer.llvm.org/scan-build.html . >> >> I think this tool is perfect for complement the daily snapshots >> build. The developers don't need work with two compilers different >> and they can look just the results in the server. scan-build >> generates static html files, so you can copy the directory with >> the results to http://mirror-master.dragonflybsd.org/snapshots/ . >> >> Example: # cd /usr/src # scan-build make nativekernel > > I've done many a scan-build on both our world and our kernel in the > past and fixed things. > > The thing with scan-build is that you'll have to wade through all > the HTML to find the few issues that are actually _worth_ fixing. But you also need browse for all files affected if compile with clang. The same problem. Choose your poison :) > > Not everything it reports is something we want to fix (for various > reasons), some categories are more interesting than others, and some > are simply false positive, etc. Sure. > > I wouldn't want to run it daily as part of the snapshot build > though, as it takes a lot of time. Yes, scan-build is very slow. nativekernel took me hours in my netbook. My point is if the daily build include scan-build, the developers don't need spend time in to compile with clang or the very big extra time in scan-build. I'm curious about how long takes the "scan-build make buildworld" in a good computer :P > > My overall experience is that people will be enthusiastic to get > such reports when you ask, but if you put them up, everyone quickly > goes on to do other things after viewing the first three reports or > so, because it really takes time to review. The issues worth fixing > are not delivered on a silver plate unfortunately. :) > >> This command generates the binaries with gcc but create a directory >> with the reports in /tmp: >> http://juanfra.info/bugs-y-listas/clang-dragonflybsd-201110/dragonflybsd-scan-build-2011-10-13-2.tar.xz >> >> >> >> (download, decompress and open the index.html file) >> >> The clang version in pkgsrc doesn't install scan-build. I've >> reported the problem to the maintainer. Anyway, exists a temporary >> solution for this problem: > > I usually take clang's trunk which should build fine on dfly (though > I haven't tried lately) and copy the scan-build stuff to > /usr/local/bin. > >> >> - Install clang from pkgsrc. - Download the latest build for OSX >> of scan-build from http://clang-analyzer.llvm.org/installation.html >> . - Console: # tar -xjf checker-257.tar.bz2 # cd checker-257 # rm >> -Rf bin # (with this scan-build will use the clang in PATH) # >> export PATH=$PATH:`pwd` # cd /usr/src # scan-build make >> buildkernel >> >> Let me know if you have any question. Cheers :) >> -- Juan Francisco Cantero Hurtado http://juanfra.info