★★★发布 SourceFormatX 万能源代码格式化工具新版本!5月7日之前狂送注册码!!!★★★

crossbow 2004-04-28 12:25:45
-------------------
SourceFormatX是什么
-------------------

SourceFormatX 是一款强大的源代码自动格式化, 缩进, 排版, 美化工具软件。它可以格式化 C, C++、Java、Object Pascal、PHP、ASP、C#、VB、VB.NET、VBScript、JavaScript 源代码。它还可以将源代码输出为语法高亮显示的 HTML 或 RTF 文件。

SourceFormatX 2.5 采用全新、强劲的词法解析引擎来分析和重新构造源代码,由于通过类似解释器词法分析的工作机理,SourceForamtX 能最大限度地保证源码的完整性和可靠性,这就是为什么 SourceFormatX 能将混乱得近乎变态的垃圾代码格式化成赏心悦目的版式的原因。

严谨良好的代码风格是软件稳定可靠的必要保障,可是通常的情况是数量庞大代码的代码风格大多十分混乱,这给阅读和修改源代码造成不少困难,手工整理的工作量几乎不可想像...

SourceFormatX 将您从这些既枯燥无聊,又大量重复的机械劳动中解放出来了。它可以快速大批量地格式化和美化多种源代码,这将会大大加快阁下的项目进度,提高团队协同工作效率、节约大量的时间,并统一了该项目所有代码的风格,利于以后维护和发布风格统一代码。

软件介绍: http://cn.textrush.com/formatx.htm
格式化效果: http://cn.textrush.com/formatxexample.htm
截图预览: http://cn.textrush.com/formatxpreview.htm
软件下载: http://cn.textrush.com/download/sourceformatx250cn.exe (1.08M)
论坛灌水: http://cn.textrush.com/forum/

--------------------
交换链接送注册码活动
--------------------

凡在2004年5月7日之前在阁下的网站(网站性质、大小、浏览量不限)上链接了十字弓软件(http://www.textrush.com)的英文主站者,都可以免费获得一份价值人民币36元的注册码。名额不限。

步骤:

1、浏览 http://cn.textrush.com/contact.htm 得到链接图片和链接说明文字。
2、在阁下网站的任何地方添加链接到http://www.TextRush.com。前提是Google已收录了贵站。
3、将贵站链接的URL和您的"购买申请码"通过纯文本邮件发到 tech@textrush.com。注意: HTML格式邮件一概删除,无标题邮件一概删除。
4、确认后48小时内免费送出注册码,多次提交相同网站者无效。

活动截至日期: 2004/05/07 (包含05/07)

最后感谢您阅读这个帖子,烦您举手之劳顶一下,谢谢!
...全文
206 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
crossbow 2004-04-30
  • 打赏
  • 举报
回复
谢谢楼上的意见。谢谢!我会让你满意的
oyd 2004-04-29
  • 打赏
  • 举报
回复
to crossbow(【带三尺剑立不世之功】)
我承认你的直观方便和支持多种语言,但是这些并不是程序员要的。你的产品要让程序员用的话,至少要满足这些要求:
1.定制项要多要细,但是不要盲目的细,你在考虑功能的时候,就算不作市场调查,也应该多参照一些同类产品以及一些公司的编码规范。
例如你的程序中的定制项,C++那一栏关于添加空格的,那么多选项,只是骗外行的。
试问哪一个程序员会在写代码的时候考虑 '<'两端加空格, '>'两端不加空格的?
程序员的编码风格考虑的是:
强制转换要不要空格
函数调用要不要空格
函数声明要不要空格
参数列表要不要空格
二元操作符加不加
一元操作符加不加
还有一些特殊的操作符如*,&,.,->,[],(),<>需要单独考虑
括号的空格还要分内外,嵌套的情况
空格这个算简单的了,缩进和换行的情况你要能解决好了,你们的产品就算成熟了。
如下例
for (list < string >::iterator iter = s.begin();iter != s.end() && other_func(s.max_size(), iter) != 0; iter++){}
以80行为边界,被你的程序格式化后成为
for (list<string>::iterator iter = s.begin(); iter != s.end() && other_func
(s.max_size(), iter) != 0; iter++)
{
}
这简直就是活生生的截断,根本就没有一点智能处理

2.界面不要以傻瓜式的图形界面为主,这不是程序员工作时的使用方式,程序员有自己习惯的开发环境,编辑器,和文件比较工具,他们不会为了代码美化功能而放弃自己的原有习惯,应该多考虑嵌入到其他工具中和支持命令行方式(你可以支持批量操作,但是如果你支持命令行的话,程序员可以用脚本按照任意的他喜欢的方式进行批量操作)

3.在你真的做了语法解析的时候,再来宣称"全新、强劲、解析引擎"这些词汇
单单词法解析是不够的。
例如你现在的版本对C++模板的支持几乎为0,分不清大于小于、移位、和模板的尖括号。
crossbow 2004-04-29
  • 打赏
  • 举报
回复
to qigang_liu(云山云海) :

bug解决方法:

打开“设置”对话框,随便选一个选项,目的是让“确定”按钮可点,点击之保持设置。之后bug消失。

>你注没注意到,GC可以根据代码的复杂程度决定是否为单行语句加上{}

注意到了,我马上可以添加,如果你们嫌选项少,我可以加到100个以上。
oyd 2004-04-29
  • 打赏
  • 举报
回复
我代替作者答一句
程序员用代码美化工具使自己形成一种严谨的编码风格。
我一般自己写的程序不用调整,因为那就是我的风格,如果从MSDN或者其他地方copy的代码,或者是借用的代码,就直接用工具调整成自己的风格,这样自己的代码风格可以保证前后一致。
如果不作调整,很难在短时间内使自己的代码风格统一,因为本来就乱糟糟的,你就更不会注意去维护了。
就好象干净的大街上人人都知道爱护卫生,要是换了一乱糟糟的闹市场,谁还管那么多呀?
zhouqingyuan 2004-04-28
  • 打赏
  • 举报
回复
没有网站是不是就不送注册码了。
crossbow 2004-04-28
  • 打赏
  • 举报
回复
/* 格式化前 */

#include <stdio.h>
#include <stdlib.h>

int main(int a,char**A){FILE*B;typedef unsigned long C;C b[
8];if(!(a==7&&(B=fopen(1[A],"rb"))))return 1;for(7[b]=0;7[b
]<5;7[b]++)b[7[b]]=strtoul(A[2+7[b]],0,16-!7[b]*6);5[b]=3[b
];while((6[b]=getc(B))!=(C)-1){if(2[b])for(7[b]=0;7[b]<4;7[
b]++)if(((6[b]>>7[b])^(6[b]>>(7-7[b])))&1)6[b]^=(1<<7[b])^(
1<<(7-7[b]));5[b]^=6[b]<<(0[b]-8);for(7[b]=0;7[b]<8;7[b]++)
if((5[b]>>(0[b]-1))&1)5[b]=(5[b]<<1)^1[b];else 5[b]<<=1;}5[
b]&=((((C)1<<(0[b]-1))-1)<<1)|1;if(2[b])for(7[b]=0;7[b]<(0[
b]>>1);7[b]++)if(((5[b]>>7[b])^(5[b]>>(0[b]-1-7[b])))&1)5[b
]^=((C)1<<7[b])^((C)1<<(0[b]-1-7[b]));5[b]^=4[b];fclose(B);
printf("%0*lX\n",(int)(0[b]+3)>>2,5[b]);return 0;}

/* 格式化后 */

#include <stdio.h>
#include <stdlib.h>

int main(int a, char **A)
{
FILE *B;
typedef unsigned long C;
C b[8];
if (!(a == 7 && (B = fopen(1[A], "rb"))))
return 1;
for (7[b] = 0; 7[b] < 5; 7[b]++)
b[7[b]] = strtoul(A[2+7[b]], 0, 16-!7[b] *6);
5[b] = 3[b];
while ((6[b] = getc(B)) != (C) - 1)
{
if (2[b])
for (7[b] = 0; 7[b] < 4; 7[b]++)
if (((6[b] >> 7[b]) ^ (6[b] >> (7-7[b]))) &1)
6[b] ^= (1 << 7[b]) ^ (1 << (7-7[b]));
5[b] ^= 6[b] << (0[b] - 8);
for (7[b] = 0; 7[b] < 8; 7[b]++)
if ((5[b] >> (0[b] - 1)) &1)
5[b] = (5[b] << 1) ^ 1[b];
else
5[b] <<= 1;
}
5[b] &= ((((C)1 << (0[b] - 1)) - 1) << 1) | 1;
if (2[b])
for (7[b] = 0; 7[b] < (0[b] >> 1); 7[b]++)
if (((5[b] >> 7[b]) ^ (5[b] >> (0[b] - 1-7[b]))) &1)
5[b] ^= ((C)1 << 7[b]) ^ ((C)1 << (0[b] - 1-7[b]));
5[b] ^= 4[b];
fclose(B);
printf("%0*lX\n", (int)(0[b] + 3) >> 2, 5[b]);
return 0;
}
更多例子请查看SourceFormatX安装目录下的Example\子目录
aico 2004-04-28
  • 打赏
  • 举报
回复
请问作者,我们程序员拿它能干什么?
fengfeng1982 2004-04-28
  • 打赏
  • 举报
回复
我觉得这样会养成坏习惯。让电脑处理,会让自己忘掉有用的东西
qigang_liu 2004-04-28
  • 打赏
  • 举报
回复
#include <math.h>
#include <sys/time.h>
#include <X11/Xlib.h>
#include <X11/keysym.h>
double L ,o ,P
,_=dt,T,Z,D=1,d,
s[999],E,h= 8,I,
J,K,w[999],M,m,O
,n[999],j=33e-3,i=
1E3,r,t, u,v ,W,S=
74.5,l=221,X=7.26,
a,B,A=32.2,c, F,H;
int N,q, C, y,p,U;
Window z; char f[52]
; GC k; main(){ Display*e=
XOpenDisplay( 0); z=RootWindow(e,0); for (XSetForeground(e,k=XCreateGC (e,z,0,0),BlackPixel(e,0))
; scanf("%lf%lf%lf",y +n,w+y, y+s)+1; y ++); XSelectInput(e,z= XCreateSimpleWindow(e,z,0,0,400,400,
0,0,WhitePixel(e,0) ),KeyPressMask); for(XMapWindow(e,z); ; T=sin(O)){ struct timeval G={ 0,dt*1e6}
; K= cos(j); N=1e4; M+= H*_; Z=D*K; F+=_*P; r=E*K; W=cos( O); m=K*W; H=K*T; O+=D*_*F/ K+d/K*E*_; B=
sin(j); a=B*T*D-E*W; XClearWindow(e,z); t=T*E+ D*B*W; j+=d*_*D-_*F*E; P=W*E*B-T*D; for (o+=(I=D*W+E
*T*B,E*d/K *B+v+B/K*F*D)*_; p<y; ){ T=p[s]+i; E=c-p[w]; D=n[p]-L; K=D*m-B*T-H*E; if(p [n]+w[ p]+p[s
]== 0|K <fabs(W=T*r-I*E +D*P) |fabs(D=t *D+Z *T-a *E)> K)N=1e4; else{ q=W/K *4E2+2e2; C= 2E2+4e2/ K
*D; N-1E4&& XDrawLine(e ,z,k,N ,U,q,C); N=q; U=C; } ++p; } L+=_* (X*t +P*M+m*l); T=X*X+ l*l+M *M;
XDrawString(e,z,k ,20,380,f,17); D=v/l*15; i+=(B *l-M*r -X*Z)*_; for(; XPending(e); u *=CS!=N){
XEvent z; XNextEvent(e ,&z);
++*((N=XLookupKeysym
(&z.xkey,0))-IT?
N-LT? UP-N?& E:&
J:& u: &h); --*(
DN -N? N-DT ?N==
RT?&u: & W:&h:&J
); } m=15*F/l;
c+=(I=M/ l,l*H
+I*M+a*X)*_; H
=A*r+v*X-F*l+(
E=.1+X*4.9/l,t
=T*m/32-I*T/24
)/S; K=F*M+(
h* 1e4/l-(T+
E*5*T*E)/3e2
)/S-X*d-B*A;
a=2.63 /l*d;
X+=( d*l-T/S
*(.19*E +a
*.64+J/1e3
)-M* v +A*
Z)*_; l +=
K *_; W=d;
sprintf(f,
"%5d %3d"
"%7d",p =l
/1.7,(C=9E3+
O*57.3)%0550,(int)i); d+=T*(.45-14/l*
X-a*130-J* .14)*_/125e2+F*_*v; P=(T*(47
*I-m* 52+E*94 *D-t*.38+u*.21*E) /1e2+W*
179*v)/2312; select(p=0,0,0,0,&G); v-=(
W*F-T*(.63*m-I*.086+m*E*19-D*25-.11*u
)/107e2)*_; D=cos(o); E=sin(o); } }
oyd 2004-04-28
  • 打赏
  • 举报
回复
该产品最大的失误就在于
1 没有专心做好该做的事,就开始添加花俏的不实用的功能。
2 目标用户不明确,导致产品功能没有针对性。
oyd 2004-04-28
  • 打赏
  • 举报
回复
你注没注意到,上面的代码会自动在源代码中分块。
这不是我手工调整的,你去下载GC试一试就知道了
下载地址是
http://perso.club-internet.fr/cbeaudet

不过配置文件选项比较多就是了,但是对于一个想用这个工具的人,花半小时时间做好配置文件,完全可以一劳永逸。如果想要针对傻瓜用户,做一个图形界面封装一下也就1天功夫。
oyd 2004-04-28
  • 打赏
  • 举报
回复
下面是我用GC格式好了的代码。
你注没注意到,GC可以根据代码的复杂程度决定是否为单行语句加上{}
当然你也可以选择统一加或者不加或者不作改变
#include <stdio.h>
#include <stdlib.h>

int main(int a, char ** A)
{
FILE* B;
typedef unsigned long C;
C b[8];
if (!(a == 7 && (B = fopen(1[A], "rb")))) return 1;
for (7[b] = 0; 7[b] < 5; 7[b]++)
b[7[b]] = strtoul(A[2 + 7[b]], 0, 16 -!7[b] * 6);
5[b] = 3[b];
while ((6[b] = getc(B)) != (C) - 1)
{
if (2[b])
{
for (7[b] = 0; 7[b] < 4; 7[b]++)
{
if (((6[b] >> 7[b]) ^ (6[b] >> (7 - 7[b]))) & 1)
6[b] ^= (1 << 7[b]) ^ (1 << (7 - 7[b]));
}
}

5[b] ^= 6[b] << (0[b] - 8);
for (7[b] = 0; 7[b] < 8; 7[b]++)
{
if ((5[b] >> (0[b] - 1)) & 1)
5[b] = (5[b] << 1) ^ 1[b];
else
5[b] <<= 1;
}
}

5[b] &= ((((C) 1 << (0[b] - 1)) - 1) << 1) | 1;
if (2[b])
{
for (7[b] = 0; 7[b] < (0[b] >> 1); 7[b]++)
{
if (((5[b] >> 7[b]) ^ (5[b] >> (0[b] - 1 - 7[b]))) & 1)
{
5[b] ^= ((C) 1 << 7[b]) ^ ((C) 1 << (0[b] - 1 - 7[b]));
}
}
}

5[b] ^= 4[b];
fclose(B);
printf("%0*lX\n", (int) (0[b] + 3) >> 2, 5[b]);
return 0;
}
Wolf0403 2004-04-28
  • 打赏
  • 举报
回复
无所谓,他们买是他们的问题。写清晰的代码是我们自己的责任。
我用 notepad 写的也可以比这个清楚明白,而且 Microsoft Visual C++ .net 的 Ctrl+K, Ctrl+F 的功能已经足够我用了。
crossbow 2004-04-28
  • 打赏
  • 举报
回复
如果我说Microsoft的人都买了,你肯定不信, 可惜这是事实...

Tucows 给了 5 头牛, 可能阁下的水平比 Microsoft 和 Tucows 还厉害吧? 真正的程序员同志?
crossbow 2004-04-28
  • 打赏
  • 举报
回复
不知道你看了这个没有:

http://cn.textrush.com/formatxexample.htm

如果这种效果也叫“垃圾”,我没话可说,

确实有bug,但那是bug,不是你说的垃圾。我也才接到报告。
crossbow 2004-04-28
  • 打赏
  • 举报
回复
上面演示的效果是一般吗?不知道你需要什么样的效果。

oyd 2004-04-28
  • 打赏
  • 举报
回复
这个程序我没使用,我看了一下界面和菜单就可以把它卸载了,程序员用它纯粹是浪费时间。
我不同意 julyclyde(ASP版社区之星) 所说的第二点,因为这种软件程序员一定不会用,就算是初学者,给他随便推荐一个命令行的格式化工具,他也不再会想使用这种垃圾工具了。排版工人也许会用。

他最大的缺点在于:集成了多种语言格式化的功能,却没有一种是做得好的。实际上没有一个程序员是在同时用这么多种语言来编程,就算有,他也可以很容易找到各种专有的格式化工具进行集成,所以程序员不会选这个工具,而排版工人可能会选择。

他不能与别的编译器IDE集成,还越俎代庖的加上代码编辑和语法加亮功能。程序员不可能使用,而排版工人可能想用它。
如果大家用C++语言,可以去试用一下GC(Great Code),虽然也不算完美,但是效果比这个好得多,而且与编译器集成,同时也支持批量处理。
前程序员 2004-04-28
  • 打赏
  • 举报
回复
程序是写出来的,不是拼出来的,格式化恐怕只适合来“粘贴”代码
julyclyde 2004-04-28
  • 打赏
  • 举报
回复
1 格式化的效果一般
2 这种软件只会混淆真正的程序员和垃圾程序员的区别

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧