Older blog entries for jemarch (starting at number 8)

Static code analysis with Clang

The Clang Static Analyzer is a program that uses the llvm compiler to perform static code analysis in C and objective-C programs.

A very nice feature of this analyzer is that it is not intrusive with the development procedures of our packages. It does not require the maintainer to implement any extra logic in the build system. A provided 'scan-build' script is able to "intercept" the calls to the GNU compiler on source files, and internally invokes the analyzer.

For example:

$ scan-build -o DIR gcc -o foo foo.c

executes the compilation command to build 'foo' and then runs the static analyzer in the foo.c source file. An html report containing the results of the analysis is created in the directory 'DIR'. The report is generated only if some bug is detected. The generated html report is quite readable, clearly marking the execution paths leading to errors.

The parameter to 'scan-build' can be any command, so in order to analyze the code of a typical GNU package we could launch:

$ scan-build -o DIR ./autogen.sh
$ scan-build -o DIR ./configure
$ scan-build -o DIR make

Regarding the supported static analysis checks, they include the detection of dereference of null pointers, identification of dead code, detection of useless assignments, unused return values, etc.

As an example you can take a look to the report generated from the analysis of the GNU PDF library here. The report is automatically generated in a daily period as part of our effort in continuous integration (there are pointers to more generated reports in the "Quality" section of the library development page if you are interested).

You can find another example of a generated report, this time for libxml2, here.

Many thanks to Jim Meyering for pointing out the existence of this analyzer. He said: ''If you're not using its "scan-build" tool, then start. Right now. Really. It's that good.''

I absolutely agree with him :)

Syndicated 2009-09-08 01:00:00 from Web Log

Static code analysis with Clang

The Clang Static Analyzer is a program that uses the llvm compiler to perform static code analysis in C and objective-C programs.

A very nice feature of this analyzer is that it is not intrusive with the development procedures of our packages. It does not require the maintainer to implement any extra logic in the build system. A provided 'scan-build' script is able to "intercept" the calls to the GNU compiler on source files, and internally invokes the analyzer.

For example:

$ scan-build -o DIR gcc -o foo foo.c

executes the compilation command to build 'foo' and then runs the static analyzer in the foo.c source file. An html report containing the results of the analysis is created in the directory 'DIR'. The report is generated only if some bug is detected. The generated html report is quite readable, clearly marking the execution paths leading to errors.

The parameter to 'scan-build' can be any command, so in order to analyze the code of a typical GNU package we could launch:

$ scan-build -o DIR ./autogen.sh
$ scan-build -o DIR ./configure
$ scan-build -o DIR make

Regarding the supported static analysis checks, they include the detection of dereference of null pointers, identification of dead code, detection of useless assignments, unused return values, etc.

As an example you can take a look to the report generated from the analysis of the GNU PDF library here. The report is automatically generated in a daily period as part of our effort in continuous integration (there are pointers to more generated reports in the "Quality" section of the library development page if you are interested).

You can find another example of a generated report, this time for libxml2, here.

Many thanks to Jim Meyering for pointing out the existence of this analyzer. He said: ''If you're not using its "scan-build" tool, then start. Right now. Really. It's that good.''

I absolutely agree with him :)

Syndicated 2009-09-08 00:00:00 from Main Page

OggVorbis in RTVE

The most important public Radio-Television entity in Spain, RTVE, maintains a web portal where they publish a lot of audio material.

Unfortunately, the audio format used in that site is MP3. It is well known that the MP3 format is cumbered with several software patents owned by both the Fraunhofer Institute and Thompson. It is a shame how a public entity like RTVE is harming the fundamental rights of the Spanish citizens by promoting the use of an audio format that imposes restrictions.

Fortunately, there is an initiative to ask RTVE to publish the audio contents in the free OggVorbis format. There is an open thread in the "Suggestions" section of the RTVE forum. We are asking the people to left a comment there asking RTVE to publish their contents using OggVorbis.

Thanks to Guillermo Gonzalez Diez for leading this initiative.

Syndicated 2009-04-19 00:00:00 from Main Page

go://jemarch

After reading about Social DNS I finally decided to create a go://jemarch domain for this website. Social DNS seems to be a quite interesting distributed, internationalized and non-organization-controlled alternative to DNS, despite it seems to be in its first stages.

There is a plugin for Firefox to browse the go: domains. I am looking forward for w3m support for Social DNS (why to open a Firefox if you can comfortably browse the web using Emacs? ;)).

Thanks to Juan Anel for sharing the existence of Social DNS in GNUticias.

Syndicated 2008-11-02 00:00:00 from Main Page

12 Sep 2008 (updated 2 Nov 2008 at 20:08 UTC) »

Hacking GNU PDF

Got three free days from my employers to work in GNU PDF. It is late in the night and I am currently working in the stream module in the base layer of the library.

hacking
   GNU PDF

Music is playing and the ideas fly from the paper to the Emacs buffer.. the ISO 32000 spec stand in the table showing me what to do.

And the fucking cat is, as always, in the middle of everything.

Syndicated 2008-09-12 00:00:00 (Updated 2008-11-02 20:08:23) from Main Page

New version of jem-pkg

Surprising enough I got a bug report for JemPkg from my friend Thales. He was trying to run JemPkg 0.0.3 without success, since there is a stupid bug in the first 20 lines of the source files that prevents emacs to successful load the program.

So I just fixed the stupid bug and uploaded a new version: JemPkg 0.0.4.

Syndicated 2008-09-09 00:00:00 from Main Page

It's not the Gates, it's the bars

Bill Gates announced his retirement from his position in Microsoft. What are the implications regarding Free Software?.. unfortunately, almost nothing.

Richard M. Stallman, founder of the Free Software Foundation, has written a quite interesting article in BBC News online titled It's not the Gates, it's the bars.

You can find the article in http://news.bbc.co.uk/2/hi/technology/7487060.stm.

Please share this link with your friends and family, and post it to any blogs, link sharing or social sites you think may find it interesting.

Syndicated 2008-07-03 00:00:00 from Main Page

Hello

You may notice that I have remodeled the webpage to include this little journal.

Note that, despite its name, I am not going to write about me or my daily life (not interesting at all) but mainly about topics related to Free Software and technology. Despite that I may write about other topics from time to time.

To insert journal entries is also a good way to announce updates in the webpage, so after any interesting update I will post a little description with the appropriate link.

An RSS index is available to follow this journal.

Syndicated 2008-07-02 00:00:00 from Main Page

The FSF has opened a section to make specific donations to the GNU PDF Project: https://www.fsf.org/donate/directed-donations/gnupdf.html

The donated money will be invested in hiring developers. As with the general donations to the Free Software Foundation the donor is able to benefit from tax-deductions if in the USA.

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!